Android自定义属性的使用示例

MainActivity如下:

package cc.testattrs;

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);
	}
}

ViewSubclass如下:

package cc.testattrs;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.util.AttributeSet;
import android.view.View;
/**
 * Demo描述:
 * Android自定义属性的使用
 *
 * 注意事项:
 * 1 在main.xml中声明命名空间
 *   xmlns:testattr="http://schemas.android.com/apk/res/cc.testattrs"
 *   其中http://schemas.android.com/apk/res/为固定写法,其后追加包名
 *   testattr为我们给自定义属性的别名引用
 * 2 getDimension(R.styleable.TestAttr_testTextSize, 20);
 *   第二个参数意思是:假如在xml文件中没有为改属性设值则采用此值.
 *   其余getXX()方法均类似
 * 3 注意getColor()方法中第二个参数的取值,是一个颜色值,在这里很容易错误
 *
 */
public class ViewSubclass extends View {
    private Paint mPaint;
    private float textSize;
    private int textColor ;
	public ViewSubclass(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
	}

	public ViewSubclass(Context context, AttributeSet attrs) {
		super(context, attrs);
		mPaint = new Paint();
		TypedArray typedArray = context.obtainStyledAttributes(attrs,R.styleable.TestAttr);
		textSize = typedArray.getDimension(R.styleable.TestAttr_testTextSize, 20);
		textColor = typedArray.getColor(R.styleable.TestAttr_testColor, Color.BLACK);
		System.out.println("textSize="+textSize+",textColor="+textColor);
		mPaint.setTextSize(textSize);
		mPaint.setColor(textColor);
		//切记recycle()
		typedArray.recycle();
	}

	public ViewSubclass(Context context) {
		super(context);
	}

    @Override
    protected void onDraw(Canvas canvas) {
    	super.onDraw(canvas);
    	mPaint.setStyle(Style.FILL);
    	canvas.drawText("9527", 10, 20, mPaint);
    }

}

 

main.xml如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:testattr="http://schemas.android.com/apk/res/cc.testattrs"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
   >

    <cc.testattrs.ViewSubclass
        android:layout_width="200dip"
        android:layout_height="200dip"
        android:layout_centerInParent="true"
        testattr:testTextSize="10dip"
        testattr:testColor="#ff0000"
    />

</RelativeLayout>

 

attrs.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
      <declare-styleable name="TestAttr">
        <attr name="testTextSize" format="dimension"/>
        <attr name="testColor" format="color"/>
    </declare-styleable>
</resources>

 

时间: 2024-11-10 13:34:40

Android自定义属性的使用示例的相关文章

android 自定义属性,其中有个属性是引用图片,但实际没有引用到?求解

问题描述 android 自定义属性,其中有个属性是引用图片,但实际没有引用到?求解 布局文件其中一段: <com.snd.test.view.CustomBottom android:id="@id/bottom_home_btn" android:layout_width="fill_parent" android:layout_height="fill_parent" bdm:img="@drawable/tabbar_ic

Android中AutoCompleteTextView完整示例(一)

MainActivity如下: package cc.testautocompletetextview; import cc.testautocompletetextview1.R; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.app.Activity; /** * Demo描述 * AutoComp

ImageView 实现Android colorPikcer 选择器的示例代码

本文介绍了ImageView 实现Android colorPikcer 选择器的示例代码,分享给大家,具体如下: Android colorPikcer 选择器 环形的ColorPicker,主要思路是: Color 选在放在ImageView 的background上面,根据点击的位置判断选择的颜色. 重写onTouch,在onTouch 里面判断点击点的颜色. 根据当前选择的颜色设置图片的src. 获取Bitmap 在 ColorPickerView 构造函数中初始化 Bitmap.因为g

Android 中 ThreadLocal使用示例

Android 中 ThreadLocal使用示例 概要: Demo描述: ThreadLocal使用示例. 关于ThreadLocal的官方文档描述 Implements a thread-local storage, that is, a variable for which each thread has its own value. All threads share the same ThreadLocal object, but each sees a different value

Android SurfaceView游戏开发示例

当我们需要开发一个复杂游戏的时候,而且对程序的执行效率要求很高时,View类就不能满足需求了,这时必须用 SurfaceView类进行开发. 例如,对速度要求很高的游戏时,View类就不能满足需求了,这时必须使用SurfaceView类进 行开发.例如,对速度要求很高的游戏,可以使用双缓冲来显示.游戏中的背景.人物.动画等都需要绘制在一个画布(Canvas) 上,而SurfaceView可以直接访问一个画布,SurfaceView 是提供给需要直接画像素而不是使用窗体部件的应用使用的. 每个 S

Android自定义属性 format的深入解析

以下是对Android中的自定义属性format进行了详细的分析介绍,需要的朋友可以过来参考下   1. reference:参考某一资源ID.(1)属性定义: 复制代码 代码如下: <declare-styleable name = "名称">    <attr name = "background" format = "reference" /> </declare-styleable> (2)属性使用:

android自定义属性

1.引言 对于自定义属性,大家肯定都不陌生,遵循以下几步,就可以实现: 自定义一个CustomView(extends View )类 编写values/attrs.xml,在其中编写styleable和item等标签元素 在布局文件中CustomView使用自定义的属性(注意namespace) 在CustomView的构造方法中通过TypedArray获取 ps:如果你对上述几个步骤不熟悉,建议先熟悉下,再继续~ 那么,我有几个问题: 以上步骤是如何奏效的? styleable 的含义是什么

Android AlertDialog对话框用法示例_Android

本文实例讲述了Android AlertDialog对话框用法.分享给大家供大家参考,具体如下: AlertDialog对话框的介绍 1.获得AlertDialog静态内部类Buidler对象,由该类来创建AlertDialog对象,因为AlertDialog的构造方法全部是Protected类型 2.通过Buidler对象设置对话框的标题.按钮以及按钮要响应的事件DialogInterface.OnClickListener 3.调用Buidler的create()方法创建对话框 4.调用Al

Android中BaseAdapter用法示例_Android

本文实例讲述了Android中BaseAdapter用法.分享给大家供大家参考,具体如下: 概述: BaseAdapter就Android应用程序中经常用到的基础数据适配器,它的主要用途是将一组数据传到像ListView.Spinner.Gallery及GridView等UI显示组件,它是继承自接口类Adapter BaseAdapter Java代码: public class RecentAdapter extends BaseAdapter { private class RecentVi