将View的内容映射成Bitmap转图片导出
将view映射到一个bitmap中,稍加改进可以用于一些截图工具或者截图软件(QQ截图之类),例子写的不够完善,不过很有些学习的意义内容大致如下:
在Android中自有获取view中的cache内容,然后将内容转换成bitmap,方法名是:getDrawingCache(),返回结果为Bitmap。
在使用的时候调用
Bitmap bitmap = view.getDrawingCache();
就可以得到图片的bitmap了。
为了测试这个功能,作者使用了两种方式来创建LinerLayout中的内容,一种是在xml文件中就将view的内容添加了,只需在代码中添加对应ImageView中的图片就行了;另一种是动态添加LinerLayout中的View。
工程结构图:
[img]
[/img]
布局文件:
main.xml
add_view.xml
set_view.xml
AddViewActivitypackage com.zart;import android.app.Activity;import android.graphics.Bitmap;import android.os.Bundle;import android.util.Log;import android.view.View.MeasureSpec;import android.widget.ImageView;import android.widget.LinearLayout;public class SetViewActivity extends Activity {/** Called when the activity is first created. */private LinearLayout contentLayout;private ImageView imgSource1;private ImageView imgSource2;private ImageView imgCache;@Overridepublic 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");}}}
转自:http://hddev.blog.51cto.com/3365350/629808
只为学习。