1)从android的资源文件夹layout中加载xml布局文件,并把布局文件映射为Bitmap

main.xml文件如下:

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"android:layout_width="256px"
  4. android:layout_height="256px">
  5. <TextViewandroid:layout_width="wrap_content"android:id="@+id/city"
  6. android:layout_height="wrap_content"android:textSize="20px"
  7. android:textColor="#ffffff"android:shadowColor="#0000AA"
  8. android:shadowDx="0"android:shadowDy="-2"android:shadowRadius="0.1"
  9. android:layout_gravity="right"android:layout_marginRight="5px"/>
  10. </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代码中的处理,方法一:

  1. //加载xml布局文件
  2. LayoutInflater factory = LayoutInflater.from(context);
  3. View view = factory.inflate(R.layout.main, null);
  4. //获得布局文件中的TextView
  5. TextView city = (TextView) view.findViewById(R.id.city);
  6. //设置city的文本信息
  7. city.setText("xml中的textview");
  8. //启用绘图缓存
  9. view.setDrawingCacheEnabled(true);
  10. //调用下面这个方法非常重要,如果没有调用这个方法,得到的bitmap为null
  11. view.measure(MeasureSpec.makeMeasureSpec(256, MeasureSpec.EXACTLY),
  12. MeasureSpec.makeMeasureSpec(256, MeasureSpec.EXACTLY));
  13. //这个方法也非常重要,设置布局的尺寸和位置
  14. view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
  15. //获得绘图缓存中的Bitmap
  16. view.buildDrawingCache();
  17. 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代码中的处理,方法二:

  1. //加载xml布局文件
  2. LayoutInflater factory = LayoutInflater.from(context);
  3. View view = factory.inflate(R.layout.main, null);
  4. //获得布局文件中的TextView
  5. TextView city = (TextView) view.findViewById(R.id.city);
  6. //设置city的文本信息
  7. city.setText("xml中的textview");
  8. //调用下面这个方法非常重要,如果没有调用这个方法,得到的bitmap为null
  9. view.measure(MeasureSpec.makeMeasureSpec(256, MeasureSpec.EXACTLY),
  10. MeasureSpec.makeMeasureSpec(256, MeasureSpec.EXACTLY));
  11. //这个方法也非常重要,设置布局的尺寸和位置
  12. view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
  13. //生成bitmap
  14. Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(),
  15. Bitmap.Config.RGB_565);
  16. //利用bitmap生成画布
  17. Canvas canvas = new Canvas(bitmap);
  18. //把view中的内容绘制在画布上
  19. 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[]数组

方法一:

  1. privatebyte[] Bitmap_To_Bytes(Bitmap bitmap){
  2. ByteArrayOutputStream baos = new ByteArrayOutputStream();
  3. bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
  4. return baos.toByteArray();
  5. }
private byte[] Bitmap_To_Bytes(Bitmap bitmap){
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
return baos.toByteArray();
}

方法二:

  1. publicstaticbyte[] readStream(InputStream inStream) throws Exception {
  2. byte[] buffer = newbyte[1024];
  3. int len = -1;
  4. ByteArrayOutputStream baos  = new ByteArrayOutputStream();
  5. while ((len = inStream.read(buffer)) != -1) {
  6. baos .write(buffer, 0, len);
  7. }
  8. byte[] data = baos .toByteArray();
  9. baos .close();
  10. inStream.close();
  11. return data;
  12. }
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()函数中加入以下两行:

  1. getWindow().setFormat(PixelFormat.RGBX_8888);
  2. BitmapFactory.setDefaultConfig(Bitmap.Config.ARGB_8888);
        getWindow().setFormat(PixelFormat.RGBX_8888);
BitmapFactory.setDefaultConfig(Bitmap.Config.ARGB_8888);

以使之 支持32bit的图像。

4)把drawable文件夹下的文件转成Bitmap

  1. Bitmap bm = BitmapFactory.decodeResource(getApplicationContext().getResources(),
  2. R.drawable.down);

