歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android中使用assets下的資源——圖片資源

在Android 應用中使用assets目錄下存放的資源文件,assets目錄下存放的資源代表應用無法直接訪問的原生資源,應用程序通過AssetManager以二進制流的形式來讀取資源。此應用是查看/assets/目錄下的圖片查看器(圖片格式為:.png),在assets目錄下放幾張PNG格式的圖片

該程序的界面十分簡單,只包含一個ImageView和一個按鈕

代碼如下:

布局文件如下:bitmaptest.xml

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout  
  3.   xmlns:android="http://schemas.android.com/apk/res/android"  
  4.   android:orientation="vertical"  
  5.   android:gravity="center_vertical"  
  6.   android:layout_width="wrap_content"  
  7.   android:layout_height="wrap_content">  
  8.   <Button  
  9.   android:id="@+id/btnBitmap"  
  10.   android:layout_width="wrap_content"  
  11.   android:layout_height="wrap_content"  
  12.   android:text="TestBitmap"  
  13.   />  
  14.   <ImageView  
  15.   android:id="@+id/imageBitmap"  
  16.   android:layout_width="wrap_content"  
  17.   android:layout_height="wrap_content"    
  18.   />  
  19.   
  20. </LinearLayout>  

java源代碼:

  1. package com.infy.configuration;  
  2. import java.io.IOException;  
  3. import java.io.InputStream;  
  4.   
  5. import android.app.Activity;  
  6. import android.content.res.AssetManager;  
  7. import android.graphics.BitmapFactory;  
  8. import android.graphics.drawable.BitmapDrawable;  
  9. import android.os.Bundle;  
  10. import android.view.View;  
  11. import android.view.View.OnClickListener;  
  12. import android.widget.Button;  
  13. import android.widget.ImageView;  
  14.   
  15. public class BitmapTest extends Activity{  
  16.   
  17.     String[] images = null;  
  18.     AssetManager assets = null;  
  19.     int currentImge = 0;  
  20.     ImageView image;  
  21.       
  22.     @Override  
  23.     protected void onCreate(Bundle savedInstanceState) {  
  24.         // TODO Auto-generated method stub   
  25.         super.onCreate(savedInstanceState);  
  26.         setContentView(R.layout.bitmaptest);  
  27.           
  28.         image = (ImageView)findViewById(R.id.imageBitmap);  
  29.           
  30.         try{  
  31.             assets = getAssets();  
  32.             //獲取/assests/目錄下的所有的文件   
  33.             images = assets.list("");  
  34.               
  35.         }catch(IOException e){  
  36.             e.printStackTrace();  
  37.         }  
  38.          
  39.         final Button next = (Button)findViewById(R.id.btnBitmap);  
  40.           
  41.         next.setOnClickListener(new OnClickListener() {  
  42.               
  43.             @Override  
  44.             public void onClick(View v) {  
  45.                 // TODO Auto-generated method stub   
  46.             if(currentImge >= images.length){  
  47.                 currentImge = 0;  
  48.             }  
  49.               
  50.             //找到下一個圖片文件   
  51.             while(!images[currentImge].endsWith(".png")){  
  52.                  currentImge++;  
  53.                 //如果發生數組越界   
  54.                 if(currentImge >= images.length){  
  55.                     currentImge = 0;  
  56.                 }  
  57.             }  
  58.   
  59.             InputStream assetFile = null;  
  60.               
  61.             try{  
  62.                 //打開指定資源對應的輸入流   
  63.                 assetFile = assets.open(images[currentImge++]);  
  64.       
  65.             }catch(IOException e){  
  66.                 e.printStackTrace();  
  67.             }  
  68.             BitmapDrawable bitmapDrawable = (BitmapDrawable)image.getDrawable();  
  69.             //如果圖片還未回收,先強制回收該圖片   
  70.             if(bitmapDrawable !=null && !bitmapDrawable.getBitmap().isRecycled()){  
  71.                 bitmapDrawable.getBitmap().recycle();  
  72.             }  
  73.             //該變現實的圖片   
  74.             image.setImageBitmap(BitmapFactory.decodeStream(assetFile));  
  75.                   
  76.             }  
  77.         });  
  78.     }  
  79. }  

更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11

Copyright © Linux教程網 All Rights Reserved