在两个Activity之前传递图片数据

文章来源:http://blog.csdn.net/yu413854285/article/details/7302665

在android中页面与页面之间的数据传递,我们一般都是使用Intent,但是Intent有时候也不是很好,就比如在一个Activity中传递一个图片到另一个Activity,也可以使用Intent来传,但是图片的大小却限定的很小,似乎只有512K还是1M,而如果我们想传再大一点的图片..对不起..程序就报异常了.虽然直接使用Inetnt传行不通,但是有别的办法的.下面有几个方法:


1.用intent传递这个Bitmap的byte[](就是图像信息,在此要注意,Bitmap是一个位图对象,里头有你的图片...而不单单是一张图片,里头还包含了很多方法..如果你是一个新手的话,千万要注意,java是一个面向对象的语言).
[java]  view plain copy
  1. private byte[] Bitmap2Bytes(Bitmap bm){    
  2.      ByteArrayOutputStream baos = new ByteArrayOutputStream();      
  3.      bm.compress(Bitmap.CompressFormat.JPEG, 100, baos);      
  4.      return baos.toByteArray();    
  5.    }  
转换Bitmap 为  byte[]
byte buff[] = new byte[1024*1024];//看你图有多大..自己看着改
buff = Bitmap2Bytes(LZbitmap);//这里的LZbitmap是Bitmap类的,跟第一个方法不同
在intent传递时:
Intent myIntent = new Intent();
myIntent.putExtra("bitmap",buff);
第二个activity:
Intent myIntent = getIntent();
byte buff[] = myIntent.getSerializableExtra("bitmap");
Bitmap bmp=BitmapFactory.decodeByteArray(buff, 0, buff.length);//重新编码出Bitmap对象

2.用全局变量的方法.
全局变量有两种办法,一种是创建一个类,一个设置一个静态的成员变量..然后申明两个方法来获取和设置..
如下(这也是java的常用方法):
[java]  view plain copy
  1. public class myBitmapStore {  
  2.    static private Bitmap bmp=null;//一定要是static的才行..  
  3.       static void setBitmap(Bitmap bmp){  
  4.       this.bmp = bmp;  
  5.   }  
  6.   static Bitmap getBitmap(){  
  7.       return this.bmp;  
  8.   }  
  9. }  
这个的传递就不用Intent了,在要传递之前:
myBitmapStore.setBitmap(LZbitmap);
在第二个activity:
Bitmap bmp = myBitmapStore.getBitmap();
::::::::::::::::::::
另一种全局变量的方法是android独有的..
我就不写代码了,同上一个类似...
这里就说一下使用方法..
创建一个类extends Application,注意:这个类必须是public
[java]  view plain copy
  1. public class myApp extends Application{  
  2. //然后在这里头申明Bitmap变量..不必是static..因为这个类最终是会被系统实例化的..  
  3. }  
要注意在manifest里头指定这个类:
<application 
     android:name="myApp">
<!-- 在application标签的name属性里头填上这个类.. -->
然后在程序里使用的时候,就是:
myApp myapp = (myApp)getApplication();//获得这个myApp的对象..
Bitmap bmp = myapp.GetBitmap();//具体方法的实现,自己写..跟前面那个一样..
然后怎么做,同上面很类似..自己推敲推敲...
PS:这两种方法的区别就是,一个是类中静态的方法和成员,而一个是被实例化了的类..
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值