这是我的代码,只需点击“菜单”按钮,就可以将“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"
答案 0 :(得分:4)
不要自己黑客攻击,而是使用Android Animations,这是专为此类设计的。它会更加稳定,最终可能看起来更好。
答案 1 :(得分:2)
要回答标题:Thread.sleep
将使线程休眠。
那就是说,你可能不想这样做。如果我正在理解您的代码段,则会从UI线程调用onKeyDown
。您不希望通过休眠或执行需要一段时间的处理来延迟UI线程。相反,你应该开始动画并尽可能快地返回。有关动画制作的两种方法,请参阅Android开发指南中的View Animation和Property Animation。 (注意后者需要3.x或更高。)