android imageview bitmap 位于底部,android选择图片在ImageView上显示,调用setImageBitmap,如何是好?...

我想选择图片,在ImageView上显示。

先说明一下,百度上搜索一番发现setImageUri这个方法是不建议用的(因为有某种延迟?)

大家都建议使用setImageBitmap这个方法。

我的做法是

点击“选择”按钮后,弹出图片选择界面:

Intent intent=new Intent(Intent.ACTION_OPEN_DOCUMENT);

intent.setType("image/*");

startActivityForResult(intent,1);

然后在返回的结果中显示图片:

public void onActivityResult(int requestCode,int resultCode,Intent data)

{

if(resultCode==Activity.RESULT_OK && requestCode==1)

{

try

{

// 获得图片的uri

Uri originalUri=data.getData();

// 将图片内容解析成字节数组

byte[] mContent=readStream(resolver.openInputStream(Uri.parse(originalUri.toString())));

// 将字节数组转换为ImageView可调用的Bitmap对象

Bitmap myBitmap=getPicFromBytes(mContent,null);

// //把得到的图片绑定在控件上显示

iv.setImageBitmap(myBitmap);

}catch(Exception e)

{

System.out.println(e.getMessage());

}

}

}

跟踪了一下,一切运行顺利,数据也顺利拿到,但是iv.setImageBitmap(myBitmap);之后没有任何反映。。。。

请问各位老师,是否我还有啥操作漏掉了。。。

或者还有其他更好的方法,就请分享给我吧。

readStream(),和getPicFromBytes() 如下:

public static Bitmap getPicFromBytes(byte[] bytes,

BitmapFactory.Options opts) {

if (bytes != null)

if (opts != null)

return BitmapFactory.decodeByteArray(bytes, 0, bytes.length,

opts);

else

return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);

return null;

}

public static byte[] readStream(InputStream inStream) throws Exception {

byte[] buffer = new byte[1024];

int len = -1;

ByteArrayOutputStream outStream = new ByteArrayOutputStream();

while ((len = inStream.read(buffer)) != -1) {

outStream.write(buffer, 0, len);

}

byte[] data = outStream.toByteArray();

outStream.close();

inStream.close();

return data;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值