Как проверить, какой текущий ресурс изображения подключен к ImageView в android xml?
Я хочу проверить, какой ресурс изображения привязан к ImageView
в xml, я могу проверить, какой ресурс изображения прикреплен к представлению изображения, но мое требование - проверить, что ImageView
имеет тот же ресурс который я установил в xml или нет, на основании этого мне нужно выполнить некоторые действия. Кодек всегда выполняет часть else. Ниже приведен мой код,
if (regProfile.getDrawable() == getResources().getDrawable( R.drawable.ivpic))
{
Toast.makeText(_con, "Image is ivPic", Toast.LENGTH_LONG).show();
// new RegisterAsyntaskNew().execute();
}
else
{
Toast.makeText(_con, "Image isn't ivPic", Toast.LENGTH_LONG).show();
// new RegisterAsyntask().execute();
}
Ответы
Ответ 1
Привет, пожалуйста, попробуйте следующее:
if (regProfile.getDrawable().getConstantState() == getResources().getDrawable( R.drawable.ivpic).getConstantState())
{
Toast.makeText(_con, "Image is ivPic", Toast.LENGTH_LONG).show();
// new RegisterAsyntaskNew().execute();
}
else
{
Toast.makeText(_con, "Image isn't ivPic", Toast.LENGTH_LONG).show();
// new RegisterAsyntask().execute();
}
используйте .getConstantState()
для сравнения
посетить
http://developer.android.com/reference/android/graphics/drawable/Drawable.html
http://developer.android.com/reference/android/graphics/drawable/Drawable.ConstantState.html
EDIT:
.getResources().getDrawable(imageResource)
Я устарел в API21, поэтому я изменил ответ Jitesh Upadhyay.
Вот код:
@SuppressWarnings("deprecation")
@SuppressLint("NewApi")
public static boolean checkImageResource(Context ctx, ImageView imageView,
int imageResource) {
boolean result = false;
if (ctx != null && imageView != null && imageView.getDrawable() != null) {
ConstantState constantState;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
constantState = ctx.getResources()
.getDrawable(imageResource, ctx.getTheme())
.getConstantState();
} else {
constantState = ctx.getResources().getDrawable(imageResource)
.getConstantState();
}
if (imageView.getDrawable().getConstantState() == constantState) {
result = true;
}
}
return result;
}
Ответ 2
Вы можете сделать что-то вроде следующего,
Установите tag
через xml или динамически в соответствии с вашим требованием.
Через xml,
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageview1"
android:background="@drawable/bg"
android:tag="bg"/>
Динамически,
ImageView imageView=(ImageView)findViewById(R.id.imageview1);
imageView.setTag("bg");
Используйте imageView.getTag()
для получения информации об изображении.
String backgroundImageName = String.valueOf(imageView.getTag());
Edit:
если вы часто меняете фон ImageView
, затем
imageView.setTag(R.drawable.drawablename);
imageView.setImageResource(R.drawable.drawablename);
String backgroundImageName = String.valueOf(imageView.getTag());
Теперь вы можете сделать свой чек.
if (backgroundImageName.equals("bg")) // here "bg" is the tag that you set previously
{
Toast.makeText(_con, "Image is ivPic", Toast.LENGTH_LONG).show();
// new RegisterAsyntaskNew().execute();
}
else
{
Toast.makeText(_con, "Image isn't ivPic", Toast.LENGTH_LONG).show();
// new RegisterAsyntask().execute();
}