Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android -- TypedArray

Android -- TypedArray

編輯:關於Android編程

當我們自定義View的時候,在給View賦值一些長度寬度的時候,一般都是在layout布局文件中進行的。,比如android:layout_height="wrap_content",除此之外,我們也可以自己定義屬性,這樣在使用的時候我們就可以使用形如 myapp:myTextSize="20sp"的方式了。   values/attrs.xml   首先要創建變量,創建了個values/attrs.xml文件,或文件名任意,但是要在values目錄下:   <?xml version="1.0" encoding="utf-8"?>    <resources>        <declare-styleable name="MyView">            <attr name="textSize" format="dimension" />        </declare-styleable>    </resources> 其中resource是跟標簽,可以在裡面定義若干個declare-styleable,<declare-styleable name="MyView">中name定義了變量的名稱,下面可以再自定義多個屬性,針對<attr name="textSize" format="dimension"/>來說,其屬性的名稱為"textSize",format指定了該屬性類型為dimension,只能表示字體的大小。   format還可以指定其他的類型比如: reference   表示引用,參考某一資源ID string   表示字符串 color   表示顏色值 dimension   表示尺寸值 boolean   表示布爾值 integer   表示整型值 float   表示浮點值 fraction   表示百分數 enum   表示枚舉值 flag   表示位運算 layout     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"       xmlns:myapp="http://schemas.android.com/apk/res/com.eyu.attrtextdemo"       xmlns:tools="http://schemas.android.com/tools"       android:layout_width="match_parent"       android:layout_height="match_parent"       android:orientation="vertical"       tools:context=".MainActivity" >         <us.yydcdut.MyView           android:layout_height="wrap_content"           android:layout_width="wrap_content"           myapp:textSize="20sp"           myapp:myColor="#324243"/>      </LinearLayout>   可以看到多了xmlns:myapp="http://schemas.android.com/apk/res/com.eyu.attrtextdemo" ,以及在自定義View中 myapp:textSize="20sp" ,myapp:myColor="#324243"    obtainStyledAttributes   context通過調用obtainStyledAttributes方法來獲取一個TypeArray,然後由該TypeArray來對屬性進行設置   obtainStyledAttributes方法有三個,我們最常用的是有一個參數的obtainStyledAttributes(int[] attrs),其參數直接styleable中獲得   TypedArray a = context.obtainStyledAttributes(attrs,R.styleable.MyView); 調用結束後務必調用recycle()方法,否則這次的設定會對下次的使用造成影響       public class MyView extends View{       public Paint paint;          public MyView(Context context, AttributeSet attrs) {           super(context, attrs);           paint = new Paint();                      TypedArray a = context.obtainStyledAttributes(attrs,R.styleable.MyView);               int textColor = a.getColor(R.styleable.MyView_myColor, 003344);           float textSize = a.getDimension(R.styleable.MyView_myTextSize, 33);           paint.setTextSize(textSize);           paint.setColor(textColor);           a.recycle();       }          public MyView(Context context) {           super(context);       }              @Override      protected void onDraw(Canvas canvas) {           super.onDraw(canvas);              paint.setStyle(Style.FILL);           canvas.drawText("aaaaaaa", 10, 50, paint);       }          }
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved