自定义View--SwichButton

本文详细介绍了如何创建一个自定义开关SwichButton,涵盖了从通过Java代码设置属性到通过XML控制属性的全过程。讲解了自定义View的构造、属性设置、测量、绘制、触摸事件响应以及状态监听回调的实现。并提供了attrs.xml中定义属性、布局文件中应用的示例。
摘要由CSDN通过智能技术生成

SwichButton是一个继承自View自定义开关,刚好也通过这个自定义View来总结回顾下

通过java代码来设置属性

**
第一步:
新建一个命名为SwichButton的类,继承自View,重写三个构造方法

   //在代码中设置属性使用的构造方法
    public SwichButton(Context context) {
        super(context);

    }

    //在xml中定义属性使用的的构造方法
    public SwichButton(Context context, AttributeSet attrs) {
        super(context, attrs);


    }
//在xml中定义属性,并且带有样式的构造方法
    public SwichButton(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

第二步:在布局文件中使用

<com.cd.swichdemo.SwichButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/swichbutton"/>

注意:自定义View要使用完整路径名称,系统控件则不需要

第三步:在Activity中找到这个控件的id

第四步:分析自定义的控件的需求,包括要设置什么属性,有几种状态,等等

比如,分析这个自定义开关需要设置开关背景,需要设置滑块背景,以及开和关两种状态,那么就需要分别定义设置开关背景的方法,设计滑块背景的方法和设置状态的方法

       mSwichButton.setSwichBackgroundResouce(R.drawable.switch_background);
       mSwichButton.setSwichButtonResource(R.drawable.slide_button);
       mSwichButton.setSwichState(false);

所以要在自定义的SwichButton中创建这三个方法

public void setSwichState(boolean swichState) {
mSwichState = swichState;
}

public void setSwichBackgroundResouce(int swichBackgroundResouce) {
    mBackgroundResouce = BitmapFactory.decodeResource(getResources(), swichBackgroundResouce);
}

public void setSwichButtonResource(int slide_button) {
    mSlidbutton = BitmapFactory.decodeResource(getResources(), slide_button);
}

可以手动创建也可以使用快捷键,setSwichState方法中mSwichState默认为false,setSwichBackgroundResouce(int swichBackgroundResouce)setSwichButtonResource(int slide_button)方法中拿到设置的图片资源,转换成bitmap对象

补充:

  • Android View绘制流程
  • 测量 摆放 大小
  • View :onMeasure(测量自己的宽高) –》onDraw(绘制自己的内容)
  • viewGrounp: onMeasure(测量自己的宽高,所有子View的宽高) –》onLayout(摆放内部控件,只有容器才要重写这个方法)
  • –》onDraw(绘制自己的内容)
    */

第五步:测量

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值