Android检索图像
16lz
2021-01-23
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>
更多相关文章
- android:编写属性动画程序(旋转,缩放,淡出淡入)
- android drawable 使用shape实现复杂图像
- android图像处理系列之三--图片色调饱和度、色相、亮度处理
- Android 图片缩放与旋转
- Android中位图缩放
- Android 图片缩放
- 让Android自带的Gallery实现多点缩放,拖动和边界回弹效果,效果流畅
- Android多媒体开发 Pro Android Media 第一章 Android图像编程入
- Android SQLite存取图像