Android:将View的内容映射成Bitmap转图片导出

原创 2012年11月13日 16:22:18

前段时间在网上看到这么个例子是将view映射到一个bitmap中,稍加改进可以用于一些截图工具或者截图软件(QQ截图之类),例子写的不够完善,不过很有些学习的意义内容大致如下:

在Android中自有获取view中的cache内容,然后将内容转换成bitmap,方法名是:getDrawingCache(),返回结果为Bitmap,但是刚开始使用的时候,得到的结果都是null,所以在一个论坛里查到了正确的使用方法.代码如下:

contentLayout.setDrawingCacheEnabled(true);    

        contentLayout.measure(    

               MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),    

                MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));    

       contentLayout.layout(0, 0, contentLayout.getMeasuredWidth(),    

                contentLayout.getMeasuredHeight());    

  

     contentLayout.buildDrawingCache();    

          

      Bitmap bitmap= contentLayout.getDrawingCache();   

 

在使用的时候调用

Bitmap bitmap = view.getDrawingCache();

就可以得到图片的bitmap了。

为了测试这个功能,作者使用了两种方式来创建LinerLayout中的内容,一种是在xml文件中就将view的内容添加了,只需在代码中添加对应ImageView中的图片就行了;另一种是动态添加LinerLayout中的View。


setview的代码:

public void onCreate(Bundle savedInstanceState) {    

    super.onCreate(savedInstanceState);    

    setContentView(R.layout.set_view);    

    contentLayout = (LinearLayout) findViewById(R.id.content);    

    imgSource1 = (ImageView) findViewById(R.id.imgSource1);    

    imgSource2 = (ImageView) findViewById(R.id.imgSource2);    

    imgCache = (ImageView) findViewById(R.id.imgCache);    

   

   imgSource1.setImageResource(R.drawable.source1);    

    imgSource2.setImageResource(R.drawable.source2);    

       

    contentLayout.setDrawingCacheEnabled(true);    

    contentLayout.measure(    

            MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),    

            MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));    

    contentLayout.layout(0, 0, contentLayout.getMeasuredWidth(),    

            contentLayout.getMeasuredHeight());    

   

    contentLayout.buildDrawingCache();    

        

    Bitmap bitmap= contentLayout.getDrawingCache();    

    if(bitmap!=null){    

        imgCache.setImageBitmap(bitmap);    

    }else{    

        Log.i("CACHE_BITMAP", "DrawingCache=null");    

    }    

}   

第二种方法代码:

 

private void addRelativeLayout() {    

        // TODO Auto-generated method stub    

        RelativeLayout.LayoutParams layoutpare = new RelativeLayout.LayoutParams(    

                LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);    

  

        RelativeLayout relativeLayout = new RelativeLayout(this);    

        relativeLayout.setLayoutParams(layoutpare);    

   

        ImageView imgView1 = new ImageView(this);    

        ImageView imgView2 = new ImageView(this);    

        imgView1.setImageResource(R.drawable.source1);    

        imgView2.setImageResource(R.drawable.source2);    

        RelativeLayout.LayoutParams img1 = new RelativeLayout.LayoutParams(38,    

                38);    

        img1.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);    

        RelativeLayout.LayoutParams img2 = new RelativeLayout.LayoutParams(38,    

                38);    

        img2.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE);    

   

        relativeLayout.addView(imgView1, img1);    

        relativeLayout.addView(imgView2, img2);    

        addViewContent.addView(relativeLayout);    

    }    

   

    /**   

     * 添加图片源   

     */   

   private void addImgSource() {    

        ImageView imgView1 = new ImageView(this);    

        ImageView imgView2 = new ImageView(this);    

        imgView1.setImageResource(R.drawable.source1);    

        imgView2.setImageResource(R.drawable.source2);    

        addViewContent.addView(imgView1, new LayoutParams(    

                LinearLayout.LayoutParams.WRAP_CONTENT,    

                LinearLayout.LayoutParams.WRAP_CONTENT));    

        addViewContent.addView(imgView2, new LayoutParams(    

                LinearLayout.LayoutParams.WRAP_CONTENT,    

                LinearLayout.LayoutParams.WRAP_CONTENT));    

    }


