为了账号安全,请及时绑定邮箱和手机立即绑定

android选择图片在ImageView上显示,调用setImageBitmap,如何是好?

android选择图片在ImageView上显示,调用setImageBitmap,如何是好?

幕布斯7119047 2019-04-10 20:49:20
我想选择图片,在ImageView上显示。先说明一下,百度上搜索一番发现setImageUri这个方法是不建议用的(因为有某种延迟?)大家都建议使用setImageBitmap这个方法。我的做法是点击“选择”按钮后,弹出图片选择界面:Intentintent=newIntent(Intent.ACTION_OPEN_DOCUMENT);intent.setType("image/*");startActivityForResult(intent,1);然后在返回的结果中显示图片:publicvoidonActivityResult(intrequestCode,intresultCode,Intentdata){if(resultCode==Activity.RESULT_OK&&requestCode==1){try{//获得图片的uriUrioriginalUri=data.getData();//将图片内容解析成字节数组byte[]mContent=readStream(resolver.openInputStream(Uri.parse(originalUri.toString())));//将字节数组转换为ImageView可调用的Bitmap对象BitmapmyBitmap=getPicFromBytes(mContent,null);////把得到的图片绑定在控件上显示iv.setImageBitmap(myBitmap);}catch(Exceptione){System.out.println(e.getMessage());}}}跟踪了一下,一切运行顺利,数据也顺利拿到,但是iv.setImageBitmap(myBitmap);之后没有任何反映。。。。请问各位老师,是否我还有啥操作漏掉了。。。或者还有其他更好的方法,就请分享给我吧。readStream(),和getPicFromBytes()如下:publicstaticBitmapgetPicFromBytes(byte[]bytes,BitmapFactory.Optionsopts){if(bytes!=null)if(opts!=null)returnBitmapFactory.decodeByteArray(bytes,0,bytes.length,opts);elsereturnBitmapFactory.decodeByteArray(bytes,0,bytes.length);returnnull;}publicstaticbyte[]readStream(InputStreaminStream)throwsException{byte[]buffer=newbyte[1024];intlen=-1;ByteArrayOutputStreamoutStream=newByteArrayOutputStream();while((len=inStream.read(buffer))!=-1){outStream.write(buffer,0,len);}byte[]data=outStream.toByteArray();outStream.close();inStream.close();returndata;}
查看完整描述

2 回答

?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

有个问题,就是为什么iv.setImageBitmap(bmp);显示不了图片,而我注释了AndroidManifest.xml文件中的users-sdk中的android:targetSdkVersion就会出现了,有什么办法不用注释就显示呢?
                            
查看完整回答
反对 回复 2019-04-10
  • 2 回答
  • 0 关注
  • 329 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信