您的位置:首页 > 其它

从系统图库应用里面选择一个图片加载到界面上

2013-01-27 12:15 585 查看
1.在布局文件增加一个按钮

布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<Button
android:id="@+id/button1"
android:onClick="selectImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="选择图片" />

<ImageView
android:id="@+id/iv"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />

</LinearLayout>


Activity代码

package cn.itcast.loadimage;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;

public class LoadImageActivity extends Activity {
private ImageView iv;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
iv = (ImageView) findViewById(R.id.iv);
}

public void selectImage(View view) {
// 打开系统的图库 获取一个图片
/*
* <intent-filter> <action android:name="android.intent.action.PICK" />
* <category android:name="android.intent.category.DEFAULT" /> <data
* android:mimeType="image/*" /> <data android:mimeType="video/*" />
* </intent-filter>
*/

Intent intent = new Intent();
intent.setAction("android.intent.action.PICK");
intent.addCategory("android.intent.category.DEFAULT");
intent.setType("image/*");
startActivityForResult(intent, 0);

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (data != null) {
// 得到点击图片的uri
Uri uri = data.getData();
iv.setImageURI(uri);
}
super.onActivityResult(requestCode, resultCode, data);
}
}


或者直接通过路径加载图片

Bitmap bitmap  = BitmapFactory.decodeFile("/sdcard/img.JPG");

long endtime = System.currentTimeMillis();
long time = endtime - starttime;
System.out.println("解析图片花费了:"+time);
iv.setImageBitmap(bitmap);


通过以上代码可以看出 加载图片如果比较大是比较耗时的,并且加载多次会有OOM异常

所以我们需要对图片进行压缩成缩略图后显示,例如系统图库 开始加载的图片是比较模糊的而后一段时间后效果突然就清晰了,性质上也是如此,压缩图片代码如下

public void loadImage(View view){
long starttime = System.currentTimeMillis();
//Bitmap bitmap  =BitmapFactory.decodeFile("/sdcard/img.JPG");
BitmapFactory.Options opts = new Options(); //定义图片的解析的参数对象
opts.inSampleSize = 8; //按照原图的1/8进行图片的解析

Bitmap bitmap  = BitmapFactory.decodeFile("/sdcard/img.JPG", opts);

long endtime = System.currentTimeMillis();
long time = endtime - starttime;
System.out.println("解析图片花费了:"+time);
iv.setImageBitmap(bitmap);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