关闭

自定义组件及属性

标签: androidTypedArrayAttribute自定义组件自定义属性
1068人阅读 评论(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布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:test="http://schemas.android.com/apk/res/com.home.testtypedarray"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <com.home.testtypedarray.MyView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        test:textColor="#0ff"
        test:textSize="20sp" />

</LinearLayout>

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:

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

    <declare-styleable name="MyView">
        <attr name="textColor" format="color" />
        <attr name="textSize" format="dimension" />
    </declare-styleable>

</resources>




 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1532866次
    • 积分:21337
    • 等级:
    • 排名:第363名
    • 原创:499篇
    • 转载:243篇
    • 译文:99篇
    • 评论:428条
    博客专栏
    最新评论