Android進階2之檢索Android的圖片庫並顯示圖片詳細資料

來源:互聯網
上載者:User


這篇文章,我們將學習如何檢索並顯示媒體庫中的圖片以及每張圖片的詳細資料包括名稱,ID,路徑,大小等等。

關於遊標(cursor)不懂的可以看博文:Android中Cursor類的概念和用法

具體實現:


package xiaosi.photoLibrary;import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.database.Cursor;import android.graphics.Bitmap;import android.graphics.drawable.Drawable;import android.os.Bundle;import android.provider.MediaStore.Images.Media;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ImageView;import android.widget.TextView;/** * 該類完成圖片的檢索,顯示功能 *  * @author Administrator *  */public class PhotoLibraryActivity extends Activity implements OnClickListener{private ImageViewphoto;private Buttonnext= null;private Buttonprevious= null;private Buttonmessage= null;private TextViewposition= null;private Cursorcursor;private intphotoIndex;private intphotoNameIndex;private intphotoIDIndex;private intphotoTitleIndex;private intphotoSizeIndex;private StringMessage= null;private inttotalNum= 0;public void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);init();}private void init(){next = (Button) findViewById(R.id.next);next.setOnClickListener(this);previous = (Button) findViewById(R.id.previous);previous.setOnClickListener(this);message = (Button) findViewById(R.id.message);message.setOnClickListener(this);photo = (ImageView) this.findViewById(R.id.image_view);position = (TextView) findViewById(R.id.number);// 指定擷取的列String columns[] = new String[] { Media.DATA, Media._ID, Media.TITLE, Media.DISPLAY_NAME, Media.SIZE };// 得到一個遊標cursor = this.getContentResolver().query(Media.EXTERNAL_CONTENT_URI, columns, null, null, null);// 擷取指定列的索引photoIndex = cursor.getColumnIndexOrThrow(Media.DATA);photoNameIndex = cursor.getColumnIndexOrThrow(Media.DISPLAY_NAME);photoIDIndex = cursor.getColumnIndexOrThrow(Media._ID);photoTitleIndex = cursor.getColumnIndexOrThrow(Media.TITLE);photoSizeIndex = cursor.getColumnIndexOrThrow(Media.SIZE);// 擷取圖片總數totalNum = cursor.getCount();// 跳到第一個圖片if (cursor.moveToFirst()){setImage();position.setText("(1/" + totalNum + ")");}}@Overridepublic void onClick(View arg0){switch (arg0.getId()){// 下一個case R.id.next:if (cursor.moveToNext()){setImage();}else{cursor.moveToLast();}break;// 上一個case R.id.previous:if (cursor.moveToPrevious()){setImage();}else{cursor.moveToFirst();}break;case R.id.message:// Dialog顯示詳細資料AlertDialog.Builder builder = new AlertDialog.Builder(PhotoLibraryActivity.this);builder.setTitle("詳細資料");builder.setMessage(Message);builder.setPositiveButton("關閉", new android.content.DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int which){dialog.dismiss();}});builder.show();break;}}private void setImage(){// 擷取圖片的NameString name = cursor.getString(photoNameIndex);// 擷取圖片的IDString number = cursor.getString(photoIDIndex);// 擷取圖片的TitleString title = cursor.getString(photoTitleIndex);// 擷取圖片的大小String size = cursor.getString(photoSizeIndex);// 擷取圖片儲存路徑String path = cursor.getString(photoIndex);// 為TextView:position賦值(現在所在的位置)position.setText("(" + number + "/" + totalNum + ")");Message = "Name:" + name + "\n" + "Number:" + number + "\n" + "Title:" + title + "\n" + "Size:" + size + "\n" + "Path:" + path;// 通過路徑擷取圖片Drawable image = Drawable.createFromPath(path);photo.setImageDrawable(image);}}

mian.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:background="@drawable/background"    android:orientation="vertical" >    <LinearLayout        android:layout_width="fill_parent"        android:layout_height="50dip"        android:orientation="horizontal" >        <Button            android:id="@+id/next"            android:layout_width="60dip"            android:layout_height="50dip"            android:background="@drawable/next"            android:paddingLeft="30dip" />        <TextView            android:id="@+id/number"            android:layout_width="100dip"            android:layout_height="50dip"            android:paddingLeft="30dip"             android:textColor="#000000"/>        <Button            android:id="@+id/previous"            android:layout_width="60dip"            android:layout_height="50dip"            android:background="@drawable/previous"            android:paddingLeft="30dip" />        <Button            android:id="@+id/message"            android:layout_width="80dip"            android:layout_height="40dip"            android:paddingLeft="30dip"             android:text="詳情"/>    </LinearLayout>    <ImageView        android:id="@+id/image_view"        android:layout_width="fill_parent"        android:layout_height="fill_parent" /></LinearLayout>



一起見證菜鳥的起飛。。。。。。

要全部工程的說一聲。






相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.