2010年10月20日 星期三

Android Resources 資源檔-Sample與使用範例(二)

一.anim/:XML檔案
定義所有的tween動畫
例:res/anim/hyperspace_jump.xml
 <set xmlns:android="http://schemas.android.com/apk/res/android"  
      android:shareInterpolator="false">  
      <scale  
           android:interpolator="@android:anim/accelerate_decelerate_interpolator"  
           android:fromXScale="1.0"   
           android:toXScale="1.4"   
           android:fromYScale="1.0"   
           android:toYScale="0.6"   
           android:pivotX="50%"  
           android:pivotY="50%"  
           android:fillAfter="false"  
           android:duration="700" />  
      <set  
           android:interpolator="@android:anim/accelerate_interpolator"  
           android:startOffset="700">  
           <scale  
                android:fromXScale="1.4"   
                android:toXScale="0.0"  
                android:fromYScale="0.6"  
                android:toYScale="0.0"   
                android:pivotX="50%"   
                android:pivotY="50%"   
                android:duration="400" />  
           <rotate  
                android:fromDegrees="0"   
                android:toDegrees="-45"  
                android:toYScale="0.0"   
                android:pivotX="50%"   
                android:pivotY="50%"  
                android:duration="400" />  
      </set>  
 </set>  
在Java內使用動畫
ImageView image = (ImageView) findViewById(R.id.image);
Animation hyperspaceJump = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
image.startAnimation(hyperspaceJump);

二.color/:XML檔案
定義colors state list,也就是以一個物件的方式設定在各種狀態時的color變化,如button會有各種state的color變化,可將這樣的color state設定成xml
例:res/color/button_text.xml:
 <?xml version="1.0" encoding="utf-8"?>  
 <selector xmlns:android="http://schemas.android.com/apk/res/android">  
      <item android:state_pressed="true"  
            android:color="#ffff0000"/> <!-- pressed -->  
      <item android:state_focused="true"  
            android:color="#ff0000ff"/> <!-- focused -->  
      <item android:color="#ff000000"/> <!-- default -->  
 </selector>  
在XML Layout上套用到Button上
 <Button  
 android:layout_width="fill_parent"  
 android:layout_height="wrap_content"  
 android:text="@string/button_text"  
 android:textColor="@color/button_text" />  

三.drawable/:bitmap檔案
包括(.png .9.png .jpg .gif),或透過XML檔案所描述的圖形,
如State lists,Color drawables,Shapes

四.layout/:XML檔案
定義使用者使用介面的layout,每一個Layout會相當於我們看到的一個page

五.menu/:XML檔案
定義該App的menu,例如Options Menu, Context Menu, or Sub Menu
例:res/menu/example_menu.xml:
 <menu xmlns:android="http://schemas.android.com/apk/res/android">  
      <item android:id="@+id/item1"  
            android:title="@string/item1"  
            android:icon="@drawable/group_item1_icon" />  
      <group android:id="@+id/group">  
           <item android:id="@+id/group_item1"  
                 android:title="@string/group_item1"  
                 android:icon="@drawable/group_item1_icon" />  
           <item android:id="@+id/group_item2"  
                 android:title="G@string/group_item2"  
                 android:icon="@drawable/group_item2_icon" />  
      </group>  
      <item android:id="@+id/submenu"  
            android:title="@string/submenu_title" >  
           <menu>  
                <item android:id="@+id/submenu_item1"  
                      android:title="@string/submenu_item1" />  
           </menu>  
      </item>  
 </menu>  
在Activity的Java內使用
public boolean onCreateOptionsMenu(Menu menu) {
  MenuInflater inflater = getMenuInflater();
  inflater.inflate(R.menu.example_menu, menu);
  return true;
}

六.raw/:任意檔案用他原本的資料格式儲存
系統不會對檔案做壓縮處理,要開啟這些檔案的InputStream,要透過Resources.openRawResource()呼叫該resourceID(R.raw.filename)取得,若是希望透過原始檔名來取得檔案,建議可以把檔案存在/assets/目錄下
在/assets/目錄下的檔案是沒有resourceID的,都是透過AssetManager來存取

七.values/:XML檔案
包含一些簡單的值設定,如string,color,style,通常會把同類型的寫在一個檔案內
1.arrays.xml

 <?xml version="1.0" encoding="utf-8"?>  
 <resources>  
      <array name="icons">  
           <item>@drawable/home</item>  
           <item>@drawable/settings</item>  
           <item>@drawable/logout</item>  
      </array>  
      <array name="colors">  
           <item>#FFFF0000</item>  
           <item>#FF00FF00</item>  
           <item>#FF0000FF</item>  
      </array>  
 </resources>  

JAVA使用
Resources res = getResources();
TypedArray icons = res.obtainTypedArray(R.array.icons);
Drawable drawable = icons.getDrawable(0);
TypedArray colors = res.obtainTypedArray(R.array.icons);
int color = colors.getColor(0,0);
2.colors.xml

 <?xml version="1.0" encoding="utf-8"?>  
 <resources>  
   <color name="opaque_red">#f00</color>  
   <color name="translucent_red">#80ff0000</color>  
 </resources>  

JAVA使用
Resources res = getResources();
int color = res.getColor(R.color.opaque_red);

XML使用
 <TextView  
 android:layout_width="fill_parent"  
 android:layout_height="wrap_content"  
 android:textColor="@color/translucent_red"  
 android:text="Hello"/>  
3.dimens.xml

 <?xml version="1.0" encoding="utf-8"?>  
 <resources>  
      <dimen name="textview_height">25dp</dimen>  
      <dimen name="textview_width">150dp</dimen>  
      <dimen name="ball_radius">30dp</dimen>  
      <dimen name="font_size">16sp</dimen>  
 </resources>  

Java使用
Resources res = getResources();
float fontSize = res.getDimension(R.dimen.font_size);

XML使用
 <TextView  
 android:layout_height="@dimen/textview_height"  
 android:layout_width="@dimen/textview_width"  
 android:textSize="@dimen/sixteen_sp"/>  
4.string.xml

 <?xml version="1.0" encoding="utf-8"?>  
 <resources>  
      <string name="hello">Hello!</string>  
 </resources>  

JAVA使用
String string = getString(R.string.hello);

XML使用
 <TextView  
 android:layout_width="fill_parent"  
 android:layout_height="wrap_content"  
 android:text="@string/hello" />  
5.style.xml

 <?xml version="1.0" encoding="utf-8"?>  
 <resources>  
      <style name="CustomText" parent="@style/Text">  
           <item name="android:textSize">20sp</item>  
           <item name="android:textColor">#008</item>  
      </style>  
 </resources>  

XML使用
 <?xml version="1.0" encoding="utf-8"?>  
 <EditText  
      style="@style/CustomText"  
      android:layout_width="fill_parent"  
      android:layout_height="wrap_content"  
      android:text="Hello, World!" />  

八.xml/:任何其他的xml檔案放在這目錄
以Resource.getXML()讀取,各式的XML設定檔config都放在這目錄下

沒有留言: