1

アクティビティに LinearLayout ビューがあります。

戻るボタンを押すと、 LinearLayout の子がスライドアウトします。

何もしない次のコードがあります。

private void SlideOut()
{
    LayoutAnimationController controller = AnimationUtils.loadLayoutAnimation(this, R.anim.layout_animation_row_slide_out);
    Animation animation=controller.getAnimation();
    animation.setFillAfter(true);
    LinearLayout menuLayout =((LinearLayout)findViewById(R.id.menuLayout));
    menuLayout.setLayoutAnimation(controller);
    menuLayout.startLayoutAnimation();
}

@Override
public void onBackPressed(){
    //super.onBackPressed();
    SlideOut();     
}

アニメーションが開始するかどうかを確認するために super.OnBackPressed() をコメントアウトしましたが、開始しません。

同様の問題を抱えている人はいますか?

4

3 に答える 3

0

アニメーションが終了する前にアクティビティを終了している可能性があります。アニメーション リスナーを実装してみる

于 2012-09-16T21:06:28.607 に答える
0

SlideOut() が onBackPressed で呼び出されているかどうかを確認してください - おそらく仮想キーボードによって、バック プレスが別の場所で処理されていると思います

于 2011-11-06T14:44:09.790 に答える
0

これを試してみてください.それはあなたを助けるかもしれません:

public boolean onKeyDown(int keyCode, KeyEvent event) {
    // TODO Auto-generated method stub

    if(keyCode==KeyEvent.KEYCODE_BACK){
    SlideOut();
    return true;
    }else{
        return false;
    }

    //return super.onKeyDown(keyCode, event);

}

ここでコードを変更できますか:

private void SlideOut()
{
    Animation controller = AnimationUtils.loadLayoutAnimation(this, R.anim.layout_animation_row_slide_out);
   // Animation animation=controller.getAnimation();
    animation.setFillAfter(true);
    LinearLayout menuLayout =((LinearLayout)findViewById(R.id.menuLayout));
    menuLayout.startAnimation(controller);

}
于 2011-11-06T14:47:13.160 に答える