Получить связанное изображение (Drawable) в Android ViewView - PullRequest
9 голосов
/ 01 сентября 2011

Я установил изображение для элемента управления изображением в Android:

iv.setImageResource(R.drawable.image1);

Я хочу получить этот связанный Drawable, выглядит так:

Drawable myDrawable = iv.getImageResource(); //wrong

спасибо!

Ответы [ 6 ]

33 голосов
/ 24 декабря 2013

Вы можете получить ничью как

Drawable myDrawable = iv.getDrawable();

Вы можете сравнить его с доступным ресурсом типа

if(iv.getDrawable()==getResources().getDrawable(R.drawable.image1)){
    //do work here
}
8 голосов
/ 23 января 2013

К сожалению, нет getImageResource() или getDrawableId(). Но я создал простой обходной путь с помощью тегов ImageView.

В onCreate ():

imageView0 = (ImageView) findViewById(R.id.imageView0);
imageView1 = (ImageView) findViewById(R.id.imageView1);
imageView2 = (ImageView) findViewById(R.id.imageView2);

imageView0.setTag(R.drawable.apple);
imageView1.setTag(R.drawable.banana);
imageView2.setTag(R.drawable.cereal);

Затем, если хотите, вы можете создать простую функцию для получения идентификатора для рисования:

private int getImageResource(ImageView iv) {
    return (Integer) iv.getTag();
}

Надеюсь, это поможет вам, это, безусловно, облегчило мою работу.

8 голосов
/ 01 сентября 2011

Сначала определите Drawable.

Drawable myDrawable = getResources().getDrawable(R.drawable.image1);
iv.setImageDrawable(myDrawable);
6 голосов
/ 01 сентября 2011

использование Drawable drawable=imageview.getDrawable();

1 голос
/ 17 июня 2018

Вы можете сравнить нарисованные ресурсы как

     if (imageView.getDrawable().getConstantState() == 
        ContextCompat.getDrawable(getContext(), R.drawable.image1).getConstantState()) {
}

BitmapDrawables, созданные из одного и того же ресурса, например, будут совместно использовать уникальное -bitmap, хранящееся в их ConstantState https://developer.android.com/reference/android/graphics/drawable/Drawable.ConstantState

getResources.getDrawable is deprecated so you can use ContextCompat.getDrawable inplace of it.
0 голосов
/ 19 мая 2014

Это простой подход, если вы можете использовать переменную-член id представления: просто сохраните идентификатор R.drawable с помощью v.setId (). Затем верните его с помощью v.getId ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...