当前位置: 首页 > 编程笔记 >

Android中比较两个图片是否一致的问题

丁晋
2023-03-14
本文向大家介绍Android中比较两个图片是否一致的问题,包括了Android中比较两个图片是否一致的问题的使用技巧和注意事项,需要的朋友参考一下

  在Fragment界面中,设置两个图片一致如下:

 默认设置图片为:

binding.ivArrow.setImageResource(R.drawable.icon_down);

 先获取默认图片,再和其它两张图片做对比,然后处理业务逻辑

Drawable.ConstantState ivArrow = binding.ivArrow.getDrawable().getCurrent().getConstantState();
        Drawable.ConstantState icon_up = getDrawable(R.drawable.icon_up).getConstantState();
        Drawable.ConstantState icon_down = getDrawable(R.drawable.icon_down).getConstantState();
        Log.e("--->ivArrow$", "$" + ivArrow);
        Log.e("--->icon_up$", "$" + icon_up);
        Log.e("--->icon_down", "$" + icon_down);
        if (ivArrow.equals(icon_up)) {
          binding.ivArrow.setImageResource(R.drawable.icon_down);
        } else if (ivArrow.equals(icon_down)) {
          binding.ivArrow.setImageResource(R.drawable.icon_up);
        }

打印结果如下:

显然通过日志发现,每个图片的资源都不一致,这是为什么,通过点击getDrawable查看源码发现

这个不是我们想要的,我们要的是id,怎么解决呢,因为是在Fragment中,所以要加上 getActivity()

设置完后,看下效果

完整代码如下:

Drawable.ConstantState ivArrow = binding.ivArrow.getDrawable().getCurrent().getConstantState();
        Drawable.ConstantState icon_up = getActivity().getDrawable(R.drawable.icon_up).getConstantState();
        Drawable.ConstantState icon_down = getActivity().getDrawable(R.drawable.icon_down).getConstantState();
        Log.e("--->ivArrow$", "$" + ivArrow);
        Log.e("--->icon_up$", "$" + icon_up);
        Log.e("--->icon_down", "$" + icon_down);
        if (ivArrow.equals(icon_up)) {
          binding.ivArrow.setImageResource(R.drawable.icon_down);
        } else if (ivArrow.equals(icon_down)) {
          binding.ivArrow.setImageResource(R.drawable.icon_up);
        }

到此这篇关于Android中比较两个图片是否一致的文章就介绍到这了,更多相关Android 比较两个图片是否一致内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!

 类似资料:
  • 问题内容: 我有两个地图声明为。在这里可以是另一个(依此类推)。我想检查两个地图是否完全相同,但不知道其深度。除了使用递归,我还可以比较每个地图上被调用的输出吗?还是有比较简单的方法比较地图? 问题答案: 快速回答 您应该使用该方法,因为已经实现了该方法以执行所需的比较。本身就像使用迭代器一样,但这是一种效率较低的方法。另外,正如@Teepeemm所指出的那样,它受元素顺序的影响(基本上是迭代器的

  • 问题内容: 在Java中,我想比较两个地图,如下所示,我们是否有现有的API可以做到这一点? 谢谢 问题答案: 我将使用Set的removeAll()功能来设置键的差异,以查找添加和删除的内容。可以通过使用设置为HashMap的条目进行设置差异来检测实际更改。Entry同时使用键和值实现equals()。 输出量

  • 我做了这个扩展方法来检查一个类型是否实现了一个接口。要使其正常工作,它需要比较两种类型。然而,这种比较似乎并不现实: 这是我比较失败的情况: 正如注释中提到的,如果我比较类型名,那么它总是按照预期工作。我想知道这是怎么回事。

  • 比较两个NumPy数组是否相等的最简单方法是什么(其中相等定义为:A=B iff,用于所有索引i:

  • 这样写 判断不了只读属性和不是只读属性 有什么办法吗(这是为什么T_T)

  • 问题内容: 我想检查两个结构,切片和映射是否相等。 但是我遇到了以下代码的问题。在相关行中查看我的评论。 http://play.golang.org/p/AZIzW2WunI 问题答案: 您可以使用reflect.DeepEqual,也可以实现自己的函数(在性能上比使用反射更好): http://play.golang.org/p/CPdfsYGNy_