之前代码中获取Drawable都是使用如下方法:
Drawable TopDrawableOne = getResources().getDrawable(R.drawable.icon_test);
但是此方法过时,不推荐使用,那么肯定是有其他替代方法的,经过查找,很多网友都是推荐使用
Drawable getDrawable(int id, Resources.Theme theme), 第二个参数@theme可以为空值.或Context.getDrawable(int)
但是感觉此方法不是很好用就在此查找有没有其他好用的方法,最后找到
Drawable TopDrawableOne = ContextCompat.getDrawable(context,R.drawable.icon_test);
这种方式,看着舒服,也是谷歌推荐使用的。
之前代码中获取Drawable都是使用如下方法:Drawable TopDrawableOne = getResources().getDrawable(R.drawable.icon_test);但是此方法过时,不推荐使用,那么肯定是有其他替代方法的,经过查找,很多网友都是推荐使用Drawable getDrawable(int id, Resources.Theme the
IReyclerView 与RecyclerView 的分割线不同,IRecyclerView headerView 和 footerView 中都默认有两个View,分割线设置也不一样
//添加分割线
IRecyclerLinearVerticalDivider recyclerViewDivider = new IRecyclerLinearVerticalDivider(this, LinearLayoutManager.VERTICAL);
recyclerViewDivider.setDrawable(getResources().
getDrawable
(R.drawable.divider_line_ed_0_5dp),
DisplayUtil.dip2px(this, 15),
DisplayUtil.dip2px(this, 15),
false);
mRecyclerView.addItemDecoration(recyclerViewDivider);
替换
方法
① Drawable drawable = ContextCompat.
getDrawable
(context,R.drawable.img); //recommend
②Drawable
getDrawable
(int id, Resources.Theme theme);// above API19 , 第二个参数@theme可以为空值.或Context.
getDrawable
我们经常通过getContext().getResources().
getDrawable
()来获取一个问题,当因为
Android
机制使用了缓存机制,直接setColorFilter()修改颜色,可能同时也会改变其他
getDrawable
()的颜色。
我们先来看一下
getDrawable
()的源码吧。
public Drawable
getDrawable
(int id, @Nulla...
Android
获取Drawable对象方式为getResources().
getDrawable
(@DrawableResId int res), 只可能返回ColorDrawable、BitmapDrawable对象, 当然id不存在会抛异常。
public abstract class Drawable {
在/framework/base/graphics/java/an...
最近需要研究下drawable是如何从xml中倒入的,
Android
系统加载过程中是否有什么优化和优秀的点可以了解下,所以看了下相关的源码
首先大概的流程图如下:
从resource.java的
getDrawable
方法
开始看起
这里我们重点查看第三个流程的loadDrawable
方法
以及loadDrawableForCookie
方法
以及生成想对应的drawable的inflateFromTag...
Drawable对于
Android
开发工程师来说非常熟悉,最常用的用法是在drawable目录里放入png或其他格式的图片,然后在代码里就可以用resources访问到如:
// 访问test图片资源
getResources().
getDrawable
(R.drwable.test);
这里不是要讲Drawable资源怎么使用,而是来看一下这个类实现的一些原理以及它相关的一些子类的实现原理。
imageView.setImageDrawable(ContextCompat.
getDrawable
(this,R.mipmap.ic_launcher));
这样就没有报错提示了
具体原因我们可以通过源码看到,前面添加了ContextCompat 之后 源码里面添加了判断
public static Drawable
getDrawable
(@NonNull Context co..