我想知道何时ContextCompact在应用程序中使用类.基本上它用于何时使用它?我读过开发者网站,它说ContextCompact是"帮助访问Context中的功能".但这条线意味着什么?
And*_*lov 11
ContextCompat 是一个用基本上下文替换一些工作的类.
例如,如果您之前使用过类似的东西
getContext().getColor(R.color.black);
Run Code Online (Sandbox Code Playgroud)
现在它自Android 6.0(API 22+)以来已被弃用,所以你应该使用:
getContext().getColor(R.color.black,theme);
Run Code Online (Sandbox Code Playgroud)
或者使用ContextCompat哪个填充主题自动取决于你Context的主题:
ContextCompat.getColor(getContext(),R.color.black)
Run Code Online (Sandbox Code Playgroud)
同样的事情 getDrawable
还ContextCompat包含API 22+功能的其他方法,例如检查权限或向堆栈添加多个活动
小智 9
当您想要检索资源时使用ContextCompat类,例如drawable或color,而不用担心主题.它为访问资源提供统一的接口,并提供向后兼容性.
常见用例可以是颜色或可绘制等.
ContextCompat.getDrawable(context,R.drawable.someimage)); ContextCompat.getDrawable(context,R.color.blue));
让我们看看源代码 getColor()
/*
* Returns a color associated with a particular resource ID
* <p>
* Starting in {@link android.os.Build.VERSION_CODES#M}, the returned
* color will be styled for the specified Context's theme.
*
* @param id The desired resource identifier, as generated by the aapt
* tool. This integer encodes the package, type, and resource
* entry. The value 0 is an invalid identifier.
* @return A single color value in the form 0xAARRGGBB.
* @throws android.content.res.Resources.NotFoundException if the given ID
* does not exist.
*/
@ColorInt
public static final int getColor(Context context, @ColorRes int id) {
final int version = Build.VERSION.SDK_INT;
if (version >= 23) {
return ContextCompatApi23.getColor(context, id);
} else {
return context.getResources().getColor(id);
}
}
Run Code Online (Sandbox Code Playgroud)
此方法负责API级别解析并自动解决状态或主题.23以上,可以访问颜色状态,这是内部为您解决的,而您应该检查每个资源.
| 归档时间: |
|
| 查看次数: |
8021 次 |
| 最近记录: |