Android Drawable及其相關類的使用
一個讓人賞心悅目的界面對軟件來說非常重要,因此圖形圖像資源也顯得非常重要。本講就要談一談Android中處理圖形圖像的最重要的一個類Drawable。Drawable就是一個可以畫的對象的抽象(有點別扭,你湊合看吧),下面是它的繼承關系,可以看到BitmapDrawable,AnimationDrawable等對象都是它的子類。

最簡單的使用Drawable資源的方法是,把圖片放入Android工程的res\drawable目錄下,編程環(huán)境會自動在R類里為此資源創(chuàng)建一個引用。你可以使用此引用訪問該資源對象。譬如對應用程序的圖標,在Java代碼中可以用R.drawable.icon引用到它,在XML中可以用@drawable/icon引用到它。
那么如果圖片資源不在項目中而是在SDCard中時如何使用呢,我們看一下下面的例子學習一下Drawable的使用,并且順便學習一下Bitmap和BitmapFactory的使用。
1、創(chuàng)建項目 Lesson23_Drawable,主Acitivity的名字是 MainDrawable.java,拷貝a.jpg和b.jpg兩個文件到sdcard中

2、res\main.xml的內容如下:
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <textview android:layout_width="fill_parent" android:layout_height="wrap_content" android:textsize="20sp" android:text="Drawable的使用-設置壁紙"> <button android:layout_width="wrap_content" android:layout_height="wrap_content" android:textsize="20sp" android:text="查看圖片A" android:id="@+id/Button01"> </button> <button android:layout_width="wrap_content" android:layout_height="wrap_content" android:textsize="20sp" android:text="查看圖片B" android:id="@+id/Button02"> </button> <button android:layout_width="wrap_content" android:layout_height="wrap_content" android:textsize="20sp" android:text="設置圖片A為壁紙" android:id="@+id/Button03"> </button> <button android:layout_width="wrap_content" android:layout_height="wrap_content" android:textsize="20sp" android:text="設置圖片B為壁紙" android:id="@+id/Button04"> </button> <button android:layout_width="wrap_content" android:layout_height="wrap_content" android:textsize="20sp" android:text="恢復默認壁紙" android:id="@+id/Button05"> </button> <imageview android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/ImageView01"> </imageview> </textview></linearlayout>
3、MainDrawable.java的內容如下:
package android.basic.lesson23;
import java.io.IOException;
import android.app.Activity;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
public class MainDrawable extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//定義UI組件
Button b1 = (Button) findViewById(R.id.Button01);
Button b2 = (Button) findViewById(R.id.Button02);
Button b3 = (Button) findViewById(R.id.Button03);
Button b4 = (Button) findViewById(R.id.Button04);
Button b5 = (Button) findViewById(R.id.Button05);
final ImageView iv= (ImageView)findViewById(R.id.ImageView01);
//定義按鈕點擊監(jiān)聽器
OnClickListener ocl = new OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.Button01:
//給ImageView設置圖片,從存儲卡中獲取圖片為Drawable,然后把Drawable設置為ImageView的背景
iv.setBackgroundDrawable(Drawable.createFromPath("/sdcard/a.jpg"));
break;
case R.id.Button02:
iv.setBackgroundDrawable(Drawable.createFromPath("/sdcard/b.jpg"));
break;
case R.id.Button03:
try {
//Activity的父類ContextWrapper有這個setWallpaper方法,當然使用此方法需要有android.permission.SET_WALLPAPER權限
setWallpaper(BitmapFactory.decodeFile("/sdcard/a.jpg"));
} catch (IOException e1) {
e1.printStackTrace();
}
break;
case R.id.Button04:
try {
setWallpaper(BitmapFactory.decodeFile("/sdcard/b.jpg"));
} catch (IOException e1) {
e1.printStackTrace();
}
break;
case R.id.Button05:
try {
//Activity的父類ContextWrapper有這個clearWallpaper方法,作用是恢復默認壁紙,當然使用此方法需要有android.permission.SET_WALLPAPER權限
clearWallpaper();
} catch (IOException e) {
e.printStackTrace();
}
break;
}
}
};
//給按鈕們綁定點擊監(jiān)聽器
b1.setOnClickListener(ocl);
b2.setOnClickListener(ocl);
b3.setOnClickListener(ocl);
b4.setOnClickListener(ocl);
b5.setOnClickListener(ocl);
}
}
4、AndroidManifest.xml的內容如下(設置權限)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="android.basic.lesson23" android:versioncode="1" android:versionname="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:label="@string/app_name" android:name=".MainDrawable">
<intent -filter="">
<action android:name="android.intent.action.MAIN">
<category android:name="android.intent.category.LAUNCHER">
</category></action></intent>
</activity>
</application>
<uses -sdk="" android:minsdkversion="8">
<uses -permission="" android:name="android.permission.SET_WALLPAPER"></uses>
</uses></manifest>
5、運行程序,查看結果:

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

點擊”設置圖片B為壁紙”按鈕,可以看到圖片B已經成為桌面壁紙。 好了本講就到這里。
以上就是對Android Drawable 的資料整理,后續(xù)繼續(xù)補充,謝謝大家的支持!
- android中圖形圖像處理之drawable用法分析
- 詳解Android中Drawable方法
- 關于Android中drawable必知的一些規(guī)則
- Android自定義Drawable實現(xiàn)圓角效果
- Android開發(fā)基于Drawable實現(xiàn)圓角矩形的方法
- Android自定義Drawable實現(xiàn)圓形和圓角
- Android Drawable和Bitmap的轉換實例詳解
- Android中drawable使用Shape資源
- Android開發(fā)使用Drawable繪制圓角與圓形圖案功能示例
- Android自定義Drawable之在Drawable中部指定透明區(qū)域方法示例
相關文章
Android自定義view實現(xiàn)滑動解鎖九宮格控件
這篇文章主要介紹了Android自定義view實現(xiàn)滑動解鎖九宮格控件,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2023-02-02
Android實現(xiàn)給TableLayou繪制邊框的方法
這篇文章主要介紹了Android實現(xiàn)給TableLayou繪制邊框的方法,涉及Android TableLayou布局控制相關技巧,需要的朋友可以參考下2016-03-03
Android應用中使用及實現(xiàn)系統(tǒng)“分享”接口實例
為了應用的推廣、傳播,很多的應用中都有“分享”功能,這篇文章主要介紹了Android應用中使用及實現(xiàn)系統(tǒng)“分享”接口實例,有興趣的可以了解一下。2016-12-12
Android EditText實現(xiàn)關鍵詞批量搜索示例
本篇文章主要介紹了Android EditText實現(xiàn)關鍵詞批量搜索示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02

