android 自定义控件

有两年多没有写android程序,发现很多东西都忘了,打算通过发布博客,快速把自己的知识点串回来,也为了我自己快速查阅。

我写文章有一个比较吊的风格,就是先大再小。

ok,废话小说,开始

 

Android可以灵活采用xml的方式来做布局控制,就好像写html+css一样,可以用node这样的结构把xml建立起来图层。

而android 的一切显示的图,都是来自于View这个类(android.view.View),这个类是核心类,

我们开始分解步骤:

1.写一个类继承View,

2.在一个布局中增加我们自己的类

3.新建属性文件,attrs,并且增加我们的自己的属性组。

4.属性组中增加我们自己要初始化定义的参数,如颜色,大小,文字等

5.在我们的view子类构造函数中读取xmL对应的参数或者手动初始化。

 

核心代码:

	public MyView(Context context, AttributeSet attrs) {
		super(context, attrs);

		TypedArray ta = context.obtainStyledAttributes(attrs,
				R.styleable.my_view);
		int color = ta.getColor(R.styleable.my_view_my_view_color, 0xffff0000);
		setBackgroundColor(color);
		ta.recycle();

	}

 

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <declare-styleable name="my_view">
        <attr name="my_view_color" format="color" />
    </declare-styleable>

</resources>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:itaem="http://schemas.android.com/apk/res/com.example.test_myview"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <com.example.test_myview.MyView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        itaem:my_view_color="#0000ff" />

</RelativeLayout>

你可能感兴趣的:(android 自定义控件)