Android,如何让线程睡眠?

时间:2011-07-20 15:41:35

标签: java android

这是我的代码,只需点击“菜单”按钮,就可以将“menubtm”滑入或滑出视图。有没有办法让它在每个循环中暂停几毫秒,以便它可行,menubtm如何移动?

谢谢!

@Override
public boolean onKeyDown(int keycode, KeyEvent event ) {
 if(keycode == KeyEvent.KEYCODE_MENU){

    if ( menuBtmVisable == true )
    {
        menuBtmVisable = false;
        int xnow = menuBtmTopLimit;
        while (xnow<menuBtmTopLimit+120)
        {   
        xnow+=1;
        AbsoluteLayout.LayoutParams lp = new AbsoluteLayout.LayoutParams(480, 120, 0, xnow);
        menubtm.setLayoutParams(lp); 
        }
    }
    else
    {
        menuBtmVisable = true;
        int xnow = menuBtmTopLimit+120;
        while (xnow>menuBtmTopLimit)
        {
        xnow-=1;
        AbsoluteLayout.LayoutParams lp = new AbsoluteLayout.LayoutParams(480, 120, 0, xnow);
        menubtm.setLayoutParams(lp); 
        }
    }

 }
 return super.onKeyDown(keycode,event); 
}

修改: 感谢您的建议,我使用了动画。

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromYDelta="0"
android:toYDelta="120"
android:duration="500"
 />

这个动画必须使菜单向下滑动120 px ...它确实没问题,但随后又弹回旧地方。有没有办法让它留在新的位置?

EDIT2:搞定了!

android:fillEnabled="true"
android:fillAfter="true"

2 个答案:

答案 0 :(得分:4)

不要自己黑客攻击,而是使用Android Animations,这是专为此类设计的。它会更加稳定,最终可能看起来更好。

答案 1 :(得分:2)

要回答标题:Thread.sleep将使线程休眠。

那就是说,你可能不想这样做。如果我正在理解您的代码段,则会从UI线程调用onKeyDown。您不希望通过休眠或执行需要一段时间的处理来延迟UI线程。相反,你应该开始动画并尽可能快地返回。有关动画制作的两种方法,请参阅Android开发指南中的View AnimationProperty Animation。 (注意后者需要3.x或更高。)