android Bitmap(将视图转为bitmap对象)的更多相关文章

  1. Android如何缓存你的BITMAP对象

    在app中通常最占内存.占流量的元素就是图片了,图片往往又无处不在,特别是伴随着list,GridView或者ViewPager出现,这些图片随着你的滑动操作,时而出现在你的屏幕中,时而消失在屏幕之外 ...

  2. Android从本地选择图片文件转为Bitmap,并用zxing解析Bitmap

    如何从本地选择图片文件 使用Intent调用系统相册后,onActivityResult函数返回的是Uri格式的路径 /** * 打开系统相册 */ private void openSysAlbum ...

  3. Android菜鸟成长记15 -- BitMap

    BitMap简介 Bitmap是Android系统中的图像处理的最重要类之一.用它可以获取图像文件信息,进行图像剪切.旋转.缩放等操作,并可以指定格式保存图像文件.本文从应用的角度,着重介绍怎么用Bi ...

  4. 解析Android开发优化之:对Bitmap的内存优化详解

    在Android应用里,最耗费内存的就是图片资源.而且在Android系统中,读取位图Bitmap时,分给虚拟机中的图片的堆栈大小只有8M,如果超出了,就会出现OutOfMemory异常.所以,对于图 ...

  5. Android开发优化之——对Bitmap的内存优化

    http://blog.csdn.net/arui319/article/details/7953690 在Android应用里,最耗费内存的就是图片资源.而且在Android系统中,读取位图Bitm ...

  6. Android性能优化:谈话Bitmap内存管理和优化

    最近除了那些忙着项目开发的事情,目前正在准备我的论文.短的时间没有写博客,今晚难得想总结.只要有一点时间.因此,为了凑合用,行.唠叨罗嗦,直接进入正题. 从事Android自移动终端的发展,想必是常常 ...

  7. android 在HTML中显示bitmap

    逻辑:将bitmap转化为Base64,通过调用HTML中的JS,显示到HTML中 (1)android代码 public String bitmaptoString(Bitmap bitmap) { ...

  8. Android中经常使用的bitmap处理方法

    收集了非常多bitmap相关的处理方法,差点儿所有应用在项目中,所以特记录下! package com.tmacsky.utils; import java.io.ByteArrayOutputStr ...

  9. Android有效的治疗方法Bitmap,减少内存

    Android有效的治疗方法Bitmap,减少内存 照片可能有不同的大小. 在很多情况下,大小.比如,我们的Camera应用,我们所拍的照片的大小远大于屏幕显示的大小 假如你的应用被限制了内存使用,显 ...

随机推荐

  1. HTTP协议一次上传多个文件的方法

    如何通过HTTP协议一次上传多个文件呢?在这里有两个思路,是同一个方法的两种实现.具体程序还需自己去设计 1. 在form中设置多个文件输入框,用数组命名他们的名字,如下: < form act ...

  2. 复制virtualenv环境到其他服务器环境配置的方法

    要在n多服务器端部署python的应用,虽然python本身是跨平台的,当时好多第三方的扩展却不一定都能做到各个版本兼容,即便是都是linux,在redhat系列和ubuntu系列之间来回导也是个很让 ...

  3. java-输出格式

    https://docs.oracle.com/javase/tutorial/java/data/numberformat.html Formatting Numeric Print Output ...

  4. UNIX网络编程 12 15共享内存区

    管道,FIFO,消息队列,在两个进程交换信息时,都要经过内核传递 共享内存可以绕过,默认fork生成的子进程 并不与父进程共享内存区 mmap munmap msync 父子进程共享内存区的方法之一是 ...

  5. box-shadow 被其他div遮住 shadow was hidden/covered by another div

    使用z-index 来处理 (z-index必须在使用了position的情况下才有效) 参考http://stackoverflow.com/questions/5505118/css-box-sh ...

  6. File中操作路径的API(转)

    这几天一直在搞Java,模板引擎系列和程序猿执业修养系列都暂停了,在Java上忙的不亦乐乎!由于对Java还不太熟悉,经历了各种纠结终于完成了任务.以下是关于Java获取当前目录的方法的备忘录. 原文 ...

  7. JAVA用JNI方法调用C代码实现HelloWorld

    一.首先是java运行环境的搭建,到官网下载java jdk安装即可(注意要修改环境变量).还可以顺便安装eclipse. 二.编写java代码,文件名HelloWorld.java public c ...

  8. 宣布 Windows Azure 通过 PCI DSS 合规性验证并且 ISO 认证范围扩大,同时正式发布 Windows Azure Hyper-V 恢复管理器和其他更新功能

    今天,我们高兴地宣布两个重大里程碑事件,客户将能借此提高基于 Windows Azure 构建安全且合规的应用程序的能力.此外,我们还宣布正式发布 Windows Azure Hyper-V 恢复管理 ...

  9. 【转】2014区域赛小结(牡丹江&&鞍山)by kuangbin

    Posted on 2014年10月20日 by kuangbin 最后的两场区域赛结束了! ICPC生涯的最后两场区域赛,选择了前两个赛区——牡丹江和鞍山,主要是时间比较靠前,而且我向来对东北赛区有 ...

  10. 16个值得个人站长做的广告联盟[转自cnzz]

    建站也有好多年了,也建了几个站,有些微波收入, 反复测试了挺多广告联盟, 下面介绍一下: 1.googleadsense联盟: 推荐指数:☆☆☆☆☆ Google广告联盟是现在信誉最好的广告提供商之一 ...