2011-07-20 23 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); 
} 

EDIT:あなたのアドバイスに おかげで、私はアニメーションでそれをやりました。

<?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" 
/> 

このアニメーションは、それがとてもOKん... 120ピクセルダウンメニューのスライドを作るために持っていたが、その後戻って、古い場所にスプリング。新しい場所に滞在する方法はありますか?

EDIT2:入手!

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

[この質問](http://stackoverflow.com/questions/1520887/how-to-pause-sleep-thread-http: – Grambot

答えて

4

の代わりにそれを自分でハッキング、この種のもののために正確に設計されてAndroid Animationsを、使用しています。それははるかに安定し、最終的にははるかに良く見えるでしょう。

2

タイトルに答えるには:Thread.sleepスレッドをスリープ状態にします。

あなたはおそらく、ここでそれをしたくないと言いました。あなたのスニペットを理解している場合、onKeyDownがUIスレッドから呼び出されています。あなたはスリープするか、またはしばらく時間がかかる処理を行うことによって、UIスレッドを遅らせる必要はありません。代わりに、アニメーションを開始してできるだけ早く戻ってください。アニメーションを行う2つの方法については、Android Dev GuideのView AnimationProperty Animationをご覧ください。 (後者は3.x以上が必要です。)

+0

だと思いますが、私はアニメーションで行いました(上記の編集を参照してください)が、アニメーションの後には元の場所に戻ってきます...新しい場所に保持するにはどうすればいいですか? – Roger

関連する問題