Android传递Bitmap的两种简单方式及其缺陷
Android传递Bitmap的几种简单方式
一,通过Intent的Bundle。
比如有两个activity,A,B,从A进入B。先在A中将Bitmap写进去:
Resources res=getResources();
Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.ic_launcher); Bundle b = new Bundle();
b.putParcelable("bitmap", bmp); Intent intent = new Intent(this, MainActivity2.class);
intent.putExtras(b);
startActivity(intent);
然后在B中解析、接收Bitmap:
Intent intent=getIntent();
Bundle b=intent.getExtras();
Bitmap bmp=(Bitmap) b.getParcelable("bitmap");
此种传递方式的缺陷:只能传递相对较小适中大小的Bitmap,如果Bitmap大小尺寸过大就会引起代码崩溃。
二,把Bitmap写进字节流。
比如有两个activity,A,B,从A进入B。先在A中将Bitmap写进字节流传递出去:
Resources res=getResources();
Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.ic_launcher);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, baos);
byte[] bytes=baos.toByteArray(); Bundle b = new Bundle();
b.putByteArray("bitmap", bytes); Intent intent = new Intent(this, MainActivity2.class);
intent.putExtras(b);
startActivity(intent);
然后在B中接收Bitmap的字节流并恢复出来:
Intent intent=getIntent();
Bundle b=intent.getExtras();
byte[] bytes=b.getByteArray("bitmap"); Bitmap bmp=BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
此种传递方式的缺陷:缺陷同第一种方式相同。
小结:
以上两种方式均适用于适中、较小图片,如果图片过大如MB量级的,就不能正常工作了。
Android传递Bitmap的两种简单方式及其缺陷的更多相关文章
- Android中BroadcastReceiver的两种注册方式(静态和动态)详解
今天我们一起来探讨下安卓中BroadcastReceiver组件以及详细分析下它的两种注册方式. BroadcastReceiver也就是"广播接收者"的意思,顾名思义,它就是用来 ...
- android位移动画的两种实现方式
在android开发,我们会常常使用到位移动画,普通情况下位移动画有两种实现方式.一种是直接通过java代码去实现,第二种是通过配置文件实现动画,以下是两种动画的基本是用法: 纯Java代码实现: / ...
- android旋转动画的两种实现方式
在android开发,我们会常常使用到旋转动画,普通情况下旋转动画有两种实现方式,一种是直接通过java代码去实现,第二种是通过配置文件实现动画.以下是两种动画的基本是用法: 纯Java代码实现: / ...
- Android中Fragment的两种创建方式
fragment是Activity中用户界面的一个行为或者是一部分.你可以在一个单独的Activity上把多个Fragment组合成为一个多区域的UI,并且可以在多个Activity中再使用.你可以认 ...
- Android开发——弹性滑动的两种实现方式
0. 前言 欢迎转载,转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/52538723 我们在Android开发--View滑动的三 ...
- android中的OnClickListener两种实现方式
android的activity点击事件中,通过OnClickListener来实现,要实现点击事件有两种方式 1.通过定义一个OnClickListener的内部类来实现 The example b ...
- android textView 添加超链接(两种实现方式)
在textView添加超链接,有两种方式,第一种通过HTML格式化你的网址,一种是设置autolink,让系统自动识别超链接,下面为大家介绍下这两种方法的实现 在textView添加超链接,有两种方式 ...
- android 定时请求(两种实现方式)
方式一: Handler + Runnable (借鉴网址:http://stackoverflow.com/questions/6207362/how-to-run-an-async-task-fo ...
- kbmmw中向服务器端传递对象的一种简单方式
运行环境:delphi 10.2+kbmmw 5.6.20 在kbmmw 的老版本中,要向服务器传送一个本地的对象,一般都需要进行一些转换,例如通过序列化的方式. 在新版的kbmmw中这一切都变的很简 ...
随机推荐
- Mac 终端执行JavaScript
创建: 2017/09/16 第一步 打开命令 输入alias jsc="/System/Library/Frameworks/JavaScriptCore.framework/ ...
- Unity项目 - 吃豆人Pacman
项目展示 Github项目地址:Pacman 涉及知识 切片制作 Animations 状态机设置,any state切换,重写状态机 按键读取进行整数距离的刚体移动 用射线检测碰撞性 渲染顺序问题 ...
- ACM_巧克力
Chocolate,Chocolate Time Limit: 2000/1000ms (Java/Others) Problem Description: 都说发神喜欢吃巧克力,有一次发神徒弟买了一 ...
- ios TextField 不被键盘遮住
首先放一个scrollView窗口,将Scroll View视图占整个屏幕. 向Scroll View 添加TextField 控件. 首先,ViewController.h 代码如下; #i ...
- Vue初识:一个前端萌新的总结
一.前言 时隔三年,记得第一次写博客还是2015年了,经过这几年的洗礼,我也从一个后端的小萌新变成现在略懂一点点知识的文青.如今对于前端的东东也算有一知半解,个人能力总的来说,也能够独立开发产品级项目 ...
- Unity学习-摄像机的使用(六)
快速对齐摄像机 [选择摄像机-GameObject-Align With View] Game模板中显示的界面,就是摄像机拍摄后的画面 本次学习案例 添加一个地形,一个点光源,三个Cube 了解摄 ...
- 6.11---multipartfile在哪个jar包下---6.11---uuid---swagger上传图片包错去掉注解响应体
<dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupl ...
- 6.10---mybatis中两张表查询数据dao层
- Gradle的属性Property设置与调用
Gradle在默认情况下已经为Project定义了很多Property: project:Project本身 name:Project的名字 path:Project的绝对路径 description ...
- JS——math
random() 方法可返回介于 0 ~ 1 之间的一个随机数. Math.random() 0.0 ~ 1.0 之间的一个伪随机数,但是不包括0和1.