Android将View转为Drawable
来源:互联网 发布:js模拟鼠标轨迹 编辑:程序博客网 时间:2024/04/29 10:00
参考文章:http://blog.csdn.net/jokers_i/article/details/39549633
将View转为Drawable是在做和GIS相关的项目时候遇到的,这里有两种View,一种是已经显示在界面中的,一种是没有显示在界面中需要通过LayoutInflate去加载的。
1.已经显示出来的:
//在将View转为BitMap的时候,View有一个私有变量mDrawingCache,就是所谓的cache
//清空缓存,释放资源,mDrawingCache将调用recycle
mListView.destroyDrawingCache();
//设置视图是否开启缓存
mListView.setDrawingCacheEnabled(true);
//会调用buildDrawingCache,将View转换为bitmap并赋值给mDrawingCache
Bitmap bitmap = mListView.getDrawingCache(true);
//bitmap转为Drawable对象
Drawable drawable=new BitmapDrawable(null,bitmap);
mImageView.setBackground(drawable);
这里有一点需要注意的是:被转为Drawable的View不能被隐藏,一旦被隐藏,它刚刚创建的Bitmap缓存将被回收,后面的setBackground也就会
报错。如果想隐藏该View,可以通过另外一种方式,将刚才的bitmap拷贝一份给一个新的bitmap对象就可以了:
Bitmap bitmap=Bitmap.createBitmap(mListView.getDrawingCache(true));
这样就可以隐藏View了。如果使用这种方式,那么以下两个方法也就可以调用了:
mListView.destroyDrawingCache();
mListView.setDrawingCacheEnabled(false);
2.将未显示的View转为Drawable对象
就是我们通过LayoutInflate加载的视图,他还没有在界面中展示的,所以在转换之前需要设置宽和高,代码大致如下:
mListView.measure(
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
mListView.layout(0, 0, mListView.getMeasuredWidth(), mListView.getMeasuredHeight());
//下面的代码和上面的是一样的
mListView.setDrawingCacheEnabled(true);
Bitmap bitmap=Bitmap.createBitmap(mListView.getDrawingCache(true));
Drawable drawable=new BitmapDrawable(null,bitmap);
mListView.destroyDrawingCache();
mListView.setDrawingCacheEnabled(false);
mImageView.setBackground(drawable);
对于这种未显示的View,如果View的宽和高在布局文件中设置,在一些Android版本上getDrawingCache获取的可能为null,可以通过下面的方式解决,在代码中设置View的宽和高参数:
RelativeLayout.LayoutParams layoutParams=new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.MATCH_PARENT);
layoutParams.setMargins(0, 0, 0, 0);
view.setLayoutParams(layoutParams);
layoutParams.setMargins(0, 0, 0, 0);
view.setLayoutParams(layoutParams);
这里有一篇文章给出了另外一种解决方式:
http://blog.csdn.net/huangbiao86/article/details/9053429
0 0
- Android将View转为Drawable
- android 将View转为Bitmap
- Android将View转为Bitmap
- 将Drawable转为Bitmap
- android将 View转为Bitmap图片
- 如何将Drawable转为Bitmap?
- 如何将String转为Uri,Uri转为Drawable
- android 自定义View drawable
- LayoutInflater-将XML文件转为View
- android view/drawable引用无法取得
- 关于Android View与Drawable的问题
- 关于Android View与Drawable的问题
- Android中用Drawable 自定义view的用法
- 【Android基础知识】Drawable Animation和View Animation
- Android View如何加载drawable资源
- Drawable转为bitmap。
- drawable转为bitmap对象
- Android 将drawable下的图片转换成bitmap、Drawable
- nodejs ejs 请求路径和静态资源文件路径
- Opencv函数功能
- git did not exit cleanly (exit code 1)/128
- PDO基础操作Mysql
- 《老罗的Android之旅》阅读笔记——匿名共享内存
- Android将View转为Drawable
- 关于sizeof 指针和数组的讨论
- 对qt多线程以及事件投递的理解
- Android 开发中跳转到评论页面
- brew 的安装与使用
- ubuntu 12.04 修改eclipse 字体
- Python中fileinput模块介绍
- ExtJs特点、优缺点及注意事项
- 软件测试中的心理学效应