所以我有一个imageview,我已经应用了翻译动画,其位置是用户触摸的点......工作正常......当我向活动添加时间更新器时,显然正在运行一个线程...翻译动画开始表现异常,即它只是走出界限....我尝试了不同的方法..没有工作..我消除了时间udater和使用dgital时钟小部件..但它再次没有'作为数字时钟工作,使用线程来更新时间......
看一下翻译动画代码
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
if(event.getAction() == MotionEvent.ACTION_MOVE)
{
float f1 = event.getX();
swidth=image.getWidth();
((MaskedTextView) findViewById(R.id.text)).setVisibility(View.INVISIBLE);
android.widget.RelativeLayout.LayoutParams localLayoutParams = (android.widget.RelativeLayout.LayoutParams)image.getLayoutParams();
barwidth=bar.getWidth();
bwidth=barwidth-swidth;
android.widget.RelativeLayout.LayoutParams localLayoutParams2 = localLayoutParams;
localLayoutParams2.leftMargin=(int) event.getX();
if (localLayoutParams.leftMargin<bwidth && f1<bwidth)
{
TranslateAnimation anim = new TranslateAnimation(localLayoutParams.leftMargin,f1, 0, 0);
anim.setStartOffset(0L);
anim.setDuration(500L);
anim.setFillBefore(true);
image.startAnimation(anim);
image.invalidate();
}
}
if (event.getAction() == MotionEvent.ACTION_UP)
{
float f1=event.getX();
android.widget.RelativeLayout.LayoutParams localLayoutParams = (android.widget.RelativeLayout.LayoutParams)image.getLayoutParams();
if(f1<bwidth)
{
TranslateAnimation anim=new TranslateAnimation(f1,0,0,0);
anim.setStartOffset(0L);
anim.setDuration(500L);
anim.setFillBefore(true);
image.startAnimation(anim);
image.invalidate();
}
else
{
if(soundsEnabled && !silent)
mpDot.start();
SwipeImage.this.finish();
}
}
return true;
}
这是每60秒更新一次的简单代码..
new Timer().schedule(new MyTimerTask(), 0, 60000);
public class MyTimerTask extends TimerTask {
private Runnable runnable = new Runnable() {
public void run() {
Calendar c = Calendar.getInstance();
int hr;
if(DateFormat.is24HourFormat(getApplicationContext()))
hr=c.get(Calendar.HOUR_OF_DAY);
else
hr=c.get(Calendar.HOUR);
int minute = c.get(Calendar.MINUTE);
if(minute<10)
timeTextView.setText(String.valueOf(hr)+":0"+String.valueOf(minute));
else
timeTextView.setText(String.valueOf(hr)+":"+String.valueOf(minute));
}
};
public void run() {
handler.post(runnable);
//invalidate();
}
}*/
PLZ帮助我们......我只是不明白为什么会发生...... thnx提前
答案 0 :(得分:0)
您在onTouch
执行了非常昂贵的操作。移动视图和用户手指不需要动画。您需要做的是在onTouch
中更新视图位置(设置新LayoutParams
)并使其无效。