背景色をスムーズに変更する小さなアニメーションを作成しようとしています。私の問題は、それは最後の値(100、それは直接赤い背景に行くことを意味する)を示しているだけです。私はWhileループ:背景色を変更する
(それがスムーズに色のアニメーションを表示なるように)私の作成したwhileループは新しいコードのすべての値を実現しない理由を知っている(ほとんど動作しますが、アニメーションを停止する方法IDK)はありません
imageButton_info.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ final Handler handler = new Handler(); Runnable ChangeBackgroundRunnable = new Runnable() { @Override public void run() { number++; float[] hsvColor = {0, 1, 1}; hsvColor[0] = 360f * number/100; color.setBackgroundColor(Color.HSVToColor(hsvColor)); handler.postDelayed(this, 80); if (number >=100) number = 1; } }; number = 0; handler.removeCallbacks(ChangeBackgroundRunnable); handler.postDelayed(ChangeBackgroundRunnable, 0); } });
コード:
public void onClick(View v){
try {
while (number<=100) {
number=number+1;
float[] hsvColor = {0, 1, 1};
hsvColor[0] = 360f * number/100;
color.setBackgroundColor(Color.HSVToColor(hsvColor));
Thread.sleep(10);
}
}catch(Exception e){
//New exception
Log.e("Camera Error!",e.getMessage());
}
が
を使用してみてください、この答えのおかげで、私はゲイブのと、あなたの提案を試みたが、それはほぼ完璧に働きました。私が今得た唯一の問題は、アニメーションを停止する方法がわからないことです(私はイメージボタンを使用しています)。私はクリックでそれを止める方法を知っていますか(私はすでにwhileループを作成しようとしましたが、アニメーションはそれで動作しませんでした)? – Nick88
私は残念なことにそれは動作しませんでしたが、あなたのサポートに感謝しました。 – Nick88