我怎么知道imageview已被设置为可绘制的是否是特定的?

时间:2017-03-24 06:20:45

标签: android view imageview draw android-drawable

问题是关于android中的imageview:

在我调用

之类的方法后,有一个imageview
imageview.setImageDrawable(drawable) 

imageview.setImageBitmap(bitmap)

然后在imageview上绘制一个drawable,我想知道在我将另一个setXXXDrawable / Bitmap方法调用到同一个imageview之前,在这个imageview上绘制的drawable是否已被其他操作更改?或者自上次通话以来,图像视图上显示的图像已经改变了?

任何帮助将不胜感激〜谢谢!

3 个答案:

答案 0 :(得分:0)

您可以创建自己的ImageView来检测图像变化,以下是Sandy的答案,尝试使用它,setImageChangeListner()来检测图像变化。

public class MyImageView extends ImageView {

    private OnImageChangeListiner onImageChangeListiner;


    public MyImageView(Context context) {
        super(context);
    }

    public MyImageView(Context context, AttributeSet attributeSet) {         
        super(context, attributeSet); 
    }


    public void setImageChangeListiner(
            OnImageChangeListiner onImageChangeListiner) {
        this.onImageChangeListiner = onImageChangeListiner;
    }

    @Override
    public void setBackgroundResource(int resid) {
        super.setBackgroundResource(resid);
        if (onImageChangeListiner != null)
            onImageChangeListiner.imageChangedinView(this);
    }


    @Override
    public void setBackgroundDrawable(Drawable background) {
        super.setBackgroundDrawable(background);
        if (onImageChangeListiner != null)
            onImageChangeListiner.imageChangedinView(this);
    }


    public static interface OnImageChangeListiner {
        public void imageChangedinView(ImageView mImageView);
    }
}

参考链接:ImageView onImageChangedListener Android

答案 1 :(得分:0)

首先从imageView.getDrawable()方法获取drawable,并从你刚刚获得的drawable中获取bimap。现在比较这两个位图,以确定您已经更改了相同的图像或图像。如果它们相同,则两者都将具有相同的字节。

答案 2 :(得分:-1)

您可以按照以下方式检查图像是否已分配了可绘图:

if(imageView.getDrawable() != null) {
    // you can get the drawable that has been assigned to it
} else {
   // assign the desired drawable
   imageview.setImageDrawable(drawable)
}