自定义View

话说,不会写自定义View的程序员不是好司机!今天就来简单介绍一下自定义view,参考了别人的一个电池充电动画的自定义view,附上这位大神的源码,并致谢!

进入正题,自定义view大概有一下几个步骤:

  1. 新建view,继承view或者surfaceview, 声明自定义view属性
  2. 在自定义view的构造方法中,获取属性值
  3. 复写onMeasure,onDraw,绘制view
  4. 在布局文件中,引用该view即可

第一步:声明
资源文件:res/value/attrs.xml

 <declare-styleable name="BatteryLoadingView">
        <attr name="outBWidth" format="dimension"/>
        <attr name="outBHeight" format="dimension"/>
        <attr name="bRadius" format="float"/>
        <attr name="backgroundColor" format="color"/>
        <attr name="bColor" format="color"/>
    </declare-styleable>

declare-styleable的name属性一般与自定义View的类名一致,试验了一下,也可以不一致,为规范起见,最好一致!
声明的这些属性,在布局引用该View的时候就可以指定数值了。

<BatteryView
        android:layout_width="100dp"
        android:layout_height="50dp"
        android:padding="10dp"
        app:bColor="@android:color/holo_blue_dark"
        app:bRadius="10"
        app:backgroundColor="#eeeeee" />

第二步:获取属性值
在自定义View的构造方法中获取到指定属性的值


            bwidth = attrArray.getDimensionPixelSize(R.styleable.BatteryLoadingView_outBWidth, bwidth);
            bheight = attrArray.getDimensionPixelSize(R.styleable.BatteryLoadingView_outBHeight, bheight);
            bColor = attrArray.getColor(R.styleable.BatteryLoadingView_bColor, Color.GREEN);
            backgroundColor = attrArray.getColor(R.styleable.BatteryLoadingView_backgroundColor, Color.WHITE);
            bRadius = attrArray.getFloat(R.styleable.BatteryLoadingView_bRadius, 9f);
            attrArray.recycle();

获取值得方法中有两个参数,
第一个 :属性名,注意格式R.styleable.声明的viewname_属性名;
第二个 :属性的缺省值;

第三步:绘制

绘制时主要用到的类:
Paint: 画笔
Cavans:画布
MeasureSpec:尺子
跟真实画画是不是可像,像就对了,人类的思维就这样
new一个画笔

        paintS = new Paint();
        paintF = new Paint();
        paintS.setColor(bColor);
        paintF.setColor(bColor);
        paintS.setStyle(Paint.Style.STROKE);
        paintS.setStrokeWidth(6);

——————–待续————————————

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值