天天看點

android中如何使用自定義view,自定義控件屬性,及動态自定義控件

如何自定義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);

運作效果如下:(動态生成)

代碼如下: