Activity跳转时传递Bitmap对象的实现
来源:互联网 发布:mac压缩音乐大小 编辑:程序博客网 时间:2024/05/18 04:08
前言
相信大家可能都了解Activity跳转时我们是可以传递参数的,比如使用Intent传递或者Bundle来传递,把当前Activity的一些信息传递给将要跳转到的新的Activity。但是不知道大家有没有想过,我们能不能传递一个Bitmap对象呢?可能有人会问为什么要传递一个Bitmap对象?好吧,因为我在开发中遇到了这样的问题才去说说这个。
我前段时间想从网络获取图片显示在ImageView上,当显示好了之后,我希望点击ImageView可以跳转到新的Activity然后显示我点击的图片,所以我怎么得到我点击的ImageView上的图片呢?接下来就是我讲述的重点了!
实现
开始不知道该怎么下手,百度了一段时间之后就大概明白了它的思路:
- 得到ImageView对象上的图片,生成Bitmap对象
- 把Bitmap对象转码成字符串
- 把字符串存到SharedPreferences里面
- 在新的Activity里面从SharedPreferences得到转码的字符串
- 把字符串解码成Bitmap对象
- 在ImageView上显示Bitmap图片
思路还是挺简单的,下面我逐一介绍该怎么去实现,代码是死的,很容易就可以实现。
1-> 从ImageView得到Bitmap对象
Bitmap bitmap = ((BitmapDrawable)view.getDrawable()).getBitmap();
2 ->把Bitmap转码成字符串
ByteArrayOutputStream baos = new ByteArrayOutputStream(); bitmap.compress(CompressFormat.PNG, 50,baos); String imageBase64 = new String (Base64.encode(baos.toByteArray(), 0));
3->把字符串存到SharedPreferences里面
SharedPreferences sPreferences = getSharedPreferences("share", Context.MODE_PRIVATE); Editor editor = sPreferences.edit(); editor.putString("iamge", imageBase64); editor.commit();
4->在新的Activity里面从SharedPreferences得到转码的字符串
SharedPreferences sPreferences = getSharedPreferences("share", Context.MODE_PRIVATE); String imageBase64 = sPreferences.getString("image", "");
5->把字符串解码成Bitmap对象
byte[] byte64 = Base64.decode(imageBase64, 0); ByteArrayInputStream bais = new ByteArrayInputStream(byte64); Bitmap bitmap = BitmapFactory.decodeStream(bais);
6->在ImageView上显示Bitmap图片
view.setImageBitmap(bitmap);
总结
步骤也就是那几步,不存在什么不懂的地方,当然如果你问我转码和解码的原理,那我只能说抱歉了,我是真的不知道。还有就是有的人可能会问,在你得到转码的字符串之后,把字符串直接传递过去不就可以了,为什么要保存在SharedPreferences里面呢?额。。这个问题问的好,之前没有想到吧,不过都一样啦,看大家具体怎么使用了,我把这个步骤封装成了一个类,使用起来就比较方便了。
下载源码
- Activity跳转时传递Bitmap对象的实现
- Activity传递Bitmap对象
- Activity之间,Activity与Fragment之间传递Bitmap对象时程序崩溃的原因及解决办法
- 用Intent 对象实现两个(多个)Activity之间的跳转和参数传递
- 使用Intent对象来实现两个(或多个)Activity之间的跳转,并实现在Activity之间传递参数。
- Activity间通过Intent传递Bitmap对象
- Activity跳转时的数据传递
- 实现2个Activity之间跳转及数据的传递
- android初步实现Activity之间的跳转和数据传递
- Activity间跳转传递对象集合List
- Android截屏幕实现,截取屏幕为bitmap,并保存进手机图库,activity之间传递bitmap对象
- Activity间传递Bitmap,startActivityForResult的用法
- Activity之间传递Bitmap
- Activity之间传递bitmap
- Activity传递对象时的注意事项
- Android上在两个Activity之间传递Bitmap对象
- Android上在两个Activity之间传递Bitmap对象
- 不同Activity之间的数据传递---Bundle对象的实现
- 在xcode5中修改整个项目名
- MATLAB R2014b如何换回纯英文界面
- struts2 + jquery + json 进行ajax请求 (struts2)
- s5pv210 linux3.8.3内核移植之二:Uncompressing Linux... done, booting the kernel.问题解决
- 第二章列表和元组
- Activity跳转时传递Bitmap对象的实现
- 基于HTML5 canvas的jQuery刮刮卡效果
- Cain (Arp)获取局域网http及邮箱协议密码
- SDUST - Training F HDU2199 方程求解,二分查找,精度控制
- 软文创意18招之一:挖历史
- POJ1260 Pearls Dynamic Programming
- 【剑指offer】 面试题4: 替换空格
- JAVA中int、String的类型转换
- Xamarin破解后出现闪退处理