public class MainActivity extends Activity {private final static int DISPLAY_HEIGHT=200;private final static int DISPLAY_WIDTH=200;@SuppressWarnings("deprecation")protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);    ListView listView = (ListView) findViewById(R.id.img_listview);String[] columns = { Media.DATA};//使用共享内容提供者。Cursor cursor = getContentResolver().query(Media.EXTERNAL_CONTENT_URI, columns, null, null, null);    //构建一个简单的适配器SimpleAdapter  sAdapter = new SimpleAdapter(getApplicationContext(), getImageMap(cursor),                                    R.layout.listview_layout,                                    new String[]{"img"},                                    new int[]{R.id.img});//存入binersAdapter.setViewBinder(new ViewBinder() {@Overridepublic boolean setViewValue(View view, Object data,String textRepresentation) {//判断是否是ImageView类型  if(view instanceof ImageView){  ImageView image = (ImageView) view;  //把map里的value取出来.  String imageFilePath = (String) data;  //显示图像  image.setImageBitmap(getBitmap(imageFilePath));  }return true;}});listView.setAdapter(sAdapter);        }private List<Map<String,Object>> getImageMap(Cursor sc){  List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();  Map<String,Object> map =null;  while(sc.moveToNext()){  map = new HashMap<String,Object>();  map.put("img",sc.getString(0));  System.out.println("image path:"+sc.getString(0));  list.add(map);  }  return list;  }private Bitmap getBitmap(String imageFilePath) {//加载图像的尺寸而不是图像的本身BitmapFactory.Options  opts = new BitmapFactory.Options();opts.inJustDecodeBounds  = true;    Bitmap bp =  BitmapFactory.decodeFile(imageFilePath, opts);int heightRatio  = (int) Math.ceil(opts.outHeight/(float)DISPLAY_HEIGHT);int widthRatio   =(int) Math.ceil(opts.outHeight/(float)DISPLAY_WIDTH);System.out.println("heightRatio :"+heightRatio);System.out.println("widthRatio  :"+widthRatio);//如果两个比率都大于1,那么图像 的一条边大于屏幕if(widthRatio>1&&heightRatio>1){ if(heightRatio>widthRatio) //若高度比率较大,则根据它进行缩放opts.inSampleSize = heightRatio; else  //若宽度比率较大,则根据它进行缩放 opts.inSampleSize = widthRatio;}//-----------------------------------------------------////对它进行解码opts.inJustDecodeBounds =false;bp = BitmapFactory.decodeFile(imageFilePath, opts);    return bp;}}
  


activity_main.xml :文件如下

<LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <ListView android:id="@+id/img_listview"              android:layout_height="wrap_content"              android:layout_width="match_parent"              android:dividerHeight="1dip"/></LinearLayout>


listview_layout.xml 文件如下:

<LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <ListView android:id="@+id/img_listview"              android:layout_height="wrap_content"              android:layout_width="match_parent"              android:dividerHeight="1dip"/></LinearLayout>


更多相关文章

  1. android:编写属性动画程序(旋转,缩放,淡出淡入)
  2. android drawable 使用shape实现复杂图像
  3. android图像处理系列之三--图片色调饱和度、色相、亮度处理
  4. Android 图片缩放与旋转
  5. Android中位图缩放
  6. Android 图片缩放
  7. 让Android自带的Gallery实现多点缩放,拖动和边界回弹效果,效果流畅
  8. Android多媒体开发 Pro Android Media 第一章 Android图像编程入
  9. Android SQLite存取图像

随机推荐

  1. 强大的Python图像处理
  2. 应对职场面试官——(绝佳良药奉上)
  3. PHP 编程中最常见的错误,你犯过几个?(收藏篇
  4. psutil 系统操作利器
  5. Python 操作系统级别模块Psutil
  6. 有哪些可以提高效率的Git技巧
  7. 小编教你:kartik-v/yii2-grid小部件扩展如
  8. MySQL Trace 案例解析
  9. 如何成为一个优秀的架构师
  10. Java应用程序性能调优技术