位置: 编程技术 - 正文

[置顶] 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的翻译)

  • 总分公司企业所得税合并申报
  • 天然气税率13%变11%
  • 季度申报,其他收益科目是怎样的科目
  • 个体户缴纳经营所得个税怎么算的
  • 关税消费税增值税计算公式
  • .申报表税源编码怎么填
  • 个人开劳务发票怎么开
  • 不是单位职工个税怎么算
  • 电子承兑汇票到期前10天可以做提示付款
  • 科研项目间接费用会计分录
  • 没有营业收入要报税吗
  • 仲裁调解书赔偿多少钱
  • 库存商品检验合格标准
  • 出口企业是外贸企业吗
  • 个人所得税扣除的
  • 外资企业所得税优惠政策
  • 网上认证服务费可以全额抵扣吗
  • 分公司发生修理费能否在总公司列支?
  • 管理费用职工福利费
  • 拆迁公司属于什么性质
  • 当月已认证的可抵扣增值税
  • 家常煲汤500例的做法窍门
  • 戴尔r710服务器系统安装详解
  • 报考中级会计师证的条件
  • Windows11更新后无法联网
  • 发放应付职工薪酬的账务处理
  • 工会举办比赛,参赛人员差旅费可以在工会报销吗
  • PHP:pg_lo_unlink()的用法_PostgreSQL函数
  • 增值税发票销货清单怎么打印
  • 如何选择一款适合自己家庭的凉席
  • 餐费发票怎么做账务处理
  • 归属性质
  • 新制度下财政拨款是什么
  • 会计账务处理年限规定
  • framework在哪看
  • 安个小窝
  • 建筑公司内账复杂吗
  • 要点初见:Stable Diffusion NovelAI模型优质文字Tag汇总与实践【魔咒汇总】
  • 增值税和所得税重复交了吗
  • 购买增值税税控系统如何抵扣增值税
  • Anaconda(python,pycharm)半详细安装教程
  • python调用cuda执行加法
  • java代理有几种方式
  • 税务端系统返回错误信息f50006
  • 建筑业如何开票
  • 消费税增值税和个人所得税是什么意思
  • springsecurity有什么用
  • mysqldump导入数据库
  • MySQL中distinct与group by之间的性能进行比较
  • 金税盘注册码怎么查
  • 政府扶助资金
  • 增值税负数发票怎么做账
  • 网店会计怎么做账
  • 成品油预付卡销售*成品油卡 怎么入账
  • 发生的费用
  • 免税店为什么没有发票
  • 款项已支付是什么科目?
  • 月底现金余额
  • 简要分析企业购买行为的影响因素
  • 公司无形资产可以作为公司注册资金吗
  • mysql5.7.31
  • Win7系统关闭怎么办
  • centos必学的60个命令
  • 如何用U盘安装新系统
  • mac浏览器显示不全
  • linux安装有哪几种方式
  • linux 杀掉指定用户的进程
  • Win10 Mobile RS2预览版14904升级截图曝光
  • ngctw32.exe - ngctw32是什么进程 有什么用
  • 升级win10系统后安装谷歌打不开
  • ES6 javascript中class静态方法、属性与实例属性用法示例
  • unityrpg
  • 深入探究替换词
  • flask框架菜鸟教程
  • 整型python
  • unity快速接入第三方sdk
  • 农村集体土地承包法
  • 发票系统怎么设置打印
  • 福建网上税务局app
  • 不缴纳耕地占用税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设