转载:http://blog.csdn.net/dahuaishu2010_/article/details/28622417


一、View转换为Bitmap
        在Android中所有的控件都是View的直接子类或者间接子类,通过它们可以组成丰富的UI界面。在窗口显示的时候Android会把这些控件都加载到内存中,形成一个以ViewRoot为根节点的控件树,然后由根节点开始逐级把控件绘制到屏幕上。

        可以通过调用控件的setDrawingCacheEnabled(true)方法,开启绘图缓存功能,在绘制View的时候把图像缓存起来,然后通过getDrawingCache()方法获取这个缓存的Bitmap。需要注意的是,当不再使用这个Bitmap时,需要调用destroyDrawingCache()方法,释放Bitmap资源。由于在绘制View到屏幕时缓存图像会降低控件绘制的效率,因此只会在需要使用View的图像缓存的时候才调用setDrawingCacheEnabled(true)方法开启图像缓存功能,当不再使用图像缓存时需要调用setDrawingCacheEnabled(false) 关闭图像缓存功能。

        这种方法在支持拖拽类型的应用中经常见到,在Android系统的Launcher应用中也使用了这种方法,当用户拖拽应用的快捷图标时,获取到控件对应的Bitmap,然后操作这个Bitmap随着手指移动。

        下面通过一段代码来说明如何获取View对应的Bitmap。在代码中使用了两个ImageView并给它们都设置了显示的图片资源,然后把第一个ImageView对应的bitmap显示到第二个ImageView中。由于在Activity的onCreate方法中调用这个方法,当执行Activity的onCreate方法时,控件还没有准备好,所以需要使用Handler进行延迟操作,

更多相关文章

  1. Android(安卓)SQLiteOpenHelper源码解读
  2. android的消息队列机制
  3. 【Android源码】Android(安卓)UI 之一步步教你自定义控件
  4. Android调试工具及方法
  5. 深入分析Android中Dialog
  6. 一套完善的Android异步任务类
  7. Android(安卓)蓝牙开发基本流程
  8. [Android] 修图工具Draw9patch使用小结(附ubuntu快捷截图方法)
  9. Google Android(安卓)JNI使用方法

随机推荐

  1. php技术栈是什么
  2. php中的array_fill函数怎么用
  3. php怎么做页面静态化
  4. php中的array_combine函数怎么用
  5. php levenshtein函数怎么用
  6. php中的count_chars函数怎么用
  7. php中的array_search函数怎么用
  8. php中的str_word_count函数怎么用
  9. php中的array_slice函数怎么用
  10. php中的similar_text函数怎么用