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>
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!