編輯:Android開發實例
上一篇中實例講解了Android中的Camera的調用和圖片的存儲,這篇文章,我們將學習如何檢索並顯示媒體庫中的圖片。
這裡有個問題需要注意,如果你在模擬器已經啟動的情況下,push了幾張圖片到SDCard中,建議將模擬器關了,再重新啟動
一下,否則,剛剛添加的圖片,是沒有辦法獲取到的。這是因為Android是在系統啟動的時候來掃描模擬器上SDCard中多媒體文件的。
閒話少說,看代碼:
- package demo.camera;
- import android.app.Activity;
- import android.database.Cursor;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.os.Bundle;
- import android.provider.MediaStore.Images.Media;
- import android.util.Log;
- import android.view.View;
- import android.widget.ImageButton;
- import android.widget.TextView;
- /**
- * 該類完成圖片的檢索,顯示功能
- * @author Administrator
- *
- */
- public class PhotoManager extends Activity {
- public static final float DISPLAY_WIDTH = 200;
- public static final float DISPLAY_HEIGHT = 200;
- //這裡采用ImageButton的原因是有Button的作用
- private ImageButton photoView;
- private TextView nameView;
- private Cursor cursor;
- private String photoPath; //存放某張圖片對應的位置信息
- private Bitmap currPhoto;
- //這三個變量主要用來保存Media.DATA,Media.TITLE,Media.DISPLAY_NAME的索引號,來獲取每列的數據
- private int photoIndex;
- //private int titleIndex;
- private int nameIndex;
- public void onCreate(Bundle savedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.photo_view);
- photoView = (ImageButton)this.findViewById(R.id.image_view);
- photoView.setOnClickListener(clickListener);
- nameView = (TextView)this.findViewById(R.id.view_name);
- //指定獲取的列
- String columns[] = new String[]{
- Media.DATA,Media._ID,Media.TITLE,Media.DISPLAY_NAME
- };
- //cursor = this.managedQuery(Media.EXTERNAL_CONTENT_URI, columns, null, null, null);
- cursor = this.getContentResolver().query(Media.EXTERNAL_CONTENT_URI, columns, null, null, null);
- photoIndex = cursor.getColumnIndexOrThrow(Media.DATA);
- //titleIndex = cursor.getColumnIndexOrThrow(Media.TITLE);
- nameIndex = cursor.getColumnIndexOrThrow(Media.DISPLAY_NAME);
- Log.v("HERE First:", "First Debug");
- //顯示第一張圖片,但是首先要判斷一下,Cursor是否有值
- if(cursor.moveToFirst()){
- showImage();
- }
- }
- private View.OnClickListener clickListener = new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if(cursor.moveToNext()){
- showImage();
- }
- }
- };
- /**
- * 顯示圖像信息
- */
- private void showImage(){
- photoPath = cursor.getString(photoIndex); //這裡獲取到的就是圖片存儲的位置信息
- //這裡怎樣獲取圖片呢?看decodeBitmap
- Log.v("Photo Path:", photoPath);
- currPhoto = decodeBitmap(photoPath);
- photoView.setImageBitmap(currPhoto);
- nameView.setText(cursor.getString(nameIndex));
- }
- /**
- * 從path中獲取圖片信息
- * @param path
- * @return
- */
- private Bitmap decodeBitmap(String path){
- BitmapFactory.Options op = new BitmapFactory.Options();
- op.inJustDecodeBounds = true;
- Bitmap bmp = BitmapFactory.decodeFile(path, op); //獲取尺寸信息
- //獲取比例大小
- int wRatio = (int)Math.ceil(op.outWidth/DISPLAY_WIDTH);
- int hRatio = (int)Math.ceil(op.outHeight/DISPLAY_HEIGHT);
- //如果超出指定大小,則縮小相應的比例
- if(wRatio > 1 && hRatio > 1){
- if(wRatio > hRatio){
- op.inSampleSize = wRatio;
- }else{
- op.inSampleSize = hRatio;
- }
- }
- op.inJustDecodeBounds = false;
- bmp = BitmapFactory.decodeFile(path, op);
- return bmp;
- }
- }
本文實例總結了Android編程中圖片特效處理方法。分享給大家供大家參考,具體如下: 這裡介紹的Android圖片處理方法包括: 轉換 - drawa
這篇文章主要為大家詳細介紹了Android實現頂部導航菜單左右滑動效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下 本文給大家介紹在Android中如何實現頂部導
一、軟鍵盤介紹 實現軟鍵盤主要用到了系統的兩個類:Keyboard和KeyboardView。 Keyboard類源碼的介紹是: Listene
Android提供了許多方法來控制播放的音頻/視頻文件和流。其中該方法是通過一類稱為MediaPlayer。Android是提供MediaPlayer類訪問內置的媒體播放