모션 이벤트를 이용하여 이미지뷰를 바꾸고있습니다.
0인 상태에서 다운일 경우 -1인 이미지로
0이나 -1인 상태에서 업일 경우 1인 이미지로 바뀌는 상태인데요.
타임리셋을 이용하여 3초마다 0인 이미지로 되돌려주는데
리셋전에 -1인 이미지가 리셋으로 0으로 돌아옵니다.
그 상태에서 업을 하여 1인 상태로 갈려고하면
순간적으로 -1로 갔다가 1로 돌아와버리네요
반대의 경우도 마찬가지이구요
즉 리셋 전에는 업 다운을 반복해도 부드럽게 움직이는데
리셋후에는 리셋 바로 전 이미지의 반대로 갈라고하면 부자연스럽네요
--터치 이벤트 구간입니다.
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
//Log.d("d1", "Touch >>> stratNum : " + stratNum);
if(event.getAction()==MotionEvent.ACTION_DOWN){
lstartY=event.getY();
}
if(event.getAction()==MotionEvent.ACTION_UP){
lendY=event.getY();
}
ln=lendY-lstartY;
if(ln < 0){
charleft.setImageResource(R.drawable.imgbu);
charleft.invalidate();
userInfo.left = 1;
}
if(ln == 0){
//charleft.setImageResource(R.drawable.imgbm);
userInfo.left = 0;
}
if(ln > 0){
charleft.setImageResource(R.drawable.imgbd);
charleft.invalidate();
userInfo.left = -1;
}
charleft.invalidate();
isOk();
return true;
}
--리셋구간입니다.
public class TickHander extends Handler{
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
Random rand = new Random();
int n =rand.nextInt() % ment.length;
if(n < 0){
n = -n;
}
charleft.setImageResource(R.drawable.imgbm);
charleft.invalidate();
charright.setImageResource(R.drawable.imgwm);
charright.invalidate();
lstartY-=lstartY;
lendY-=lendY;
rstartY-=rstartY;
rendY-=rendY;
ln -= ln;
rn -= rn;
*/
tickHander.sleep(5000);
}
public void sleep(int i) {
// TODO Auto-generated method stub
removeMessages(0);
sendMessageDelayed(obtainMessage(0), i);
}
}
잘못된 부분이 있으면 지적 부탁드려요
그리고 setImageResource 로 이미지를 바까주는것보다 더 나은 방법이 있을까요?