質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

1回答

1975閲覧

2つのimageviewを同時にアニメーションさせたい

luckyclock

総合スコア73

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2016/05/29 10:54

2つ以上imageViewを用いてタップしたらカードをめくるようなアニメーションを考えています。

一応1枚ずつ画像タップしたときカードがめくるアニメーションは実装できたのですが、
画像を2つ同時にタップしたときの動作がうまくいきません。
まずタップすると2回onClickが呼び出され、そのあとonAnimationEndが動くのですが、
本来onAnimationEndは1枚目の表裏の呼び出しと2枚目の表裏の呼びだしの計4回呼びだされるはずですが、
2回しか呼び出されません。

下のソースコードは画像をタップした時の処理です。
表の画像が回転させています。

java

1 public void onClick(View v) { 2 //状態設定 3 if(gameStatus == CARD_WAIT) { 4 gameStatus = CARD_SELECT; //選択待ち状態なら1枚目選択中にする 5 selectCardId = randomCardDatas.get(getViewNo(v)).getCardId(); //1枚目のカードID 6 selectView = selectViewOld = getViewNo(v); //1枚目選択されたview保持 7 } 8 else if(gameStatus == CARD_SELECT){ //1枚目選択済み 9 selectView = getViewNo(v); 10 //当たり判定 1枚目と2枚目のカードID一致 11 if(randomCardDatas.get(getViewNo(v)).getCardId() == selectCardId){ 12 //当たりフラグをたてる 13 correctflg = true; 14 } 15 else{ 16 correctflg = false; 17 } 18 gameStatus = CARD_ANIM_WAIT; 19 } 20 else{ 21 return; 22 } 23 24 // カードがクリックされたら、90°回転 25 AnimationSet set = new AnimationSet(true); 26 27 ScaleAnimation scale = new ScaleAnimation( 1.0f, 0.0f, 1.0f, 1.0f, 200f/2, 200f/2); 28 scale.setAnimationListener(this); 29 set.setFillAfter(true); 30 set.setFillEnabled(true); 31 set.addAnimation(scale); 32 set.setDuration(100); 33 set.setInterpolator(new LinearInterpolator()); 34 35 switch(v.getId()){ 36 case R.id.imageView1: 37 view[0].startAnimation(set); 38 randomCardDatas.get(0).setChoiceflg(true); 39 break; 40 case R.id.imageView2: 41 view[1].startAnimation(set); 42 randomCardDatas.get(1).setChoiceflg(true); 43 break; 44 case R.id.imageView3: 45 view[2].startAnimation(set); 46 randomCardDatas.get(2).setChoiceflg(true); 47 break; 48 case R.id.imageView4: 49 view[3].startAnimation(set); 50 randomCardDatas.get(3).setChoiceflg(true); 51 break; 52 } 53 }

下のソースコードは表の回転が終わったときに呼びだされ、裏の画像へと回転する処理を入れています。

java

1 @Override 2 public void onAnimationEnd(Animation animation) { 3 // 後半の回転終了時の呼び出し 4 if( animation_hf_flg==false ){ 5 return; 6 } 7 8 // X方向のサイズが0になって画像が見えない内に画像を変更 9 Boolean flg = (Boolean)view[selectView].getTag(); 10 if( flg==false ){ 11 //裏画像 12 view[selectView].setImageResource(randomCardDatas.get(selectView).getCardId()); 13 }else{ 14 //表画像 15 view[selectView].setImageResource(R.drawable.card); 16 } 17 view[selectView].setTag(!flg); 18 19 // もう一度90°回転 20 AnimationSet set = new AnimationSet(true); 21 ScaleAnimation scale = new ScaleAnimation( 0.0f, 1.0f, 1.0f, 1.0f, 200f/2, 200f/2); 22 scale.setAnimationListener(this); 23 set.setFillAfter(true); 24 set.setFillEnabled(true); 25 set.addAnimation(scale); 26 set.setDuration(100); 27 set.setInterpolator( new LinearInterpolator()); 28 view[selectView].startAnimation(set); 29 animation_hf_flg = false; 30 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

とりあえず、すべてのif文分岐の箇所にログ出力処理を追加し、どのような順でプログラムが動いているかを確認しましょう。
ログ出力ができると自分の想定と実際の動きのずれについて調べることができます。

投稿2016/05/30 01:15

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問