android Bitmap(将视图转为bitmap对象)
1)从android的资源文件夹layout中加载xml布局文件,并把布局文件映射为Bitmap
main.xml文件如下:
- <?xmlversion="1.0"encoding="utf-8"?>
- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"android:layout_width="256px"
- android:layout_height="256px">
- <TextViewandroid:layout_width="wrap_content"android:id="@+id/city"
- android:layout_height="wrap_content"android:textSize="20px"
- android:textColor="#ffffff"android:shadowColor="#0000AA"
- android:shadowDx="0"android:shadowDy="-2"android:shadowRadius="0.1"
- android:layout_gravity="right"android:layout_marginRight="5px"/>
- </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="256px"
android:layout_height="256px">
<TextView android:layout_width="wrap_content" android:id="@+id/city"
android:layout_height="wrap_content" android:textSize="20px"
android:textColor="#ffffff" android:shadowColor="#0000AA"
android:shadowDx="0" android:shadowDy="-2" android:shadowRadius="0.1"
android:layout_gravity="right" android:layout_marginRight="5px" />
</LinearLayout>
java代码中的处理,方法一:
- //加载xml布局文件
- LayoutInflater factory = LayoutInflater.from(context);
- View view = factory.inflate(R.layout.main, null);
- //获得布局文件中的TextView
- TextView city = (TextView) view.findViewById(R.id.city);
- //设置city的文本信息
- city.setText("xml中的textview");
- //启用绘图缓存
- view.setDrawingCacheEnabled(true);
- //调用下面这个方法非常重要,如果没有调用这个方法,得到的bitmap为null
- view.measure(MeasureSpec.makeMeasureSpec(256, MeasureSpec.EXACTLY),
- MeasureSpec.makeMeasureSpec(256, MeasureSpec.EXACTLY));
- //这个方法也非常重要,设置布局的尺寸和位置
- view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
- //获得绘图缓存中的Bitmap
- view.buildDrawingCache();
- Bitmap bitmap = view.getDrawingCache();
//加载xml布局文件
LayoutInflater factory = LayoutInflater.from(context);
View view = factory.inflate(R.layout.main, null);
//获得布局文件中的TextView
TextView city = (TextView) view.findViewById(R.id.city);
//设置city的文本信息
city.setText("xml中的textview");
//启用绘图缓存
view.setDrawingCacheEnabled(true);
//调用下面这个方法非常重要,如果没有调用这个方法,得到的bitmap为null
view.measure(MeasureSpec.makeMeasureSpec(256, MeasureSpec.EXACTLY),
MeasureSpec.makeMeasureSpec(256, MeasureSpec.EXACTLY));
//这个方法也非常重要,设置布局的尺寸和位置
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
//获得绘图缓存中的Bitmap
view.buildDrawingCache();
Bitmap bitmap = view.getDrawingCache();
java代码中的处理,方法二:
- //加载xml布局文件
- LayoutInflater factory = LayoutInflater.from(context);
- View view = factory.inflate(R.layout.main, null);
- //获得布局文件中的TextView
- TextView city = (TextView) view.findViewById(R.id.city);
- //设置city的文本信息
- city.setText("xml中的textview");
- //调用下面这个方法非常重要,如果没有调用这个方法,得到的bitmap为null
- view.measure(MeasureSpec.makeMeasureSpec(256, MeasureSpec.EXACTLY),
- MeasureSpec.makeMeasureSpec(256, MeasureSpec.EXACTLY));
- //这个方法也非常重要,设置布局的尺寸和位置
- view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
- //生成bitmap
- Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(),
- Bitmap.Config.RGB_565);
- //利用bitmap生成画布
- Canvas canvas = new Canvas(bitmap);
- //把view中的内容绘制在画布上
- view.draw(canvas);
//加载xml布局文件
LayoutInflater factory = LayoutInflater.from(context);
View view = factory.inflate(R.layout.main, null);
//获得布局文件中的TextView
TextView city = (TextView) view.findViewById(R.id.city);
//设置city的文本信息
city.setText("xml中的textview");
//调用下面这个方法非常重要,如果没有调用这个方法,得到的bitmap为null
view.measure(MeasureSpec.makeMeasureSpec(256, MeasureSpec.EXACTLY),
MeasureSpec.makeMeasureSpec(256, MeasureSpec.EXACTLY));
//这个方法也非常重要,设置布局的尺寸和位置
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
//生成bitmap
Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(),
Bitmap.Config.RGB_565);
//利用bitmap生成画布
Canvas canvas = new Canvas(bitmap);
//把view中的内容绘制在画布上
view.draw(canvas);
2)Bitmap转换为byte[]数组
方法一:
- privatebyte[] Bitmap_To_Bytes(Bitmap bitmap){
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
- return baos.toByteArray();
- }
private byte[] Bitmap_To_Bytes(Bitmap bitmap){
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
return baos.toByteArray();
}
方法二:
- publicstaticbyte[] readStream(InputStream inStream) throws Exception {
- byte[] buffer = newbyte[1024];
- int len = -1;
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- while ((len = inStream.read(buffer)) != -1) {
- baos .write(buffer, 0, len);
- }
- byte[] data = baos .toByteArray();
- baos .close();
- inStream.close();
- return data;
- }
public static byte[] readStream(InputStream inStream) throws Exception {
byte[] buffer = new byte[1024];
int len = -1;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while ((len = inStream.read(buffer)) != -1) {
baos .write(buffer, 0, len);
}
byte[] data = baos .toByteArray();
baos .close();
inStream.close();
return data;
}
3)设置在应用中支持32位的图像:
在onCreate()函数中加入以下两行:
- getWindow().setFormat(PixelFormat.RGBX_8888);
- BitmapFactory.setDefaultConfig(Bitmap.Config.ARGB_8888);
getWindow().setFormat(PixelFormat.RGBX_8888);
BitmapFactory.setDefaultConfig(Bitmap.Config.ARGB_8888);
以使之 支持32bit的图像。
4)把drawable文件夹下的文件转成Bitmap
- Bitmap bm = BitmapFactory.decodeResource(getApplicationContext().getResources(),
- R.drawable.down);
android Bitmap(将视图转为bitmap对象)的更多相关文章
- Android如何缓存你的BITMAP对象
在app中通常最占内存.占流量的元素就是图片了,图片往往又无处不在,特别是伴随着list,GridView或者ViewPager出现,这些图片随着你的滑动操作,时而出现在你的屏幕中,时而消失在屏幕之外 ...
- Android从本地选择图片文件转为Bitmap,并用zxing解析Bitmap
如何从本地选择图片文件 使用Intent调用系统相册后,onActivityResult函数返回的是Uri格式的路径 /** * 打开系统相册 */ private void openSysAlbum ...
- Android菜鸟成长记15 -- BitMap
BitMap简介 Bitmap是Android系统中的图像处理的最重要类之一.用它可以获取图像文件信息,进行图像剪切.旋转.缩放等操作,并可以指定格式保存图像文件.本文从应用的角度,着重介绍怎么用Bi ...
- 解析Android开发优化之:对Bitmap的内存优化详解
在Android应用里,最耗费内存的就是图片资源.而且在Android系统中,读取位图Bitmap时,分给虚拟机中的图片的堆栈大小只有8M,如果超出了,就会出现OutOfMemory异常.所以,对于图 ...
- Android开发优化之——对Bitmap的内存优化
http://blog.csdn.net/arui319/article/details/7953690 在Android应用里,最耗费内存的就是图片资源.而且在Android系统中,读取位图Bitm ...
- Android性能优化:谈话Bitmap内存管理和优化
最近除了那些忙着项目开发的事情,目前正在准备我的论文.短的时间没有写博客,今晚难得想总结.只要有一点时间.因此,为了凑合用,行.唠叨罗嗦,直接进入正题. 从事Android自移动终端的发展,想必是常常 ...
- android 在HTML中显示bitmap
逻辑:将bitmap转化为Base64,通过调用HTML中的JS,显示到HTML中 (1)android代码 public String bitmaptoString(Bitmap bitmap) { ...
- Android中经常使用的bitmap处理方法
收集了非常多bitmap相关的处理方法,差点儿所有应用在项目中,所以特记录下! package com.tmacsky.utils; import java.io.ByteArrayOutputStr ...
- Android有效的治疗方法Bitmap,减少内存
Android有效的治疗方法Bitmap,减少内存 照片可能有不同的大小. 在很多情况下,大小.比如,我们的Camera应用,我们所拍的照片的大小远大于屏幕显示的大小 假如你的应用被限制了内存使用,显 ...
随机推荐
- Dojo实现Tabs页报错(三)
用Dojo实现tab页的过程中,没有引用“on.js”,但是firebug调试时一直提示如下错误: on.js源码如下: define(["./has!dom-addeventlistene ...
- HTML5 总结-表单-输入类型
HTML5 Input 类型 HTML5 新的 Input 类型 HTML5 拥有多个新的表单输入类型.这些新特性提供了更好的输入控制和验证. 本章全面介绍这些新的输入类型: email url nu ...
- HTML5 按字母顺序排列的标签列表 new : HTML5 中的新标签。
标签 描述 <!--...--> 定义注释. <!DOCTYPE> 定义文档类型. <a> 定义超链接. <abbr> 定义缩写. <acron ...
- hdu 1242 Rescue(bfs)
此刻再看优先队列,不像刚接触时的那般迷茫!这也许就是集训的成果吧! 加油!!!优先队列必须要搞定的! 这道题意很简单!自己定义优先级别! +++++++++++++++++++++++++++++++ ...
- stm32之GPIO
stm32有5组GPIO口,GPIOA GPIOB GPIOC GPIOD GPIOE 每个GPIO端口有: 2个配置寄存器GPIOx_CRL, GPIOx_CRH(32位): 2个数据寄存器GPIO ...
- [转]组合数取模 Lucas定理
对于C(n, m) mod p.这里的n,m,p(p为素数)都很大的情况.就不能再用C(n, m) = C(n - 1,m) + C(n - 1, m - 1)的公式递推了. 这里用到Lusac定理 ...
- android术语笔记
参考:http://blog.csdn.net/luoshengyang/article/details/6618363 http://blog.csdn.net/singwhatiwanna/art ...
- HTML5新标签
<article>标签定义外部的内容.比如来自一个外部的新闻提供者的一篇新的文章,或者来自 blog 的文本,或者是来自论坛的文本.亦或是来自其他外部源内容. HTML5:<arti ...
- currentStyle和getComputedStyle的兼容写法
今天学习javascript的时候,教程中介绍了一种简单实现jQuery 中css()方法的写法 <!DOCTYPE html> <html lang="en"& ...
- KVO(键-值观察)
// 1.键-值观察 // 2.它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知. // 3.符合KVC(Key-ValuedCoding)机制的对象才可以使用KVO // 4.实现过 ...