Android检索图像

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});
		//存入biner
		sAdapter.setViewBinder(new ViewBinder() {
			@Override
			public 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>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值