日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
    1. 西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
      軟件
      軟件
      文章
      搜索

      首頁(yè)編程開(kāi)發(fā)Android → 安卓編程怎么實(shí)現(xiàn)獲取本機(jī)中所有圖片

      安卓編程怎么實(shí)現(xiàn)獲取本機(jī)中所有圖片

      相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:hanyonglu時(shí)間:2012/5/10 22:44:40字體大。A-A+

      作者:hanyonglu點(diǎn)擊:256次評(píng)論:0次標(biāo)簽: 安卓

      • 類型:休閑益智大。113M語(yǔ)言:中文 評(píng)分:10.0
      • 標(biāo)簽:
      立即下載

      本示例演示如何在Android中實(shí)現(xiàn)獲取本機(jī)中的所有圖片,并進(jìn)行查看效果。

        在這個(gè)示例中,我使用android-support-v4.jar中的加載器來(lái)實(shí)現(xiàn)獲取本機(jī)中所有圖片,關(guān)于這個(gè)包在以前的文章中也提到,是一個(gè)非常有用的包。

        先讓我們看下本示例實(shí)現(xiàn)的效果圖:

       

        項(xiàng)目結(jié)構(gòu)圖如下所示:

        MyDevicePhotoActivity.java文件中代碼如下:

      package com.device.photo;

      import android.app.Dialog;
      import android.content.ContentResolver;
      import android.database.Cursor;
      import android.graphics.Bitmap;
      import android.net.Uri;
      import android.os.Bundle;
      import android.provider.MediaStore;
      import android.view.View;
      import android.view.View.OnClickListener;
      import android.widget.AdapterView;
      import android.widget.Button;
      import android.widget.ImageView;
      import android.widget.ListView;
      import android.widget.TextView;
      import android.widget.AdapterView.OnItemClickListener;

      import android.support.v4.app.FragmentActivity;
      import android.support.v4.app.LoaderManager.LoaderCallbacks;
      import android.support.v4.content.CursorLoader;
      import android.support.v4.content.Loader;
      import android.support.v4.widget.SimpleCursorAdapter;
      import android.support.v4.widget.SimpleCursorAdapter.ViewBinder;

      /**
      * Android實(shí)現(xiàn)獲取本機(jī)中所有圖片
      * @Description: Android實(shí)現(xiàn)獲取本機(jī)中所有圖片

      * @FileName: MyDevicePhotoActivity.java

      * @Package com.device.photo

      * @Author Hanyonglu

      * @Date 2012-5-10 下午04:43:55

      * @Version V1.0
      */
      public class MyDevicePhotoActivity extends FragmentActivity implements LoaderCallbacks<Cursor>{
          private Bitmap bitmap = null;
          private byte[] mContent = null;
         
          private ListView listView = null;
          private SimpleCursorAdapter simpleCursorAdapter = null;
         
          private static final String[] STORE_IMAGES = {
              MediaStore.Images.Media.DISPLAY_NAME,
              MediaStore.Images.Media.LATITUDE,
              MediaStore.Images.Media.LONGITUDE,
              MediaStore.Images.Media._ID
          };
         
          /** Called when the activity is first created. */
          @Override
          public void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.main);
             
              listView = (ListView)findViewById(android.R.id.list);
              simpleCursorAdapter = new SimpleCursorAdapter(
                      this,
                      R.layout.simple_list_item,
                      null,
                      STORE_IMAGES,
                      new int[] { R.id.item_title, R.id.item_value},
                      0
                      );
             
              simpleCursorAdapter.setViewBinder(new ImageLocationBinder());
              listView.setAdapter(simpleCursorAdapter);
              // 注意此處是getSupportLoaderManager(),而不是getLoaderManager()方法。
              getSupportLoaderManager().initLoader(0, null, this);
             
              // 單擊顯示圖片
              listView.setOnItemClickListener(new ShowItemImageOnClickListener());
          }
         
          @Override
          public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
              // TODO Auto-generated method stub
              // 為了查看信息,需要用到CursorLoader。
              CursorLoader cursorLoader = new CursorLoader(
                      this,
                      MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                      STORE_IMAGES,
                      null,
                      null,
                      null);
              return cursorLoader;
          }
         
          @Override
          public void onLoaderReset(Loader<Cursor> arg0) {
              // TODO Auto-generated method stub
              simpleCursorAdapter.swapCursor(null);
          }
         
          @Override
          public void onLoadFinished(Loader<Cursor> arg0, Cursor cursor) {
              // TODO Auto-generated method stub
              // 使用swapCursor()方法,以使舊的游標(biāo)不被關(guān)閉.
              simpleCursorAdapter.swapCursor(cursor);
          }
         
          // 將圖片的位置綁定到視圖
          private class ImageLocationBinder implements ViewBinder{
              @Override
              public boolean setViewValue(View view, Cursor cursor, int arg2) {
                  // TODO Auto-generated method stub
                  if (arg2 == 1) {
                      // 圖片經(jīng)度和緯度
                      double latitude = cursor.getDouble(arg2);
                      double longitude = cursor.getDouble(arg2 + 1);
                     
                      if (latitude == 0.0 && longitude == 0.0) {
                          ((TextView)view).setText("位置:未知");
                      } else {
                          ((TextView)view).setText("位置:" + latitude + ", " + longitude);
                      }
                     
                      // 需要注意:在使用ViewBinder綁定數(shù)據(jù)時(shí),必須返回真;否則,SimpleCursorAdapter將會(huì)用自己的方式綁定數(shù)據(jù)。
                      return true;
                  } else {
                      return false;
                  }
              }
          }
         
          // 單擊項(xiàng)顯示圖片事件監(jiān)聽(tīng)器
          private class ShowItemImageOnClickListener implements OnItemClickListener{
              @Override
              public void onItemClick(AdapterView<?> parent, View view, int position,
                      long id) {
                  // TODO Auto-generated method stub
                  final Dialog dialog = new Dialog(MyDevicePhotoActivity.this);
                  // 以對(duì)話框形式顯示圖片
                  dialog.setContentView(R.layout.image_show);
                  dialog.setTitle("圖片顯示");

                  ImageView ivImageShow = (ImageView) dialog.findViewById(R.id.ivImageShow);
                  Button btnClose = (Button) dialog.findViewById(R.id.btnClose);

                  btnClose.setOnClickListener(new OnClickListener() {
                     
                      @Override
                      public void onClick(View v) {
                          dialog.dismiss();
                      }
                     
                  });
                 
                  Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI.buildUpon().
                            appendPath(Long.toString(id)).build();
                  FileUtil file = new FileUtil();
                  ContentResolver resolver = getContentResolver();
                 
                  // 從Uri中讀取圖片資源
                  try {
                      mContent = file.readInputStream(resolver.openInputStream(Uri.parse(uri.toString())));
                      bitmap = file.getBitmapFromBytes(mContent, null);
                      ivImageShow.setImageBitmap(bitmap);
                  } catch (Exception e) {
                      // TODO: handle exception
                      e.printStackTrace();
                  }

                  dialog.show();
              }
          }
      }

      FileUtil.java文件主要是對(duì)圖片資源的處理。代碼如下:

      package com.device.photo;

      import java.io.ByteArrayOutputStream;
      import java.io.InputStream;

      import android.graphics.Bitmap;
      import android.graphics.BitmapFactory;

      /**
      * 文件操作類
      * @Description: 文件操作類

      * @FileName: FileUtil.java

      * @Package com.device.photo

      * @Author Hanyonglu

      * @Date 2012-5-10 下午01:37:49

      * @Version V1.0
      */
      public class FileUtil {
          public FileUtil() {
              // TODO Auto-generated constructor stub
          }
         
          /**
           * InputStream to byte
           * @param inStream
           * @return
           * @throws Exception
           */
          public byte[] readInputStream(InputStream inStream) throws Exception {
              byte[] buffer = new byte[1024];
              int len = -1;
              ByteArrayOutputStream outStream = new ByteArrayOutputStream();
             
              while ((len = inStream.read(buffer)) != -1) {
                  outStream.write(buffer, 0, len);
              }
             
              byte[] data = outStream.toByteArray();
              outStream.close();
              inStream.close();
             
              return data;
         }
         
         /**
          * Byte to bitmap
          * @param bytes
          * @param opts
          * @return
          */
         public Bitmap getBitmapFromBytes(byte[] bytes, BitmapFactory.Options opts) {
             if (bytes != null){
                 if (opts != null){
                     return BitmapFactory.decodeByteArray(bytes, 0, bytes.length,opts);
                 }
                 else{
                     return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
                 }
             }
            
             return null;
         }
      }

        相關(guān)評(píng)論

        閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

        • 8 喜歡喜歡
        • 3 頂
        • 1 難過(guò)難過(guò)
        • 5 囧
        • 3 圍觀圍觀
        • 2 無(wú)聊無(wú)聊

        熱門評(píng)論

        最新評(píng)論

        發(fā)表評(píng)論 查看所有評(píng)論(0)

        昵稱:
        表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
        字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)