首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可绘制的==可绘制?

可绘制的==可绘制?
EN

Stack Overflow用户
提问于 2010-12-12 15:40:21
回答 5查看 4.4K关注 0票数 5

这是我的问题……

在我的活动中,我有一个ImageView和一个Button。我希望按钮仅在ImageView显示某个可绘制内容时执行操作。是的,这意味着ImageView在不同的可绘制代码之间进行动画,这样它就不会中断我想要做的事情。

代码语言:javascript
复制
ImageView imgview = (ImageView)findViewById(R.id.imgviewsid);
Resources res = getResources();
Drawable acertaindrawable = res.getDrawable(R.drawable.thecertaindrawable);
Drawable variabledrawable = imgview.getDrawable();

    if (variabledrawable == acertaindrawable)
    {
            //does something
    }

它没有起作用。我已经将其范围缩小到"if (variabledrawable == acertaindrawable)“行的错误。虽然Eclipse不会明目张胆地报告Android无法识别的错误(如果两个可绘制文件相同),但我已经测试了代码的其他部分,看起来一切正常。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-12-12 18:02:02

正如Itsik所解释的,即使两个变量都包含对“看起来”相同的对象的引用,它们也是两个不同的对象实例。

==运算符比较引用。只有当两个变量引用同一个对象实例时,它才返回true。相同的内存空间。

Drawable和BitmapDrawable都没有实现特定的.equals()方法,该方法本来可以用来检查两个实例是否包含相同的数据,因此Mathias Lin提示尝试.equals()将不起作用。

遵循Itsik的建议,无需扩展Drawable,您可以使用View.setTag()和View.getTag()方法。这些方法允许将您选择的任何对象附加到视图,并在以后检索它。通过在每次更改ImageView的内容时附加一个简单的标识符(无论是技术上的整数标识符还是定义位图来源的url ),您将能够轻松地识别它。

票数 3
EN

Stack Overflow用户

发布于 2012-06-03 20:51:42

我知道现在发布这篇文章已经很晚了,但这对任何人来说都是有用的。

我使用了.getConstantState()来比较我的两个绘制器,它就像一个护身符:)

票数 8
EN

Stack Overflow用户

发布于 2010-12-12 15:44:30

试试if (acertaindrawable.equals(variabledrawable)) ...

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4420727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档