位置: 编程技术 - 正文

[置顶] Android GradientDrawable高级应用 以后完全用不上美工了([置顶]bilinovel)

编辑:rootadmin

推荐整理分享[置顶] Android GradientDrawable高级应用 以后完全用不上美工了([置顶]bilinovel),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:[置顶]JM259194,[置顶]公主大人接下来是拷问时间31,[置顶]电影名字《收件人不详》,[置顶]游戏名:chivalry2,[置顶]游戏名:chivalry2,[置顶]游戏名:chivalry2,[置顶]电影名字《收件人不详》,[置顶]bilinovel,内容如对您有帮助,希望把文章链接给更多的朋友!

先看截图 1图为自定义的Textview 2、3图为点击效果

具体实现如下:

1. 定义自定义控件属性

<declare-styleable name="ShapeTextview"> <attr name="touchSolidColor" format="color" /> <attr name="solidColor" format="color" /> <attr name="cornesRadius" format="dimension" /> <attr name="topLeftRadius" format="dimension" /> <attr name="topRightRadius" format="dimension" /> <attr name="bottomLeftRadius" format="dimension" /> <attr name="bottomRightRadius" format="dimension" /> <attr name="stroke_Width" format="dimension" /> <attr name="stroke_Color" format="color" /> <attr name="strokeDashWidth" format="dimension" /> <attr name="strokeDashGap" format="dimension" /> <attr name="gradientStartColor" format="color" /> <attr name="gradientEndColor" format="color" /> <attr name="gradientCenterColor" format="color" /> <attr name="gradientUseLevel" format="boolean" /> <attr name="gradientAngle" format="dimension" /> <attr name="gradientOrientation"> <enum name="BL_TR" value="0" /> <enum name="BOTTOM_TOP" value="1" /> <enum name="BR_TL" value="2" /> <enum name="LEFT_RIGHT" value="3" /> <enum name="RIGHT_LEFT" value="4" /> <enum name="TL_BR" value="5" /> <enum name="TOP_BOTTOM" value="6" /> <enum name="TR_BL" value="7" /> </attr> <attr name="shapeType"> <enum name="LINEAR_GRADIENT" value="0" /> <enum name="OVAL" value="1" /> <enum name="LINE" value="2" /> <enum name="RING" value="3" /> </attr> <attr name="gradientType"> <enum name="linear" value="0" /> <enum name="radial" value="1" /> <enum name="sweep" value="2" /> </attr> <attr name="gradientRadius" format="dimension" /> </declare-styleable>

2. 控件代码

package com.klower.component;

import android.content.Context;import android.content.res.TypedArray;import android.graphics.Color;import android.graphics.drawable.GradientDrawable;import android.util.AttributeSet;import android.view.MotionEvent;import android.widget.TextView;

import com.klower.R;

public class ShapeTextView extends TextView {

int solidColor, stroke_Color, gradientStartColor, gradientEndColor, gradientCenterColor, touchColor;

int cornesRadius, topLeftRadius, topRightRadius, bottomLeftRadius, bottomRightRadius, stroke_Width, strokeDashWidth, strokeDashGap, gradientAngle, gradientRadius, gradientType, gradientOrientation, shapeType; boolean gradientUseLevel;

GradientDrawable gradientDrawable;

[置顶]
        Android GradientDrawable高级应用 以后完全用不上美工了([置顶]bilinovel)

public ShapeTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); }

public ShapeTextView(Context context, AttributeSet attrs) { super(context, attrs); initData(context, attrs); }

public ShapeTextView(Context context) { super(context); }

private void initData(Context context, AttributeSet attrs) { TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ShapeTextview); solidColor = a.getColor(R.styleable.ShapeTextview_solidColor, Color.TRANSPARENT); stroke_Color = a.getColor(R.styleable.ShapeTextview_stroke_Color, Color.TRANSPARENT); gradientStartColor = a .getColor(R.styleable.ShapeTextview_gradientStartColor, Color.TRANSPARENT); gradientEndColor = a.getColor( R.styleable.ShapeTextview_gradientEndColor, Color.TRANSPARENT); gradientCenterColor = a.getColor( R.styleable.ShapeTextview_gradientCenterColor, Color.TRANSPARENT); touchColor = a.getColor(R.styleable.ShapeTextview_touchSolidColor, Color.TRANSPARENT);

