Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android學習指南之二十三:Drawable及其相關類的使用

Android學習指南之二十三:Drawable及其相關類的使用

編輯:關於android開發

       對於任何軟件來說,美觀的界面都是用戶體驗的重要組成部分,它能提高整個軟件的品質,給用戶一個好的印象。界面的美觀一般離不開各種圖形圖像資源。本節就來講一講Android開發中圖形圖像處理的一個最重要的類Drawable。Drawable就是一個可以畫的對象的抽象(有點別扭,你湊合看吧)。

       下面是它的繼承關系,可以看到BitmapDrawable、AnimationDrawable等對象都是它的子類。

Drawable類的繼承關系

       最簡單的使用Drawable資源的方法是,把圖片放入Android工程的res\drawable目錄下,編程環境會自動在R類裡為此資源創建一個引用。你可以使用此引用訪問該資源對象。譬如對應用程序的圖標,在Java代碼中可以用R.drawable.icon引用到它,在XML中可以用@drawable/icon引用到它。

       那麼如果圖片資源不在項目中而是在SDCard中時如何使用呢,我們看一下下面的例子學習一下Drawable的使用,並且順便學習一下Bitmap和BitmapFactory的使用。

       1、創建項目Lesson23_Drawable,主Acitivity的名字是MainDrawable.java,拷貝a.jpg和b.jpg兩個文件到sdcard中。

向sdcard中拷貝圖片文件

       2、res\main.xml的內容如下:

XML/HTML代碼
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LINEARLAYOUT xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="fill_parent" android:layout_width="fill_parent" android:orientation="vertical">  
  3. <TEXTVIEW android:layout_height="wrap_content" android:layout_width="fill_parent" android:text="Drawable的使用-設置壁紙" android:textsize="20sp" />  
  4. <BUTTON type=submit android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="查看圖片A" android:textsize="20sp" android:id="@+id/Button01">  
  5. </BUTTON>  
  6. <BUTTON type=submit android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="查看圖片B" android:textsize="20sp" android:id="@+id/Button02">  
  7. </BUTTON>  
  8. <BUTTON type=submit android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="設置圖片A為壁紙" android:textsize="20sp" android:id="@+id/Button03">  
  9. </BUTTON>  
  10. <BUTTON type=submit android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="設置圖片B為壁紙" android:textsize="20sp" android:id="@+id/Button04">  
  11. </BUTTON>  
  12. <BUTTON type=submit android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="恢復默認壁紙" android:textsize="20sp" android:id="@+id/Button05">  
  13. </BUTTON>  
  14. <IMAGEVIEW android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/ImageView01">  
  15. </IMAGEVIEW>  
  16. </LINEARLAYOUT>  

       3、MainDrawable.java的內容如下:

Java代碼
  1. package android.basic.lesson23;   
  2.   
  3. import java.io.IOException;   
  4.   
  5. import android.app.Activity;   
  6. import android.graphics.BitmapFactory;   
  7. import android.graphics.drawable.Drawable;   
  8. import android.os.Bundle;   
  9. import android.view.View;   
  10. import android.view.View.OnClickListener;   
  11. import android.widget.Button;   
  12. import android.widget.ImageView;   
  13.   
  14. public class MainDrawable extends Activity {   
  15.     /** Called when the activity is first created. */  
  16.     @Override  
  17.     public void onCreate(Bundle savedInstanceState) {   
  18.         super.onCreate(savedInstanceState);   
  19.         setContentView(R.layout.main);   
  20.   
  21.         //定義UI組件   
  22.         Button b1 = (Button) findViewById(R.id.Button01);   
  23.         Button b2 = (Button) findViewById(R.id.Button02);   
  24.         Button b3 = (Button) findViewById(R.id.Button03);   
  25.         Button b4 = (Button) findViewById(R.id.Button04);   
  26.         Button b5 = (Button) findViewById(R.id.Button05);   
  27.         final ImageView iv= (ImageView)findViewById(R.id.ImageView01);   
  28.   
  29.         //定義按鈕點擊監聽器   
  30.         OnClickListener ocl = new OnClickListener() {   
  31.   
  32.             @Override  
  33.             public void onClick(View v) {   
  34.   
  35.                 switch (v.getId()) {   
  36.                 case R.id.Button01:   
  37.                     //給ImageView設置圖片,從存儲卡中獲取圖片為Drawable,然後把Drawable設置為ImageView的背景   
  38.                     iv.setBackgroundDrawable(Drawable.createFromPath("/sdcard/a.jpg"));   
  39.                     break;   
  40.                 case R.id.Button02:   
  41.                     iv.setBackgroundDrawable(Drawable.createFromPath("/sdcard/b.jpg"));   
  42.                     break;   
  43.                 case R.id.Button03:   
  44.                     try {   
  45.                         //Activity的父類ContextWrapper有這個setWallpaper方法,當然使用此方法需要有android.permission.SET_WALLPAPER權限   
  46.                         setWallpaper(BitmapFactory.decodeFile("/sdcard/a.jpg"));   
  47.                     } catch (IOException e1) {   
  48.                         e1.printStackTrace();   
  49.                     }   
  50.                     break;   
  51.                 case R.id.Button04:   
  52.                     try {   
  53.                         setWallpaper(BitmapFactory.decodeFile("/sdcard/b.jpg"));   
  54.                     } catch (IOException e1) {   
  55.                         e1.printStackTrace();   
  56.                     }   
  57.                     break;   
  58.                 case R.id.Button05:   
  59.                     try {   
  60.                         //Activity的父類ContextWrapper有這個clearWallpaper方法,作用是恢復默認壁紙,當然使用此方法需要有android.permission.SET_WALLPAPER權限   
  61.                         clearWallpaper();   
  62.                     } catch (IOException e) {   
  63.                         e.printStackTrace();   
  64.                     }   
  65.                     break;   
  66.                 }   
  67.   
  68.             }   
  69.   
  70.         };   
  71.   
  72.         //給按鈕們綁定點擊監聽器   
  73.         b1.setOnClickListener(ocl);   
  74.         b2.setOnClickListener(ocl);   
  75.         b3.setOnClickListener(ocl);   
  76.         b4.setOnClickListener(ocl);   
  77.         b5.setOnClickListener(ocl);   
  78.     }   
  79.   
  80. }  

       4、AndroidManifest.xml的內容如下(設置權限):

XML/HTML代碼
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <MANIFEST android:versionname="1.0" android:versioncode="1" xmlns:android="http://schemas.android.com/apk/res/android" package="android.basic.lesson23">  
  3.     <APPLICATION android:icon="@drawable/icon" android:label="@string/app_name">  
  4.         <ACTIVITY android:name=".MainDrawable" android:label="@string/app_name">  
  5.             <INTENT -filter>  
  6.                 <ACTION android:name="android.intent.action.MAIN" />  
  7.                 <CATEGORY android:name="android.intent.category.LAUNCHER" />  
  8.             </INTENT>  
  9.         </ACTIVITY>  
  10.   
  11.     </APPLICATION>  
  12.     <USES android:minsdkversion="8" -sdk />  
  13.   
  14. <USES android:name="android.permission.SET_WALLPAPER" -permission></USES>  
  15. </MANIFEST>  

       5、運行程序,查看結果。

       點擊“查看圖片A”按鈕,ImageView載入圖片A並顯示出來:

ImageView載入並顯示圖片

       點擊“設置圖片B為壁紙”按鈕,可以看到圖片B已經成為桌面壁紙:

設置圖片為壁紙

       關於Drawable使用的內容就講到這裡了,大家可以自己多加練習,鞏固一下這些知識。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved