位置: 编程技术 - 正文

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

  • 北京市增值税发票查验平台
  • 实际发的工资跟个人所得税不一样
  • 分包抵扣
  • 增值税进项抵扣怎么做账
  • 小规模纳税人减征额怎么计算
  • 纳税筹划成本支出怎么算
  • 土地投资入股是否需要发票作为企业所得税税前扣除凭证
  • 工程款预付账款的账务处理
  • 支付给客户的货款叫什么
  • 展厅出租或招商
  • 股东拿不到钱
  • 月末结转增值税附加税的账务处理
  • 同一控制下企业合并入账价值
  • 公司所得税汇算清缴退税流程
  • 公司基本户没开影响报税吗
  • 软件企业即征即退账务处理
  • 房地产开发企业预缴增值税
  • 购进产品样品怎么做分录
  • iphone7如何设置输入法
  • 暗格里的秘密电视剧彩蛋百度网盘
  • 研发费用加计扣除
  • 车辆 以旧换新
  • 购买机器配件怎么做会计分录
  • php详细安装步骤
  • 深入php:面向对象、模式与实践
  • linux网卡lo
  • 企业转手员工工龄怎么算
  • 存货正常报废账务处理
  • 收到小微企业贷款减息会计处理办法
  • 没有进项开销项需要交几个点
  • 参展费会计分录
  • php图片上添加文字的方法
  • semeion手写数据集
  • timedatectl命令用法
  • nmcli命令全称
  • 红冲上年度收入怎么做凭证
  • 计提支付公积金
  • 说好的运费少给怎么办
  • 电影院是否征收文化建设事业费
  • 小规模纳税人开普票要交税吗
  • 所得税多交了不退会不会来查账
  • 软件开发公司如何保护源码
  • 周转材料属于什么
  • 红字发票开错可以重开吗
  • 装修消防改造费用会计分录
  • sqlserver阻止保存要求重新
  • sql server数据迁移部分数据
  • 差旅费报销人员范围
  • 摊销期在一年以内房租的账务处理
  • 稳岗补贴支付范围
  • 公共电话亭设计案例
  • 财务报告分析主要内容
  • 多缴纳了个税税率怎么办
  • 子公司向母公司借钱
  • 预付差旅费属于什么类型
  • mysql如何实现多表查询
  • win8调分辨率
  • win7系统打不开网络和共享中心
  • vim 多窗口启动以及相互切换
  • linux怎么那么难用
  • win10通过任务管理器打开设置
  • windows8.1正版
  • win10开机提示xwz
  • win7系统如何关闭开机自动启动软件
  • 浅析学校德育的个体智能发展功能
  • 原生js实现ajax步骤
  • python里!
  • cocos2dx-3.2+lua 常用代码
  • javascript的核心组成部分
  • jquery点击事件写法
  • 税务局的章
  • 安徽省国家税务局通用定额发票
  • 天津国税电话
  • 怎么看有没有欠税
  • 48岁了还有必要上环吗
  • 地税怎么收费标准
  • 国税和地税是什么
  • 收缴和缴纳的区别
  • 宁波购房契税退税条件
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设