android中代码解析drawable的xml文件
来源:互联网 发布:mysql like语句 编辑:程序博客网 时间:2024/06/05 20:53
本次主要分析我们在项目中解析自定义drawabale.xml文件是怎么转化为Drawable对象
映射关系如下:
- drawable path =》VectorDrawable
- drawable color =》 ColorDrawable
- drawable sharp =》 ShapeDrawable
这些是最基本的映射关系,当然还有其他映射Drawable,比如:
BitmapDrawable,CircularBorderDrawable,ClipDrawable,AnimationDrawable,RotateDrawable等等
这里分享一个小案例就是我们定义一个drawabale.xml文件,怎么最后显示到我们的界面上去,上代码一步一步分析:
获取Drawable对象:
ContextCompat.getDrawable(getContext(), resId)
Drawable对象转换BitmapDrawable关键代码:(d =》drawable对象)
int width = d.getIntrinsicWidth(); int height = d.getIntrinsicHeight(); width = width > 0 ? width : mCursorWidth; height = height > 0 ? height : mCursorHeight; // 取 drawable 的颜色格式 Bitmap.Config config = d.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565; // 建立对应 bitmap Bitmap bitmap = Bitmap.createBitmap(width, height, config); // 建立对应 bitmap 的画布 Canvas canvas = new Canvas(bitmap); //把 drawable 内容画到画布中 d.setBounds(0, 0, width, height); d.draw(canvas); if (mCursorWidth > 0 && mCursorHeight > 0) { Matrix matrix = new Matrix(); matrix.postScale(width, mCursorWidth, height, mCursorHeight); bitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true); mCursorBitmapDrawable = new BitmapDrawable(getResources(), bitmap); } else { mCursorBitmapDrawable = new BitmapDrawable(getResources(), bitmap); }
最后就是将BitmapDrawable对象draw到View,就可以显示出来了
阅读全文
0 0
- android中代码解析drawable的xml文件
- 如何在代码中更改textView在xml文件中设置好的drawable对象
- Android中,XML文件的解析
- android中XML文件的解析
- Android中解析xml文件的接口
- Android中xml文件的解析
- Android中XML文件的解析
- Android中解析xml文件的方法
- Android中xml文件的解析
- Android中xml文件的解析
- Android中解析XML文件的方法
- android中解析XML文件
- Android中XML文件解析
- 在Android Studio的drawable文件下创建XML文件
- android中layout、drawable及styles的xml文件加载探索
- 关于android中drawable文件夹下各类xml样式文件的使用详解
- Android应用中res/drawable文件夹下定义的xml文件内容详解(一)
- Android应用中res/drawable文件夹下定义的xml文件内容(二)selector
- 图的遍历(上)——邻接矩阵表示
- 【算法】总结之前篇
- 文章标题
- Javascript中两个等于号和三个等于号的区别(==/===)
- JVM自动内存管理机制
- android中代码解析drawable的xml文件
- H.264 NALU语法结构——写的最好的一篇,非常详细
- 锚点跳转滑动效果
- BZOJ3626LCA(树剖+线段树+LCA+差分)
- trie树(字典树)实现 C++
- [JSOI2008]最大数(栈+二分||动态加点的线段树)
- MyBatis解决Java实体类和表字段不一致方法
- strcmp函数的实现
- 作业二十六 Arbitrage