cuốn sách gpt4 ai đã làm

android - 资源是颜色还是可绘制对象?

In lại Tác giả: Vũ trụ không gian 更新时间:2023-11-03 12:08:16 28 4
mua khóa gpt4 Nike

我已经创建了一个扩展 ImageView 的小自定义 View 。我的自定义 View 提供了一个方法 showError(int),我可以在其中传递一个资源 ID,它应该显示为 ImageView 内容。如果我可以传递一个简单的颜色资源 ID 或可绘制资源 ID,那就太好了。

我的问题是:如何确定传递的资源 ID 是 Drawable 还是 Color?

我目前的做法是这样的:

class MyImageView extends ImageView{

public void showError(int resId){

try{
int color = getResources().getColor(resId);
setImageDrawable(new ColorDrawable(color));
}catch(NotFoundException e){
// it was not a Color resource so it must be a drawable
setImageDrawable(getResources().getDrawable(resId));
}

}
}

这样做安全吗?我的假设是,资源 ID 确实是独一无二的。我的意思是在 R.drawable 或 R.color 中不是唯一的,但在 R

中是完全唯一的

所以没有

R.drawable.foo_drawable = 1;
R.color.foo_color = 1;

NHẬN DẠNG 1 将只分配给其中一个资源而不分配给两者是否正确?

câu trả lời hay nhất

您可能想从资源中查找 TypedValue,以便确定该值是 Màu sắc 还是 Có thể vẽ được .像这样的东西应该可以在不需要抛出和捕获异常的情况下工作:

TypedValue value = new TypedValue();
getResources().getValue(resId, value, true); // will throw if resId doesn't exist

// Check whether the returned value is a color or a reference
if (value.type >= TypedValue.TYPE_FIRST_COLOR_INT && value.type <= TypedValue.TYPE_LAST_COLOR_INT) {
// It's a color
setImageDrawable(new ColorDrawable(value.data));
} else if (value.type == TypedValue.TYPE_REFERENCE) {
// It's a reference, hopefully to a drawable
setImageDrawable(getResources().getDrawable(resId));
}

关于android - 资源是颜色还是可绘制对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21210825/

28 4 0
Bài viết khuyến nghị: android - 如何遍历 Android 中的所有 Activity 组件( View )
Bài viết khuyến nghị: MYSQL 几何平均计算不适用于 CURRENT_DATE()
Bài viết khuyến nghị: c# - 'envelope' 对象有什么用?
Bài viết khuyến nghị: Python 认证/授权框架
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress