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(绘制自己的内容)
*/
第五步:测量