2012年5月17日 星期四

Drawable Image

要繪製簡單的圖形,可以使用Drawable類別的抽象物件,它會被擴展出來成為不同的具體Drawable 圖形,包括有BitmapDrawable, ShapeDrawable, PictureDrawable, LayerDrawable,當然也可以有自己定義的 Drawable.

三種方法可以定義和實做一個Drawable物件:
1、使用圖像,將之存在專案的資源(res/drawable);
2、使用xml檔案來定義Drawable屬性;
3、直接寫碼。

最簡單的方式是將圖檔直接放入應用程式,然後由專案資源來獲取圖像檔案。可以使用的格式有.png, jpg, gif.


第一種方法:(ImageView 取圖像檔時用 .setImageResource(R.drawable.icon) )
先將 icon.png 存在 res/drawable目錄下


public class Cq_Img01Activity extends Activity {
    /** Called when the activity is first created. */

LinearLayout mLinearLayout;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
     
        //Create a LinearLayout for ImageView 建立畫面佈局
        mLinearLayout = new LinearLayout(this);
     
        //Create ImageView obj 實做圖像顯示欄位,然後從res/drawable目錄獲取圖像,放入自身
        ImageView imageview = new ImageView(this);
        imageview.setImageResource(R.drawable.icon);
     
        //Set ImageView 
        imageview.setAdjustViewBounds(true);
        imageview.setLayoutParams(new Gallery.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
     
        mLinearLayout.addView(imageview);
        setContentView(mLinearLayout);
    }
}

*******************

要操作圖像本身時(譬如以手指移動圖像),首先得建立一個Drawable 類別的圖像資源物件。自圖像資源(Resources)取得圖像資源的ID(R.drawable.icon),定義成圖像物件,才能使用。

Resources res = mContext.getResources();
Drawable myDrawableObj = res.getDrawable(R.drawable.icon);

******************************************************************
第二種方法:2、使用xml檔案來定義Drawable屬性
res/layout/main.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

 
    <ImageView
        android:id="@+id/imageView01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:src="@drawable/icon" />

</LinearLayout>



public class ImageActivity extends Activity {
     @Override
     public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView (R.layout.main);
      }

}

*****************************************************

沒有留言:

張貼留言