自定义组件及属性

原创 2013年12月02日 15:39:51

其实很早以前在属性(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>




 

相关文章推荐

自定义组件属性探究

  • 2014年11月05日 19:42
  • 1.18MB
  • 下载

自定义ActiveX组件在设计阶段,切换属性页后出现异常

源码下载:ActiveX-Clock-OCX   参照孙鑫的>中第18章自定义ActiveX中的Clock例子(到18.3节之前),完成了OCX控件的制作,而且也编译(Debug模式)、注册成功了...

Unity自定义UI组件(十一) 雷达图、属性图

前言 借用梦想世界宠物属性图 想必大家都在游戏中见过属性图用于展示多种属性的数值,可以较为直观的对比某种属性的缺陷或者是哪种属性有优势。在三维可视化领域也会遇到类似的属性对比,用属性图来...

Unity自定义UI组件(十一) 雷达图、属性图

前言 想必大家都在游戏中见过属性图用于展示多种属性的数值,可以较为直观的对比某种属性的缺陷或者是哪种属性有优势。在三维可视化领域也会遇到类似的属性对比,用属性图来展示最为合适。 组件特点 一键创建...

Android定制组件之图文 (自定义组件图) + TableLayout属性

传送门 ☞ 轮子的专栏 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229         今天我们学习如何自定义TextView组件,让它既能显示文本,又能显示...

自定义侧滑组件+自定义属性

继承HorizontalScrollView,通过添加各种方法,自定义实现各种侧滑效果 先看xml布局文件 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:自定义组件及属性
举报原因:
原因补充:

(最多只允许输入30个字)