当前位置: 首页 > 面试题库 >

可绘制==可绘制?

颛孙国源
2023-03-14
问题内容

这是我的问题…:

在我的活动中,我有一个ImageView和一个Button。我希望Button仅在ImageView显示某个可绘制对象时才执行操作。是的,这意味着该代码ImageView正在各种可绘制对象之间进行动画处理,从而使其不会中断我想要完成的工作。

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(vari(drawabledrawable ==
acertaindrawable)”行的错误。尽管Eclipse并没有公然报告两个可绘制对象是否相同的Android无法识别的错误,但我已经测试了代码的其他区域,而且一切似乎都可以正常工作。


问题答案:

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

==运算符比较引用。仅当两个变量都引用相同的对象实例即返回true。相同的内存空间。

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

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



 类似资料:
  • 我想让我的应用程序中的编辑文本行成为自定义颜色,所以我使用了一个可绘制线条的xml,并将其设置为我的编辑文本背景,即如何在EditText中更改线条颜色。 问题是我画的线现在表现为删除线,而不是出现在编辑文本的底部。有没有办法把它们移下来? 尝试设置Android:重力编辑文本和绘图。 http://i.stack.imgur.com/ncl9H.png

  • 我是Android新手,需要建议。我有一个带有多个ImageView的GridLayout。每个ImageView都有一个可绘制的背景色。在单击按钮时,我想根据用户的输入设置两件事的动画:1)将整个视图移动到新位置(这一部分很清晰,不会造成问题),2)仅将图像的可绘制部分移动到新单元格,将背景色保留在原始位置。我完全被困在第二项任务上。如何使用动画移动可绘制的内容?谢谢你的帮助。

  • 在Android Studio中,我想不出要在应用程序内部使用的图像放在哪里。drawable文件夹没有被分解为drawable-hdpi、drawable-ldpi等。我看到另一个问题问这个问题,答案是切换到Project视图而不是Android视图,但drawable也只有一个文件夹。有mipmap-hdpi,mipmap-ldpi等,但人们说这只适用于应用图标。我很困惑。

  • 许多插件,比如buttons,自己就做了它们所有的绘制工作。比如你仅仅需要告诉它们你想看到的标签、你想它们使用的字体、绘制按钮的轮廓和焦点矩形。有时候,有必要做些自定义的绘制。在这种情况下,一个 GtkDrawingArea控件可能是正确的选择,这个控件提供了一个画布,在这个画布上你可以绘制并且将其连接到”draw“信号。 控件的内容常常需要被部分或者全部重新绘制。比如,当另一个窗口控件被移动并且

  • 问题内容: 我几乎让repaint()Jcomponent工作了。我让它正常工作,然后 尝试进行绝对定位,但现在不起作用。 Class 2: (This is the JComponent that I am trying to set) 我将组件添加到Container中,然后将容器添加到JPanel中,然后将JPanel添加到JFrame中。我认为这 应该可行。我有设定的首选尺寸。我曾经使它工

  • 我更新了Android Studio到2.2和我的项目将不再构建。我的活动super.on创建(SavedInstanceState)给我一个错误: 我做了一个全新的活动,看看是不是我的代码导致了这个问题,但没有帮助。活动内容如下: 这是我的身材。格雷德尔(应用程序) 在此错误之前,我得到了这个:java.lang.NoSuchMultiodError:没有静态方法setOnApplyWindow