安卓ImageView的几种资源调用方法

时间:2021-12-17 01:00:06

给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要快于setImageDrawablesetImageBitmap.

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);


drawable与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);