cornesRadius = (int) a.getDimension( R.styleable.ShapeTextview_cornesRadius, 0); topLeftRadius = (int) a.getDimension( R.styleable.ShapeTextview_topLeftRadius, 0); topRightRadius = (int) a.getDimension( R.styleable.ShapeTextview_topRightRadius, 0); bottomLeftRadius = (int) a.getDimension( R.styleable.ShapeTextview_bottomLeftRadius, 0); bottomRightRadius = (int) a.getDimension( R.styleable.ShapeTextview_bottomRightRadius, 0); stroke_Width = (int) a.getDimension( R.styleable.ShapeTextview_stroke_Width, 0); strokeDashWidth = (int) a.getDimension( R.styleable.ShapeTextview_strokeDashWidth, 0); strokeDashGap = (int) a.getDimension( R.styleable.ShapeTextview_strokeDashGap, 0); gradientAngle = (int) a.getDimension( R.styleable.ShapeTextview_gradientAngle, 0); gradientRadius = (int) a.getDimension( R.styleable.ShapeTextview_gradientRadius, 0); gradientUseLevel = a.getBoolean( R.styleable.ShapeTextview_gradientUseLevel, false); gradientType = a.getInt(R.styleable.ShapeTextview_gradientType, -1); gradientOrientation = a.getInt( R.styleable.ShapeTextview_gradientOrientation, -1); shapeType = a.getInt( R.styleable.ShapeTextview_shapeType, -1); gradientDrawable = new GradientDrawable(); gradientDrawable.setStroke(stroke_Width, stroke_Color, strokeDashWidth, strokeDashGap); // 如果设定的有Orientation 就默认为是渐变色的Button,否则就是纯色的Button if (gradientOrientation != -1) { gradientDrawable .setOrientation(getOrientation(gradientOrientation)); gradientDrawable.setColors(new int[] { gradientStartColor, gradientCenterColor, gradientEndColor }); } else { gradientDrawable.setColor(solidColor); } if(shapeType != -1){ gradientDrawable.setShape(shapeType); } //是否为圆形 if(shapeType != GradientDrawable.OVAL){ // 如果设定的有Corner Radius就认为是4个角一样的Button, 否则就是4个不一样的角 Button if (cornesRadius != 0) { gradientDrawable.setCornerRadius(cornesRadius); } else { //1、2两个参数表示左上角,3、4表示右上角,5、6表示右下角,7、8表示左下角 gradientDrawable.setCornerRadii(new float[] { topLeftRadius, topLeftRadius, topRightRadius, topRightRadius, bottomRightRadius, bottomRightRadius, bottomLeftRadius, bottomLeftRadius }); } } if (gradientUseLevel) gradientDrawable.setUseLevel(gradientUseLevel); if (gradientType != -1) gradientDrawable.setGradientType(gradientType); gradientDrawable.setGradientRadius(gradientRadius); setBackground(gradientDrawable);

}

@Override public boolean onTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { if (touchColor != Color.TRANSPARENT) { gradientDrawable.setColor(touchColor); setBackground(gradientDrawable); postInvalidate(); } } else if (event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL) { if (touchColor != Color.TRANSPARENT) { gradientDrawable.setColor(solidColor); setBackground(gradientDrawable); } } return super.onTouchEvent(event); }

private GradientDrawable.Orientation getOrientation(int gradientOrientation) { GradientDrawable.Orientation orientation = null; switch (gradientOrientation) { case 0: orientation = GradientDrawable.Orientation.BL_TR; break; case 1: orientation = GradientDrawable.Orientation.BOTTOM_TOP; break; case 2: orientation = GradientDrawable.Orientation.BR_TL; break; case 3: orientation = GradientDrawable.Orientation.LEFT_RIGHT; break; case 4: orientation = GradientDrawable.Orientation.RIGHT_LEFT; break; case 5: orientation = GradientDrawable.Orientation.TL_BR; break; case 6: orientation = GradientDrawable.Orientation.TOP_BOTTOM; break; case 7: orientation = GradientDrawable.Orientation.TR_BL; break; } return orientation; }

}

3. xml 加上这句xmlns:flatui="

<!-- flatui:strokeDashGap="5dp" flatui:strokeDashWidth="5dp" flatui:gradientOrientation = "BOTTOM_TOP" -->

<com.klower.component.ShapeTextView android:id="@&#;id/shapetextview" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="dp" android:gravity="center" android:padding="5dp" android:text="ShapeTextview" android:textSize="sp" flatui:bottomLeftRadius="dp" flatui:bottomRightRadius="0dp" flatui:gradientCenterColor="#" flatui:gradientEndColor="#DE0E" flatui:gradientStartColor="#DB1E" flatui:solidColor="#DC" flatui:stroke_Color="#DB1E" flatui:stroke_Width="2dp" flatui:topLeftRadius="0dp" flatui:topRightRadius="dp" flatui:touchSolidColor="#F5B2B9" /> <com.klower.component.ShapeTextView flatui:strokeDashGap="5dp" flatui:strokeDashWidth="5dp" android:id="@&#;id/shapetextview1" android:layout_width="dp" android:layout_height="dp" android:layout_margin="dp" android:gravity="center" android:padding="5dp" android:text="ORAL" android:textSize="sp" flatui:gradientCenterColor="#" flatui:gradientEndColor="#DE0E" flatui:gradientStartColor="#DB1E" flatui:solidColor="#DC" flatui:stroke_Color="#DB1E" flatui:stroke_Width="2dp" flatui:shapeType = "OVAL" flatui:touchSolidColor="#F5B2B9" />

