2012-03-26 1 views
1

큰 문제가 있습니다. 나는 속도계의 종류를 구현하려고합니다. 나는 RPM과 같은 정보를 얻는다. .. 블루투스 위의 차에서 매 10-100ms. 지금 나는 바른 위치로 rpm 바늘을 회전시키고 싶다. 나는 데이터를 얻을 때마다 이것을한다.ImageView StartAnimation이 UI 속도를 극단적으로 느리게합니다.

ivNadel.startAnimation(RpmAnim); 
ivBoost.startAnimation(BoostAnim); 
ivLoad.startAnimation(LoadAnim); 

애니메이션은 모두 다음과 같이 구현됩니다 :

//rotate Tachonadel 
Rpmcurrentdegree=Rpmcurrentdegree+Rpmdegree; 
Rpmdegree=((rpms-lastrpm)*RPMtoDegree); 
if(Rpmdegree!=0) 
{ 
    RpmAnim=new RotateAnimation((float)Rpmcurrentdegree, (float)Rpmdegree, ivNadel.getWidth()/2, ivNadel.getHeight()/2); 
    RpmAnim.setInterpolator(new LinearInterpolator()); 
    RpmAnim.setFillEnabled(true); 
    RpmAnim.setFillAfter(true); 
} 

문제가 startAnimations 약 0.5 초에 의해 UI의 반응 시간을 느리게한다는 것입니다. 나는 3 개의 startAnimation을 주석 처리 할 때 다시 잘 동작한다. 누구든지이 속도 저하를 피하는 방법을 알고 있습니까?

도 변화가 있었지만 ImageView가 rotateanimation 이후 새 위치를 보유하지 않은 경우에만 애니메이션을 시작하려고했습니다.

답변

0

PLZ 도움을 내가 직접 귀하의 질문에 대답 할 수 있지만,이 링크는

http://mindtherobot.com/blog/272/android-custom-ui-making-a-vintage-thermometer/

그것은 그려 사용자 정의 UI 구성 요소를 사용하여 캔버스보다는 애니메이션 바늘을 회전 도움이 될 수 있습니다.

+0

문제는 주어진 이미지 바늘을 사용해야한다는 것입니다. 이 예에서는 경로 – 5w4rley

+0

을 사용하여 바늘을 비트 맵으로 변환하고 경로 대신 비트 맵을 회전합니다. – triggs

+0

흠 작동 할 수 있습니다. 나는 너를 시험 할 것이다. – 5w4rley

관련 문제