這篇文章以"從SD Card加載圖像視圖(ImageView)"為例, 首先檢查源位圖的大小, 通過BitmapFactory.Options設置inSampleSize, 這樣做可以減少對系統資源的要求.

先把較大的圖片文件複製到SD Card中.
main.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <?xml version="1.0" encoding="utf-8"?>android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/hello"/><ImageViewandroid:id="@+id/imageview"android:layout_gravity="center"android:layout_width="fill_parent"android:layout_height="fill_parent"android:scaleType="center"/></LinearLayout> |
Java源代碼
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | package com.AndroidImage;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.widget.ImageView;import android.widget.Toast;public class AndroidImage extends Activity {private String imageFile = "/sdcard/AndroidSharedPreferencesEditor.png";/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main); ImageView myImageView = (ImageView)findViewById(R.id.imageview);//Bitmap bitmap = BitmapFactory.decodeFile(imageFile);//myImageView.setImageBitmap(bitmap);Bitmap bitmap;float imagew = 300;float imageh = 300;BitmapFactory.Options bitmapFactoryOptions = new BitmapFactory.Options();bitmapFactoryOptions.inJustDecodeBounds = true;bitmap = BitmapFactory.decodeFile(imageFile, bitmapFactoryOptions);int yRatio = (int)Math.ceil(bitmapFactoryOptions.outHeight/imageh);int xRatio = (int)Math.ceil(bitmapFactoryOptions.outWidth/imagew);if (yRatio > 1 || xRatio > 1){ if (yRatio > xRatio) { bitmapFactoryOptions.inSampleSize = yRatio; Toast.makeText(this, "yRatio = " + String.valueOf(yRatio), Toast.LENGTH_LONG).show(); } else { bitmapFactoryOptions.inSampleSize = xRatio; Toast.makeText(this, "xRatio = " + String.valueOf(xRatio), Toast.LENGTH_LONG).show(); }}else{ Toast.makeText(this, "inSampleSize = 1", Toast.LENGTH_LONG).show();}bitmapFactoryOptions.inJustDecodeBounds = false;bitmap = BitmapFactory.decodeFile(imageFile, bitmapFactoryOptions);myImageView.setImageBitmap(bitmap);}} |
沒有留言:
張貼留言