Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android高手之路之Android中的自定義屬性attr.xml、TypedArray的使用

Android高手之路之Android中的自定義屬性attr.xml、TypedArray的使用

編輯:關於Android編程

一般我們都是使用android:xxx=...這樣的android的屬性。但有時我們需要使用自定義的屬性,尤其是自定義view的時候尤其需要。

一般需要以下幾個步驟:

1.在res/values 文件下定義一個attrs.xml 文件:

 


2.重寫我們的自定義View的構造方法。是使用R.styleable.MyView獲得我們的自定義屬性。

 

TypedArray 通常最後調用 .recycle() 方法,為了保持以後使用該屬性一致性!

 

package com.example.viewdemo;

import android.annotation.SuppressLint;
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{
	 private Paint mPaint; 
	 private Context mContext;  
	 private static final String mString = oh,God!;  
	 public MyView(Context context) {  
	        super(context);  
	      
	    }  
	public MyView(Context context,AttributeSet attrs)  
    {  
        super(context,attrs); 
        mPaint = new Paint(); 
        TypedArray a = context.obtainStyledAttributes(attrs,R.styleable.MyView);
        int textColor = a.getColor(R.styleable.MyView_textColor, 0xffffff);//注意加默認值
        float textSize = a.getDimension(R.styleable.MyView_textSize, 36);
        mPaint.setTextSize(textSize);
        mPaint.setColor(textColor);
        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.BLUE);
        //繪制文字
        canvas.drawText(mString, 10, 110, mPaint);
    }
}

3.將我們的自定義屬性用在XML布局文件中。注意前綴

 

 



    



運行效果:

 

\

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved