注意:如果你在模拟器已经启动的情况下,push了几张图片到SDCard中[试过:mnt/sdcard/Picture路径下],建议将模拟器关了,再重新启动一下,否则,刚刚添加的图片,是没有办法获取到的。这是因为Android是在系统启动的时候来扫描模拟器上SDCard中多媒体文件的。


代码:

[java] view plain copy print ?
  1. importandroid.app.Activity;
  2. importandroid.database.Cursor;
  3. importandroid.graphics.Bitmap;
  4. importandroid.graphics.BitmapFactory;
  5. importandroid.os.Bundle;
  6. importandroid.provider.MediaStore.Images.Media;
  7. importandroid.util.Log;
  8. importandroid.view.View;
  9. importandroid.widget.ImageButton;
  10. importandroid.widget.TextView;
  11. publicclassPhotoManageextendsActivity{
  12. privatestaticfinalfloatDISPLAY_WIDTH=200;
  13. privatestaticfinalfloatDISPLAY_HEIGHT=200;
  14. privateImageButtonphotoView;
  15. privateTextViewnameView;
  16. privateCursorcursor;
  17. privateStringphotoPath;
  18. privateBitmapcurrPhoto;
  19. //三个变量用来保存Media.DATA,Media.TITLE,Media.DISPLAY_NAME的索引号,来获取每列的数据
  20. privateintphotoIndex;
  21. privateintnameIndex;
  22. @Override
  23. publicvoidonCreate(BundlesavedInstanceState){
  24. super.onCreate(savedInstanceState);
  25. setContentView(R.layout.main);
  26. photoView=(ImageButton)this.findViewById(R.id.image_view);
  27. photoView.setOnClickListener(clickListener);
  28. nameView=(TextView)this.findViewById(R.id.view_name);
  29. //指定获取的列
  30. Stringcolumns[]=newString[]{
  31. Media.DATA,Media._ID,Media.TITLE,Media.DISPLAY_NAME
  32. };
  33. cursor=this.getContentResolver().query(Media.EXTERNAL_CONTENT_URI,columns,null,null,null);
  34. photoIndex=cursor.getColumnIndexOrThrow(Media.DATA);
  35. nameIndex=cursor.getColumnIndexOrThrow(Media.DISPLAY_NAME);
  36. Log.v("HEREFirst:","FirstDebug");
  37. //显示第一张图片,但是首先要判断一下,Cursor是否有值
  38. if(cursor.moveToFirst()){
  39. showImage();
  40. }
  41. }
  42. privateView.OnClickListenerclickListener=newView.OnClickListener(){
  43. @Override
  44. publicvoidonClick(Viewv){
  45. //TODOAuto-generatedmethodstub
  46. if(cursor.moveToNext()){
  47. showImage();
  48. }
  49. }
  50. };
  51. /**
  52. *显示图像
  53. */
  54. privatevoidshowImage(){
  55. photoPath=cursor.getString(photoIndex);//获取图片存储位置
  56. Log.v("PhotoPath:",photoPath);
  57. currPhoto=decodeBitmap(photoPath);
  58. photoView.setImageBitmap(currPhoto);
  59. nameView.setText(cursor.getString(nameIndex));
  60. }
  61. /**
  62. *从path中获取图片信息
  63. *@parampath
  64. *@return
  65. */
  66. privateBitmapdecodeBitmap(Stringpath){
  67. BitmapFactory.Optionsop=newBitmapFactory.Options();
  68. op.inJustDecodeBounds=true;
  69. Bitmapbmp=BitmapFactory.decodeFile(path,op);//获取尺寸信息
  70. //获取比例大小
  71. intwRatio=(int)Math.ceil(op.outWidth/DISPLAY_WIDTH);
  72. inthRatio=(int)Math.ceil(op.outHeight/DISPLAY_HEIGHT);
  73. //如果超出指定大小,则缩小相应的比例
  74. if(wRatio>1&&hRatio>1){
  75. if(wRatio>hRatio){
  76. op.inSampleSize=wRatio;
  77. }else{
  78. op.inSampleSize=hRatio;
  79. }
  80. }
  81. op.inJustDecodeBounds=false;
  82. bmp=BitmapFactory.decodeFile(path,op);
  83. returnbmp;
  84. }
  85. }
main.xml:

[html] view plain copy print ?
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="vertical">
  6. <ImageButton
  7. android:id="@+id/image_view"
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"/>
  10. <TextView
  11. android:id="@+id/view_name"
  12. android:layout_width="fill_parent"
  13. android:layout_height="wrap_content"/>
  14. </LinearLayout>

更多相关文章

  1. Pyqt adb 获取Android手机屏幕
  2. Android的ImageButton问题
  3. Android(安卓)scaleType属性与ImagView中图片的显示的关系
  4. Android开发需要掌握的10个工具
  5. Android(安卓)拍照:如何使用已有相机应用捕获图片(Taking Photos S
  6. android和OPhone模拟器界面对比
  7. Android中 在显示ImageView时图片上面和下面都出现一段空白区间
  8. Android自动化工具Monkeyrunner使用(一)
  9. Android画图并保存图片到本地

随机推荐

  1. Android中Dialog对话框
  2. scrollView嵌套recyclerView 显示不全
  3. Android总结篇系列:Android(安卓)权限
  4. Android(安卓)WebView
  5. EditText设置键盘操作
  6. android MotionEvent中getX()和getRawX()
  7. android ImageView scaleType属性
  8. 圆圈里面是个叉号
  9. Android(安卓)Building System 分析
  10. mainfest文件中android属性