目前我開始致力於支持一個項目,在那裏我發現了一個非常有趣的技巧。它提供了一個機會,不要在xml中爲CustomView編寫完整的類名,它看起來很髒,我想。CustomView安全嗎?
下面是此招的實現步驟:
1)在我們的項目中創建我們自己的android.view
包。
2)創建CustomTextView extends TextView
並將其放入android.view
包中。
3)使用它的XML像任何其他Android view
<CustomTextView
android:angle="90"
android:endColor="#efa600"
android:paddingLeft="0dp"
android:startColor="#ffe396"
android:text=""
android:textSize="24dp"
android:textStyle="bold" />
4)使用標準Android屬性,而不是定製:
public CustomTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
int[] ids = new int[attrs.getAttributeCount()];
for (int i = 0; i < attrs.getAttributeCount(); i++) {
ids[i] = attrs.getAttributeNameResource(i);
}
TypedArray a = context.obtainStyledAttributes(attrs, ids, defStyle, 0);
for (int i = 0; i < attrs.getAttributeCount(); i++) {
String attrName = attrs.getAttributeName(i);
if (attrName == null)
continue;
if (attrName.equals("startColor")) {
mStartColor = a.getColor(i, -1);
} else if (attrName.equals("endColor")) {
mEndColor = a.getColor(i, -1);
} else if (attrName.equals("angle")) {
mAngle = a.getFloat(i, 0);
}
}
a.recycle();
}
請問這樣的方式是安全的或者它會導致任何問題?
爲什麼你想讓自己複雜化並使用一些未公開的行爲只是爲了不將自定義視圖的包名鍵入? – Luksprog
這不是我的代碼,我只是支持它,我想知道任何可能的問題。 – Evos