2017-02-16 15 views
0

私はOne-Armed Banditアプリケーションを作成しようとしています。 私は、複数の画像を通過するアニメーションXMLファイルを作成しました。ボタンをクリックすると、アニメーションが停止します。ImageViewsのDrawablesを比較してください

私の質問は、1つのアニメーションが停止した画像を別のものと比較する方法です。これまでのところ、私はこのようなものを試しました:

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

何か助けていただければ幸いです。

答えて

0

あなただけ.onAnimationStop()
を使用して、それが自動的にイベントをトリガーする
.animationStart()
でアニメーションを開始する必要があります。

+0

申し訳ありませんが、私は自分自身を明確にしなかった場合。私は、アニメーションを停止または開始する方法に関する質問はありません。私は、アニメーションが同じであるかどうかを確認するために停止したときにImageViewsの画像を比較したいと思います。 – Jesper

0

Viewは、アプリケーションロジックを維持しないでください。コントローラー(ご使用のホストActivityまたはFragment)が必要です。

これは、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

関連する問題