2011-07-20 157 views
2

這裏是我的代碼,在「菜單」按鈕的點擊,滑動或縮小視圖「menubtm」。有沒有辦法讓它在每個循環中暫停幾毫秒,這樣它就可行了,menubtm如何移動?Android,如何讓線程睡眠?

謝謝!

@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像素下來......它這樣就OK了,但隨後彈回到老地方。有沒有辦法讓它留在新的位置?

EDIT2:有了!

android:fillEnabled="true" 
android:fillAfter="true" 
+0

看看從[這個問題](http://stackoverflow.com/questions/1520887/how-to-pause-sleep-thread-的意見/答案或處理功能於安卓) – Grambot

回答

4

而是自己盜號的,請使用Android Animations,這正是專爲這樣的事情。它會更加穩定,最終看起來可能更好。

2

要回答標題:Thread.sleep將讓一個線程睡眠。

這就是說,你可能不希望這樣做,在這裏。如果我理解你的代碼片段,則從UI線程調用onKeyDown。您不想通過睡眠或執行需要一段時間的處理來延遲UI線程。相反,您應該開始動畫並儘可能快地返回。請參閱Android開發人員指南中的View AnimationProperty Animation,瞭解執行動畫的兩種方法。 (請注意,後者需要3.x或更高)。

+0

認爲,我用動畫做的(見上文編輯),但現在動畫後彈回到老地方......我應該怎麼做,以保持其在新位置? – Roger