android - 如何在 Activity 启动时显示 "Sliding Menu"?

标签 android android-sliding

我正在尝试使用优秀的库 Sliding Menu通过杰里米·范斯坦。

就我而言,如果在滑动菜单打开的情况下启动 Activity 将会很棒

enter image description here

而不是像滑动菜单那样关闭

enter image description here

我尝试将 toggle() 放入 Activity 中,但没有用。

SlidingSherlockFragmentActivity

SlidingFragmentActivity除了它扩展了 SherlockFragmentActivity 而不是 FragmentActivity。

基础 Activity

public class BaseActivity extends SlidingSherlockFragmentActivity {
    private int mTitleRes;
    protected ListFragment mFrag;

    public BaseActivity(int titleRes) {
        mTitleRes = titleRes;
    }

    private static final String TAG = "BaseActivity";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setTitle(mTitleRes);

        // set the Behind View
        setBehindContentView(R.layout.menu_frame);
        FragmentTransaction t = this.getSupportFragmentManager().beginTransaction();
        mFrag = new SampleListFragment();
        t.replace(R.id.menu_frame, mFrag);
        t.commit();

        // customize the SlidingMenu
        SlidingMenu sm = getSlidingMenu();
        sm.setShadowWidthRes(R.dimen.shadow_width);
        sm.setShadowDrawable(R.drawable.shadow);
        sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);
        sm.setFadeDegree(0.35f);
        sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        sm.setOnOpenListener(new SlidingMenu.OnOpenListener() {
            @Override
            public void onOpen() {
                Log.d(TAG, "onOpen");
            }
        });
        sm.setOnOpenedListener(new SlidingMenu.OnOpenedListener() {
            @Override
            public void onOpened() {
                Log.d(TAG, "onOpened");
            }
        });
        sm.setOnCloseListener(new SlidingMenu.OnCloseListener() {
            @Override
            public void onClose() {
                Log.d(TAG, "onClose");
            }
        });
        sm.setOnClosedListener(new SlidingMenu.OnClosedListener() {
            @Override
            public void onClosed() {
                Log.d(TAG, "onClosed");
            }
        });



    }


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                toggle();
                return true;

        }
        return super.onOptionsItemSelected(item);
    }

}

FlipperCheck

public class FlipperCheck extends BaseActivity {

    private ViewFlipper flipper;
    private TextView secondaryText;

    public FlipperCheck() {
        super(R.string.app_name);
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setSlidingActionBarEnabled(true);


        setContentView(R.layout.main);
        flipper = (ViewFlipper) findViewById(R.id.voicerecorder_textflipper);
        flipper.startFlipping();
        flipper.setInAnimation(AnimationUtils
                .loadAnimation(getApplicationContext(), android.R.anim.fade_in));
        flipper.setOutAnimation(AnimationUtils
                .loadAnimation(getApplicationContext(), android.R.anim.fade_out));

        secondaryText = (TextView) findViewById(R.id.voicerecorder_secondarytext);
        secondaryText.setText("Why cannot I see u...");

        final TextView firstText = (TextView) findViewById(R.id.firsttext);

        final TextView secondText = (TextView) findViewById(R.id.secondtext);


        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                stopFlipper();
                flipper.setVisibility(View.INVISIBLE);
                secondaryText.setVisibility(View.VISIBLE);
            }
        });

        Button secondButton = (Button) findViewById(R.id.second_button);
        secondButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                firstText.setText("Replaying");
                secondText.setText("Replaying");

            }
        });
    }

    @Override
    protected void onStart() {
        super.onStart();
        toggle();
    }


    private void stopFlipper() {
        flipper.getInAnimation().setAnimationListener(new Animation.AnimationListener() {

            public void onAnimationStart(Animation animation) {
            }

            public void onAnimationRepeat(Animation animation) {
            }

            public void onAnimationEnd(Animation animation) {

                int displayedChild = flipper.getDisplayedChild();
                int childCount = flipper.getChildCount();

                if (displayedChild == childCount - 1) {
                    flipper.stopFlipping();
                }
            }
        });
    }


}

[编辑 2]

看起来 onStart() 中的 toggle() 是在显示 Activity 之前激活滑动菜单的打开和关闭。

01-01 19:27:53.780: D/BaseActivity(351): onOpen
01-01 19:27:53.780: D/BaseActivity(351): onOpened
01-01 19:27:53.780: D/BaseActivity(351): onClose
01-01 19:27:53.790: D/BaseActivity(351): onClosed
01-01 19:27:54.241: D/dalvikvm(351): GC_EXTERNAL_ALLOC freed 2725 objects / 223104 bytes in 80ms
01-01 19:27:54.370: D/dalvikvm(351): GC_EXTERNAL_ALLOC freed 290 objects / 12352 bytes in 75ms
01-01 19:27:54.520: I/ActivityManager(59): Displayed activity com.abc.FlipperCheck/.FlipperCheck: 3084 ms (total 3084 ms)

我的问题

在使用 Android 库“滑动菜单”时,如何在滑动菜单打开的情况下启动 Activity?

最佳答案

你可以使用:

@Override
public void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            toggle();
        }
    }, 1000);
}

关于android - 如何在 Activity 启动时显示 "Sliding Menu"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14092919/

相关文章:

android-如何在所有内容之上进行布局而不透明

javascript - Cordova Google WebView SSL 错误处理程序警报

java - ksoap2 复杂参数

Android滑动 fragment 而不是菜单

android - 从列表适配器调用 fragment

android - 如何在打开和关闭时更改滑动抽屉按钮图像

android - Gradle settings cannot be cast 错误

java - 将值从 fragment 传递到另一个错误

android - 无法在 Android 默认模拟器或 Genymotion 上安装自签名证书

java - Android:Umano AndroidSlidingUpPanel 滑动两个面板?