位置: 编程技术 - 正文

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

  • 什么是消费税的计税销售额?价外费用是什么?
  • 车辆购置税是什么税种
  • 外籍人员可以在中国工作吗
  • 新个税法申报的税种
  • 金税盘如何查看开票机号
  • 附加税退回分录
  • 个体户城建税优惠政策
  • 建筑企业小型企业有哪些
  • 进口贴息对企业的好处
  • 红字发票做进项转出还是红字负数
  • 采购合同中含税金额
  • 三证合一后企业还有什么证照
  • 质量罚款入什么科目
  • 民间非营利组织有哪些
  • 一般纳税人收到专票怎么做分录
  • 一般纳税人出售不动产增值税税率是多少
  • 给别人代付
  • 股东利润分配预缴税款
  • 跨区域提供建筑服务个人所得税
  • 本企业领用外购原材料进项税要转出吗
  • 差额征税预缴税额怎么算
  • windows 临时文件夹
  • 商品房买卖合同备案查询
  • win7玩什么游戏流畅
  • 商会收到的会费要交企业所得税
  • 对公账户发放工资要固定几号打吗
  • php中url什么意思
  • php string
  • php可以做什么脚本
  • 资产与负债的计税基础
  • 电脑硬盘数据恢复一般需要收费多少钱
  • vue element ui
  • 房地产企业预缴增值税如何申报
  • 递延所得税资产和所得税费用的关系
  • phpcms v9用户手册
  • 扶贫小额信贷分析报告
  • 企业规定
  • 公司租房电费怎么算
  • 社保主要有以下哪些方面
  • 帝国cms视频教程
  • mysql数据库如何回滚
  • 固定资产的会计政策有哪些
  • 应交增值税的计算要加已交税金还是扣除
  • 红字发票是可以抵扣吗
  • 不能税前扣除的业务招待费怎么处理
  • 年金现值和终值的关系
  • 民办非企业保险优惠政策
  • 数据库SQL中DML
  • 投资管理公司成立的请示范文
  • 补发以前年度工资怎么做账
  • 盈余公积年初和年末没有变化
  • 个体工商户定期定额怎么报税
  • 关于发票冲账应该怎么写
  • 企业专家咨询费标准
  • 保险赔偿收入如何减税额
  • 老办法退休金如何计算
  • 一些 T-SQL 技巧
  • 拖放文件到此处来添加文件是什么意思
  • win8系统怎么直接进入桌面
  • 测试模式win8专业版 9200
  • linux 如何
  • win7共享设置(详细图文步骤)
  • python语言基础与应用答案
  • perl运行环境
  • perl中\s+
  • opengl transform
  • 前端面试题csdn
  • vbs运行cmd命令
  • js复制div
  • js瀑布流布局
  • jquery动画效果代码
  • javascript填表
  • 深入理解android卷1 pdf
  • python设计gui
  • jquery获取单选按钮的值
  • [置顶]电影名字《收件人不详》
  • 支付宝中油好客e站怎么开发票
  • 纳税是什么税
  • 发票抽奖还有吗
  • 如何查询有没有交医保费用
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设