AndoridStudio ver2.3.3
質問させて頂きます。
下記のコードのようにつくりifを使ってimageViewを押すと,その押したビューが大きくなったり小さくなったりするようにしていました。
そのimageView(ボタン)の種類数を増やしていったのですが,あるボタンがONの状態の時に,それ以外のimageViewボタンをONにすると,最初に押した一つ目のimageViewも同時にONが再生されます。
imageViewを○○○○と△△△△で分けているのにどうして,同時に実行されてしまうのでしょうか?
コレを防ぐためには何かいい案がありましたら教えてください。そもそも私の使用が不適切なのかもしれません。
よろしくお願いします。
ImageView ○○○○○,△△△△△,□□□□□,▽▽▽▽▽; ScaleAnimation aaaaa,bbbbb; //aaaaaは拡大用,bbbbbは縮小用 int signal1=0,signal2=0,signal3=0; //ONを1 OFFを0 //○○○○○はonClickをview_Click1,△△△△△は,onClickをview_Click2,□□□□□はonClickをview_Click3 //signal_1は○○○○○のon-off用,signal_2は△△△△△のon-off用,signal_3は□□□□□のon-off用
<MainActivity.java> @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ○○○○○ = (ImageView) findViewById(R.id.imafeview1); △△△△△ = (ImageView) findViewById(R.id.imafeview2); □□□□□ = (ImageView) findViewById(R.id.imafeview3); vvvvv(); fffff(); } public void vvvvv(){ //ビューをビュー50%の位置から1.0倍から1.2倍へ aaaaa = new ScaleAnimation(1.0f, 1.2f, 1.0f, 1.2f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); aaaaa.setDuration(400);//再生時間の指定 aaaaa.setFillAfter(true);//終了時の状態(固定) } public void fffff(){ //ビューをビュー50%の位置から1.2倍から1.0倍へ bbbbb = new ScaleAnimation(1.2f, 1.0f, 1.2f, 1.0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); bbbbb.setDuration(400);//再生時間の指定 bbbbb.setFillAfter(true);//終了時のビューの状態(固定) }
<一つ目のimageViewが押された時の処理> public void view_Click1(View view){ if(signal1==0){ signal1=1; //画像View○○○○○が押されたので,ON状態を示す1に書き換え 1をON 0をOFF ○○○○○.startAnimation(aaaaa); //画像View○○○○○の拡大 if(signal2==1){ //他のViewがON 状態であればOFF状態にするための記述 signal2=0; //ONからOFFへ書き換え △△△△△.startAnimation(bbbbb); //同時に縮小モーションを再生 }else if(signal3==1){ signal3=0;//ONからOFFへ書き換え □□□□□.startAnimation(bbbbb) //同時に縮小モーションを再生 } }else if(signal==1){ signal=0; //ON状態からOFF状態に切り替えるため0に書き換え ○○○○○.startAnimation(bbbbb); //オン状態であれば一度拡大が実行されているので縮小モーションを再生する。 } }
<二つ目のimageViewが押された時の処理> public void view_Click2(View view){ if(signal2==0){ signal2=1; △△△△△.startAnimation(aaaaa); if(signal1==1){ signal1=0; ○○○○○.startAnimation(bbbbb); }else if(signal3==1){ signal3=0; □□□□□.startAnimation(bbbbb); } }else if(signal2==1){ signal2=0; △△△△△.startAnimation(bbbbb); } }
<三つ目のimageViewが押された時の処理> public void view_Click3(View view){ if(signal3==0){ signal3=1; □□□□□.startAnimation(aaaaa); if(signal1==1){ signal1=0; ○○○○○.startAnimation(bbbbb); }else if(signal2==1){ signal2=0; △△△△△.startAnimation(bbbbb); } }else if(signal3==1){ signal3=0; □□□□□.startAnimation(bbbbb); } }
MainActivityjavaで直接記述ではなく,新規でScale.xmlを作成して同じように読み込ませるようにして処理させても同じでした。( AnimationUtils.loadAnimationで)
申し訳ありませんが,何が問題となっているのか教えてください。
よろしくお願いします。
追記および変更〔省略していた部分を追記しています。またボタンの数が2つでは再現性が分かりづらいので3つのViewでのメソッドを書いています。〕
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/21 19:37
2017/11/22 05:49
2017/11/22 12:29
2017/11/22 17:23 編集
2017/11/22 18:28
2017/11/22 19:05 編集
2017/11/23 00:57
2017/11/23 08:44 編集