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

来源:互联网 发布:centos 6.5 安装php7 编辑:程序博客网 时间:2024/05/22 11:36

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


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