给ImageView添加资源有好几种几种形式,这篇文章就是对这几种形式的详解。
<ImageView android:id="@+id/iv1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/longshuai" <!-- longshuai.png为图片的名称,记在资源文件里头,不用文件名后缀-->/>
提示:强调一下,资源文件的图片命名规则比较严格,由[a-z]和数字和“_”组成,而且不能数字开头,我就常犯傻,命名老是数字或者大写字母开头,这种错误。
ImageView iv= (ImageView)this.findViewById(R.id.iv1);
直接通过APP内部资源
1.iv.setImageResource(R.drawable.icon)
2.iv.setImageDrawable(getResources().getDrawable(R.drawable.icon)
setImageResource是同步的,资源图片的读取和解码都是在主线程中进行的.setImageDrawable是异步的,加载速度的区别。
setImageResource要快于setImageDrawable和setImageBitmap.
iv.setScaleType(ImageView.ScaleType.FIT_XY); //为imageview设定尺寸形式
iv.setLayoutParams(new Gallery.LayoutParams(136,88));//为imageview设置大小
直接通过系统文件路径
3.String fileName = "/data/data/com.test/aa.png;
Bitmap bm = BitmapFactory.decodeFile(fileName);
也可以=BitmapFactory.decodeResource(getResources(),R.drawable.location_marker));
iv.setImageBitmap(bm);
通过SD卡上获得路径URI变成bitmap
4.Uri uri = data.getData();
ContentResolver cr=getContentResolver();
bitmap= MediaStore.Images.Media.getBitmap(cr, uri);
或者
InputStream is=cr.openInputStream(uri);
bitmap=BitmapFactory.decodeStream(is);
iv.setimageBitmap(bitmap);
将 Drable 对象先转化成 BitmapDrawable ,然后调用 getBitmap 方法 获取
Resource res = gerResource();
Drawable drawable = res.getDrawable(R.drawable.ic_drawable);//获取drawable
BitmapDrawable bd = (BitmapDrawable) drawable;
Bitmap bm = bd.getBitmap();
Bitmap 转换成 Drawable
使用 BitmapDrawable 对 Bitmap 进行强制转换
Drawable drawable = new BitmapDrawable(bmp);
文件转drawable
BitmapDrawable.createFromPath(文件地址)
URI扩展
bitmap和URI互换
Uri uri = Uri.parse(MediaStore.Images.Media.insertImage(getContentResolver(), bitmap, null,null));
Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), uri);
文件和URI互换
将文件转为URI
Uri.parse("file://"+ file.getAbsolutePath())
或者Uri.fromFile(file);
将URI转为文件
1.private File uri2File(Uri uri) { 2. File file = null; String[] proj = { MediaStore.Images.Media.DATA }; 3.Cursor actualimagecursor = getActivity().managedQuery(uri, proj, null, null, null); 4. int actual_image_column_index = actualimagecursor 5. .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 6. actualimagecursor.moveToFirst(); 7. String img_path = actualimagecursor 8. .getString(actual_image_column_index); 9. file = new File(img_path); 10. return file; 11. }
通过网络路径获取图片
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5555);// 设置连接网络超时时间
conn.setRequestMethod("GET");// 设置 URL 请求的方法,
InputStream is = conn.getInputStream();
Bitmap bitmap = BitmapFactory.decodeStream(is);