開發Android時的那些筆記...!!
Android已經幫我們架構好一個很好的框架
可以將所有的view都寫在xml裡,而盡可能的避免與controller耦合。
所以每當自己在覆寫View,在寫自己的View時,
如果有一些View的參數屬性要設定時,
除了可以動態呼叫函式外,利用AttributeSet也可以讓使用的人在xml裡面直接做設定喔。
**********************
首先,先創建**{project}\res\values\attr.xml**
並且在裡面建立自己的參數:
<resources>
<declare-styleable name="myTheme">
<attr name="style" format="integer" />
</declare-styleable>
</resources>
Format的種類參考:
http://blog.csdn.net/mayingcai1987/article/details/6216655
基本上這樣就完成了。接下來就可以直接在xml用下列的方式給MyView做專屬的設定。
{project}\res\layout\layout.xml
<com.android.sample.MyView
xmlns:mytheme="http://schemas.android.com/apk/res/com.android.sample"
android:layout_width="match_parent"
android:layout_height="match_parent"
mytheme:style="1"
/>
當然,在MyView這裡要處理這些參數是拿來要做甚麼用的邏輯囉....
com.android.sample.MyView
public static final int DEFAULT_STYLE = 1;
private int mStyle = DEFAULT_STYLE;
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray ta = context.obtainStyledAttributes(attrs,
R.styleable.myTheme);
mStyle = ta.getInt(R.styleable.myTheme_style,DEFAULT_STYLE);
// 用mStyle去動態做一些UI設定
ta.recycle();
}
以上是一個簡單的範例。
在寫View時,養成自訂義attr.xml是一個好的習慣,
這樣別人再使用這個View時,不但彈性變高了,可讀性也比較好。
AttributeSet
http://developer.android.com/reference/android/util/AttributeSet.html
TypedArray
http://developer.android.com/reference/android/content/res/TypedArray.html