Android:将View的内容映射成Bitmap转图片导出

前段时间在网上看到这么个例子是将view映射到一个bitmap中,稍加改进可以用于一些截图工具或者截图软件(QQ截图之类),例子写的不够完善,不过很有些学习的意义内容大致如下: 在Android...
  • yangxi_001
  • yangxi_001
  • 2014年07月28日 10:20
  • 1131

将View的内容映射成Bitmap转图片导出

将view映射到一个bitmap中,稍加改进可以用于一些截图工具或者截图软件(QQ截图之类),例子写的不够完善,不过很有些学习的意义内容大致如下: 在Android中自有获取view中的cac...
  • jianpengxuexikaifa
  • jianpengxuexikaifa
  • 2014年03月12日 14:35
  • 7816

Android:将View的内容映射成Bitmap

最近在做一个类似于游标的东西,由一个类似于seekbar的view来控制下端view内容的显示位置。所以需要将view中的内容映射成一张图片,设为seekbar的背景。所以就做了一些尝试,不过还有一些...
  • fancylovejava
  • fancylovejava
  • 2014年03月18日 09:29
  • 865

关于View转化成bitmap保存成图片

产品今天说项目分享时要分享出一张  封面图片 + 几行文字 + 二维码图片 的图片。 思索了一下 封面图片和二维码图片让后台给接口得到地址, 主要还是找个方式得到一个包含这些内容的图片。于是就想能不...
  • a450479378
  • a450479378
  • 2016年11月08日 14:24
  • 3879

把View转化成Bitmap的方法

方法一: /** * 把View绘制到Bitmap上 * @param view 需要绘制的View * @param width 该View的宽度 * @param height 该Vie...
  • chenshijun0101
  • chenshijun0101
  • 2014年07月21日 19:30
  • 15558

Android中view转换为bitmap为null解决方案

前言我们经常会用到将一个View转换为Bitmap的情景,比如截屏保存到本地,比如一些动态的实时View为便于观察和记录数据、需要临时生成静态的Bitmap等等。 我们一般都会这样写:public ...
  • aiynmimi
  • aiynmimi
  • 2017年01月19日 19:01
  • 1722

Android 截取View,获取View的Bitmap的方法

需求 用户在一个Layout中编辑文字和图片。当用户点击保存按钮时,需要将layout里的所有view以一张图片的形式保存并显示。 这篇文章主要说的是如何获取View的Bitmap。bitmap的保存...
  • c15522627353
  • c15522627353
  • 2017年01月11日 12:00
  • 1974

Android图片二进制与Bitmap、Drawable之间的转换

Android图片二进制与Bitmap、Drawable之间的转换 Java代码 public byte[] getBitmapByte(Bitmap bitmap){ ByteArr...
  • quentain
  • quentain
  • 2015年12月02日 21:26
  • 1300

android-----解决Bitmap内存溢出的一种方法(图片压缩技术)

我们在平常使用Bitmap的过程中经常会遇到OOM异常,为此困扰了我两三天时间,接下来把我自己的解决方法讲述一下:         首先来看看为什么使用Bitmap会导致OOM异常的,假如采用Bi...
  • hzw19920329
  • hzw19920329
  • 2016年05月27日 20:53
  • 3057

Android从view得到bitmap及bitmap叠加和保存

从view得到bitmap: private Bitmap getBitmapFromView(View view) { Bitmap bitmap = null; try { in...
  • wuzoujing
  • wuzoujing
  • 2013年05月13日 17:24
  • 6979
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android:将View的内容映射成Bitmap转图片导出
举报原因:
原因补充:

(最多只允许输入30个字)