比较ImageViews上的Drawables

时间:2017-02-16 00:43:04

标签: android android-drawable

我正在尝试创建一个单臂强盗应用程序。 我创建了一个动画xml文件来浏览多个图像。单击按钮时,动画将停止。

我的问题是如何将一个动画停止的图像与另一个动画停止的图像进行比较?到目前为止,我尝试过这样的事情:

if(wheel1.getBackground().getConstantState().equals(wheel2.getBackground().getConstantState())) matches++;

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

你必须以.animationStart() 开始动画
只需使用 .onAnimationStop()
,它就会自动触发事件。

答案 1 :(得分:0)

View不应该维护应用程序逻辑,控制器(您的托管ActivityFragment)应该。

也就是说,要实现您想要的目标,请使用View.setTag()将每个View的逻辑描述应用于它。 然后在停止动画时,循环浏览所有Views并在屏幕上显示其位置,让Views在你的强盗机器的每一列中大部分都可见,并比较它们的标签(View.getTag())< / p>

例如,如果项目垂直动画使用以下方法来确定强盗停止的位置。

//the area where to compare views
int BOUND_TOP, BOUNT_DOWN;

//your content view
ViewGroup rootLayout;

//method to get information about what is visible
public List<Object> getVisibleViewTags() {
    List<Object> list = new LinkedList<>();

    int count = rootLayout.getChildCount(); 
    for (int pos = 0; pos < count; pos++) {
        View child = rootLayout.getChildAt(pos);
        float translationY = child.getTranslationY();
        if (translationY > BOUND_TOP && translationY < BOUND_DOWN) {
            list.add(child.getTag());
        }
    }

    return list;
}

现在您只需要将有关视图的信息作为标记添加到其中。 例如:

view.setTag("view_apples");

view.setTag("view_bananas");