如何自定義View
好處:特殊的效果,滿足個性的需求
流程:
1) 建立一個類,繼承View或它的子類
2) 添加構造方法
一個參數:在代碼中建立對象
兩個參數:在布局檔案中使用
3) 重寫onDraw()方法 一個矩形區域,畫布Canvas 畫筆Paint
設定畫筆屬性
// 建立畫筆
Paint paint = new Paint();
paint.setColor(Color.RED);
paint.setAntiAlias(true);
paint.setTextSize(30);
4) 使用canvas繪制
例如:canvas.rotate(90);
canvas.drawText("VerticalTextView", 20, 0, paint);
如何使用自定義控件
在布局檔案中拖拽自定義控件
自定義控件屬性的步驟:
1) 在values目錄中建立attrs.xml
(從ApiDemos中拷貝)
2) 定義屬性
例如:
<declare-styleable name="VerticalTextView">
<attr name="content" format="string" />
3) 在自定義控件代碼中讀取布局中配置的屬性,進行設定
參考ApiDemos中的LabelView
使用自定義屬性:
1) 在布局檔案中添加自定義控件的命名空間
例如: xmlns:yuchen="http://schemas.android.com/apk/res/org.yuchen.templete"
2) 配置屬性,例如:yuchen:content="sdf"
動态:
1) 修改重新繪制的内容
2) 觸發系統重新調用onDraw()方法
調用invalidate()方法
例如:
// 動态自定義控件
postDelayed(new Runnable()
{
@Override
public void run()
{
text = new Date().toLocaleString();
invalidate();
postDelayed(this, 1000);
}
}, 1000);
運作效果如下:(動态生成)
代碼如下: