自定义组件及属性

2014-11-24 08:20:00 · 作者: · 浏览: 0

其实很早以前在属性(Attribute)资源的使用:自定义组件一文中就介绍过自定义组件及属性的使用,这里再次回顾以下,直接上代码:

MainActivity:

package com.home.testtypedarray;

import android.os.Bundle;
import android.app.Activity;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
	}

}


main布局:

  

  

    
   


  

MyView类:

package com.home.testtypedarray;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.view.View;

public class MyView extends View {
	private Paint paint;

	public MyView(Context context, AttributeSet attrs) {
		super(context, attrs);
		paint = new Paint();
		// 得到MyView的TypedArray对象(属性的容器)
		TypedArray a = context
				.obtainStyledAttributes(attrs, R.styleable.MyView);
		// 得到MyView的textColor属性值
		int textColor = a.getColor(R.styleable.MyView_textColor, 0XFFFFFFFF);
		// 得到MyView的textSize属性值
		float textSize = a.getDimension(R.styleable.MyView_textSize, 36);
		paint.setColor(textColor);// 为画笔设置颜色
		paint.setTextSize(textSize);// 为画笔设置字体大小
		// Give back a previously retrieved StyledAttributes, for later re-use
		a.recycle();
	}

	@Override
	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);
		paint.setStyle(Style.FILL);// 设置为填充风格
		canvas.drawText("测试自定义属性", 10, 30, paint);// 绘制文字
		canvas.drawRect(new Rect(10, 50, 200, 200), paint);// 绘制矩形
	}
}

attrs.xml: