如何将可绘制对象分配给 ImageView
How do I assign a drawable to ImageView
我正在努力将 halo 添加到 cyanogenmod 11 中。为此,我正在使用一种方法来获取 halo 是否处于活动状态,然后相应地为其分配图像。
首先,这是我最近尝试的代码(我已多次尝试完成此任务)->
protected void updateHalo() {
//mHaloActive is a boolean. mHaloButton is an ImageView
mHaloActive = Settings.System.getInt(mContext.getContentResolver(),
Settings.System.HALO_ACTIVE, 0) == 1;
int resID;
String mDrawableName;
if (mHaloActive) {
mDrawableName = "ic_notify_halo_pressed";
resID = getResources().getIdentifier(mDrawableName, "drawable", getPackageName());
mHaloButton.setImageResource(resID);
} else {
mDrawableName = "ic_notify_halo_normal";
resID = getResources().getIdentifier(mDrawableName, "drawable", getPackageName());
mHaloButton.setImageResource(resID);
}
if (mHaloActive) {
if (mHalo == null) {
LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mHalo = (Halo) inflater.inflate(R.layout.halo_trigger, null);
mHalo.setLayerType(View.LAYER_TYPE_HARDWARE, null);
WindowManager.LayoutParams params = mHalo.getWMParams();
mWindowManager.addView(mHalo, params);
mHalo.setStatusBar(this);
}
} else {
if (mHalo != null) {
mHalo.cleanUp();
mWindowManager.removeView(mHalo);
mHalo = null;
}
}
}
现在在这里,它说 cannot find symbol: method getPackageName()
之前我也曾多次尝试使用 setImageResource(R.drawable.ic_notify_halo_pressed);
但这给了我 NPE。
然后我也尝试使用:
Resources resources = getResources(); mHaloButton.setImageDrawable(resources.getDrawable(R.drawable.ic_notify_halo_pressed));
但这给出了错误 cannot find symbol: method getResources()
我也试过 mHaloButton.setImageDrawable(R.drawable.ic_notify_halo_pressed);
但它给出了错误:setImageDrawable(android.graphics.drawable.Drawable) in android.widget.ImageView cannot be applied to (int)
所以我知道它需要资源 ID,但我如何获得它?
请注意:我不是在构建应用程序,这也不是 android 工作室项目。我正在尝试将 halo 移植到 cyanogenmod 11。
将 Resources resources = getResources();
替换为 Resources resources = mContext.getResources();
,因为您已经引用了 Context。
getPackageName()
相同。将其替换为 mContext.getPackageName()
.
我正在努力将 halo 添加到 cyanogenmod 11 中。为此,我正在使用一种方法来获取 halo 是否处于活动状态,然后相应地为其分配图像。
首先,这是我最近尝试的代码(我已多次尝试完成此任务)->
protected void updateHalo() {
//mHaloActive is a boolean. mHaloButton is an ImageView
mHaloActive = Settings.System.getInt(mContext.getContentResolver(),
Settings.System.HALO_ACTIVE, 0) == 1;
int resID;
String mDrawableName;
if (mHaloActive) {
mDrawableName = "ic_notify_halo_pressed";
resID = getResources().getIdentifier(mDrawableName, "drawable", getPackageName());
mHaloButton.setImageResource(resID);
} else {
mDrawableName = "ic_notify_halo_normal";
resID = getResources().getIdentifier(mDrawableName, "drawable", getPackageName());
mHaloButton.setImageResource(resID);
}
if (mHaloActive) {
if (mHalo == null) {
LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mHalo = (Halo) inflater.inflate(R.layout.halo_trigger, null);
mHalo.setLayerType(View.LAYER_TYPE_HARDWARE, null);
WindowManager.LayoutParams params = mHalo.getWMParams();
mWindowManager.addView(mHalo, params);
mHalo.setStatusBar(this);
}
} else {
if (mHalo != null) {
mHalo.cleanUp();
mWindowManager.removeView(mHalo);
mHalo = null;
}
}
}
现在在这里,它说 cannot find symbol: method getPackageName()
之前我也曾多次尝试使用 setImageResource(R.drawable.ic_notify_halo_pressed);
但这给了我 NPE。
然后我也尝试使用:
Resources resources = getResources(); mHaloButton.setImageDrawable(resources.getDrawable(R.drawable.ic_notify_halo_pressed));
但这给出了错误 cannot find symbol: method getResources()
我也试过 mHaloButton.setImageDrawable(R.drawable.ic_notify_halo_pressed);
但它给出了错误:setImageDrawable(android.graphics.drawable.Drawable) in android.widget.ImageView cannot be applied to (int)
所以我知道它需要资源 ID,但我如何获得它?
请注意:我不是在构建应用程序,这也不是 android 工作室项目。我正在尝试将 halo 移植到 cyanogenmod 11。
将 Resources resources = getResources();
替换为 Resources resources = mContext.getResources();
,因为您已经引用了 Context。
getPackageName()
相同。将其替换为 mContext.getPackageName()
.