一、新建工程
二、创建类并继承View
package com.example.l01myrect; import android.content.Context; import android.content.res.TypedArray; import android.util.AttributeSet; import android.view.View; /** * Created by 袁磊 on 2017/2/6. */ public class MyRect extends View { public MyRect(Context context) { super(context); } public MyRect(Context context, AttributeSet attrs) { super(context, attrs); TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.MyView); int color = ta.getColor(R.styleable.MyView_rect_color, 0xffff0000);//红色 setBackgroundColor(color); ta.recycle();//TypedArray调用结束后务必调用recycle()方法,否则这次的设定会对下次的使用造成影响 } }
MyRect
三、values文件夹中自定义属性attrs
<?xml version="1.0" encoding="utf-8"?> <resources> <!--根标签--> <declare-styleable name="MyView"> <!--定义若干个declare-styleable,name定义了变量的名称--> <attr name="rect_color" format="color" /> <!--自定义多个属性,name为名称,format为属性类型--> </declare-styleable> </resources>
attrs
四、activity_main中使用自定义控件类MyRect
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:yl="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <com.example.l01myrect.MyRect android:layout_width="100dp" android:layout_height="100dp" yl:rect_color="#ff0000ff" /> <!--蓝色--> </LinearLayout>
activity_main
运行效果
时间: 2024-10-11 14:26:32