天天看点

android 自定义属性

1.先在res/values文件夹中新建一个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>

2.新建一个MyView.java。用来在屏幕上画一个矩形和一个字符串。

package com.MyAndroid;

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.graphics.Rect;

import android.util.AttributeSet;

import android.view.View;

public class MyView extends View{

    public Context mContext;

    public Paint mPaint;

    public MyView(Context context) {

        super(context);

        mContext = context;

    }

    public MyView(Context context, AttributeSet attrs) {

        super(context, attrs);

        mPaint = new Paint();

         //将MyView中attrs属性值放入a中

         TypedArray a = context.obtainStyledAttributes(attrs, 

                    R.styleable.MyView); 

          int textColor = a.getColor(R.styleable.MyView_textColor,Color.RED); 

          float textSize = a.getDimension(R.styleable.MyView_textSize, 36); 

          //设置默认的字体大小   

          mPaint.setTextSize(textSize);

          //设置默认的画笔颜色 

          mPaint.setColor(textColor); 

          //最后一定要使用这个方法。将设置好的a返回给StyledAttributes,后面可以重新使用。

          a.recycle();     

    @Override

    protected void onDraw(Canvas canvas) {

        super.onDraw(canvas);

        mPaint.setStyle(Style.FILL); 

        canvas.drawRect(new Rect(10,10,100,100), mPaint);

        mPaint.setColor(Color.GREEN);

        canvas.drawText("丹", 110,110,mPaint);

三、将我们自定义的MyView 加入布局main.xml 文件中,平且使用自定义属性,自定义属性必须加上:

xmlns:test ="http://schemas.android.com/apk/res/com.MyAndroid "蓝色 是自定义属性的前缀,红色 是我们包名.

<?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.MyAndroid" 

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    >

<com.MyAndroid.MyView

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    test:textSize="20px" 

    test:textColor="#fff"   

/>

</LinearLayout>

4.运行效果

android 自定义属性

还有就是当声明declare-styleable的时候,format可以有一下格式:

reference

string

color

dimension

boolean

integer

float

fraction

enum

flag

转自http://ssd910.blog.163.com/blog/static/23876797201072504136476/

    http://blog.csdn.net/G_rrrr/archive/2009/11/24/4861290.aspx

第二篇里还有android自带Button的实现代码,学习起来挺不错的。

继续看贪吃蛇了。。吃啊吃,明天就可以吃粽子了~!