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

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

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

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

Q&A

解決済

1回答

1777閲覧

同じ指示の時は、アニメーションへの指示を無視したい。

kaaa

総合スコア29

Android

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

0グッド

0クリップ

投稿2015/05/14 10:27

以下のようにボタンを押すとimageviewの色が変わる様なアニメーションを指示しておりますが、例えばこのid=startのボタンが連続で押されると、またアニメーションが最初から起動してしまいます。(当たり前といえば当たり前なのですが)

質問したい内容として、例えば連続で同じボタンを押した時に、同じボタンの場合は最初からアニメーションがスタートしない。つまり、同じ信号の場合は無視する、のような指示をしたいと考えております。
コードも汚いですし、無知で申し訳ないのですが、もしもやり方をご存知でしたらお伺い出来ますと幸いです。
何卒よろしくお願いいたします。

lang

1 setContentView(R.layout.activity_main); 2 image = (ImageView) findViewById(R.id.image); 3 4 btnStart = (Button) findViewById(R.id.start); 5 btnStart.setOnClickListener(new View.OnClickListener(){ 6 7 @Override 8 public void onClick(View v) { 9 startColorAnimation(image); 10 }}); 11 12 btnStart = (Button) findViewById(R.id.start1); 13 btnStart.setOnClickListener(new View.OnClickListener(){ 14 15 @Override 16 public void onClick(View v) { 17 startColorAnimation1(image); 18 }}); 19 20

lang

1 public void startColorAnimation(View view){ 2 int colorStart = 0xFFffffff; 3 int colorEnd = 0xFF000000; 4 5 ValueAnimator colorAnim = ObjectAnimator.ofInt( 6 view, "backgroundColor", colorStart, colorEnd); 7 colorAnim.setDuration(2000); 8 colorAnim.setEvaluator(new ArgbEvaluator()); 9 colorAnim.setRepeatCount(100); 10 colorAnim.setRepeatMode(ValueAnimator.REVERSE); 11 colorAnim.start(); 12 } 13 public void startColorAnimation1(View view){ 14 int colorStart = 0xfff53b6d; 15 //int colorStart = view.getSolidColor(); 16 int colorEnd = 0xFF000000; 17 18 ValueAnimator colorAnim = ObjectAnimator.ofInt( 19 view, "backgroundColor", colorStart, colorEnd); 20 colorAnim.setDuration(2000); 21 colorAnim.setEvaluator(new ArgbEvaluator()); 22 colorAnim.setRepeatCount(100); 23 colorAnim.setRepeatMode(ValueAnimator.REVERSE); 24 colorAnim.start(); 25 } 26

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

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

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

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

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

guest

回答1

0

ベストアンサー

Activityにアニメーションの状態を表す数値を保持させて,例えばアニメーションしてなければ0,
アニメーションされていればボタンのidを保持させます.(状態の数値は,それぞれ異なれば何でもいい)
そしてonClickでその状態をチェックし,押されたボタンのidと違う時だけ数値変更とアニメーションをすればいいのではないでしょうか.

ちょっと元のコードが危ない感じがした(2つのボタンを同じ変数で扱っている)のと,アニメーションのメソッドが2つあったのが気になったので,全体を書いてみました.

lang

1public class MainActivity extends Activity implements View.OnClickListener{ 2 int mode = 0; 3 Button btnStart, btnStart1; 4 ImageView image; 5 6 public void onCreate(Bundle savedInstanceState){ 7 super.onCreate(savedInstanceState); 8 setContentView(R.layout.activity_main); 9 image = (ImageView) findViewById(R.id.image); 10 11 btnStart = (Button) findViewById(R.id.start); 12 btnStart.setOnClickListener(this); 13 14 btnStart1 = (Button) findViewById(R.id.start1); 15 btnStart1.setOnClickListener(this); 16 } 17 18 public void onClick(View v){ 19 int id = v.getId(); 20 if(id != mode){ 21 mode = id; 22 switch(id){ 23 case R.id.start: 24 startColorAnimation(image, 0xFFffffff, 0xFF000000); 25 break; 26 case R.id.start1: 27 startColorAnimation(image, 0xfff53b6d, 0xFF000000); 28 break; 29 } 30 } 31 } 32 33 34 public void startColorAnimation(View view, int colorStart, int colorEnd){ 35 36 ValueAnimator colorAnim = ObjectAnimator.ofInt( 37 view, "backgroundColor", colorStart, colorEnd); 38 colorAnim.setDuration(2000); 39 colorAnim.setEvaluator(new ArgbEvaluator()); 40 colorAnim.setRepeatCount(100); 41 colorAnim.setRepeatMode(ValueAnimator.REVERSE); 42 colorAnim.start(); 43 } 44}

投稿2015/05/14 10:37

編集2015/05/14 12:26
swordone

総合スコア20651

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

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

kaaa

2015/05/18 03:09

お礼が遅くなってしまし申し訳ございません。 大変分かり易いご説明と、分かりやすくコードを書き直して頂いたおかげで、理解できました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問