배경색을 부드럽게 변경하는 작은 애니메이션을 만들려고합니다. 내 문제는 마지막 값만 표시한다는 것입니다 (100, 즉 빨간색 배경으로 직접 이동한다는 의미입니다). 나는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