具体效果可以自己可以看源码 然后调试属性 只要你想要做出的效果基本都可以实现

有问题可以留言

Services 翻译第二集 原文地址:

Android 获取手机屏幕的宽度和高度 WindowManagerwm=(WindowManager)getContext().getSystemService(Context.WINDOW_SERVICE);intwidth=wm.getDefaultDisplay().getWidth();intheight=wm.getDefaultDisplay().getHeight();2、WindowManagerwm=this.ge

ScrollView用法(一) 理论部分1、ScrollView和HorizontalScrollView是为控件或者布局添加滚动条2、上述两个控件只能有一个孩子,但是它并不是传统意义上的容器3、上述两个控件

标签: [置顶]bilinovel

本文链接地址:https://www.jiuchutong.com/biancheng/386101.html 转载请保留说明!

上一篇:androidday3

下一篇:Services 翻译第二集(services的翻译)

  • 增值税发票开票软件金税盘
  • 未实际处置资产损失税前扣除金额的分录?
  • 转出未交增值税是借方还是贷方
  • 组成计税价格公式消费税
  • 经营性收入包括投资收益吗
  • 10个税点怎么计算公式
  • 个税中房屋租赁日期写长跟写短
  • 留抵进项税额
  • 开出支票如何入账
  • 经营利润所得税费用的计算公式
  • 收到销售折让的红字怎么做账
  • 个人独资企业个人所得税核定征收
  • 银行余额调节表模板
  • 工程发票备注怎么写
  • 增值税发票系统怎么升级
  • 申报预缴企业所得税
  • 关联方债权投资与权益投资比例
  • 预收账款期末余额在贷方
  • 增值税税率为6%的是什么服务
  • 工程费用包括哪几类
  • 运输发票车种车号要求 自有车
  • 视同销售的计税依据
  • 怎么查询企业收款账号
  • 即征即退的增值税需要缴纳企业所得税吗
  • linux如何安装
  • mac补丁安装步骤
  • 盆栽月季花怎么修剪图解
  • 最高像素是什么
  • wordpress的文章在数据库里吗?
  • 勾选确认发票后能撤销吗
  • Pytorch深度学习实战3-5:详解计算图与自动微分机(附实例)
  • php gdb
  • 长期股权投资会计准则
  • c++评测
  • 公司资金转到法人帐户
  • 固定资产一次性折旧账务处理
  • 施工营业额是什么意思
  • php_fileinfo不支持
  • 利润表中本期金额是什么意思
  • 数据mysql
  • 接受捐赠要确认收入吗
  • 商业汇票贴现条件有哪些
  • 捐赠支出税前扣除比例
  • 预缴增值税销售额是含税还是不含税的开票金额
  • 生产经营所得如何申请退税
  • 委托收款背书和质押背书都属于转让背书
  • 避险功能是什么意思
  • 分配利润和分配红利
  • 限售股锁定期延长
  • 垃圾处理费计提依据
  • mysql安装出问题
  • sqlserver 中文字符集
  • Mysql中FIND_IN_SET()和IN区别简析
  • windows server 2008 r2离线激活
  • 对Windows Server 2008系统自带的磁盘分区进行无损分区的教程图文介绍
  • vmware img镜像
  • ubuntu邮箱客户端
  • 苹果mac电脑删除打印机后还显示网络错误
  • linux使用方式有哪些方面
  • centos权限不够怎么办
  • win10注册表详解
  • win7系统每次开机都要选择用户
  • linux讲解
  • linux文件权限的设置与修改
  • wp8.1升级10
  • bat批处理命令教程
  • unity屏幕截图
  • node.js原生支持的编码格式
  • node.js做服务器
  • android触屏事件的处理
  • jquery返回顶部
  • jQuery iScroll.js 移动端滚动条美化插件第1/5页
  • js继承的概念
  • jquer选择器
  • jquery里的each()是什么函数?你是如何使用他的?
  • 开的发票怎么抽奖
  • 社保银行代扣收费吗
  • 江苏税务法人实名采集怎么操作流程
  • 国税申报作废怎么操作
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设