2017-02-16 33 views
0

我正在嘗試創建一個單臂強盜應用程序。 我已經創建了一個動畫xml文件來通過多個圖像。當點擊一個按鈕時,動畫停止。在ImageView上比較Drawables

我的問題是如何比較一個動畫停止與另一個動畫停止的圖片?到目前爲止,我試過這樣的事情:

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

任何幫助表示讚賞。

回答

0

你必須開始屏幕動畫,
.animationStart()
只是使用.onAnimationStop()
,它會自動觸發事件。

+0

很抱歉,如果我沒有讓自己清楚。我對如何停止或啓動動畫沒有任何問題。我想比較動畫停止時ImageView的圖片,看它們是否相同。 – Jesper

0

A View不應該維護應用程序邏輯,控制器(您的主機ActivityFragment)應該。

也就是說,要達到您想要使用View.setTag()來將每個View的邏輯描述應用於它。 然後通過你已經和在屏幕上得到他們的位置都Views停止動畫,循環時,得到Views在匪機器的每一列大多是可見的,並比較它們的標籤(View.getTag()

例如,如果項目垂直動畫使用下面的方法來確定匪徒停止的地方。

//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"); 
+0

感謝您的回覆。這似乎是一種可怕的方式,但我想如果沒有其他辦法,就必須這樣做。這是否能夠在動畫的所有圖片上放置標籤,甚至是目前不可見的圖片? – Jesper

+0

只要他們存在,是的。不要緊,如果他們目前可見 – CrowsNet

+0

我怎麼知道哪個是哪個?例如,如何知道列表中的哪個視圖是蘋果的圖片,以便我可以在其上放置適當的標籤? – Jesper