在使用share SDK时,发现里面的侧滑效果还可以,现在把它单独抽象出来,唯一有个缺陷就是每次启动时会闪一下,而它给出的DEMO也有这个现象,这个问题后面再解决。
MainActivity:
package com.home.testslidingmenu;
import m.framework.ui.widget.slidingmenu.SlidingMenu;
import android.app.Activity;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Window;
public class MainActivity extends Activity {
private SlidingMenu menu;
private int orientation;
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
orientation = getResources().getConfiguration().orientation;
menu = new SlidingMenu(this);
menu.setMenuItemBackground(R.color.sliding_menu_item_down,
R.color.sliding_menu_item_release);
menu.setMenuBackground(R.color.sliding_menu_background);
menu.setTtleHeight(cn.sharesdk.framework.utils.R.dipToPx(this, 44));
menu.setBodyBackground(R.color.sliding_menu_body_background);
menu.setShadowRes(R.drawable.sliding_menu_right_shadow);
menu.setMenuDivider(R.drawable.sliding_menu_sep);
menu.setAdapter(new MainAdapter(menu));
menu.triggerItem(MainAdapter.GROUP_1, MainAdapter.ITEM_1);
setContentView(menu);
}
/**
* 屏幕旋转后,此方法会被调用,以刷新侧栏的布局
*/
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (orientation != newConfig.orientation) {
orientation = newConfig.orientation;
menu.refresh();
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK
&& event.getAction() == KeyEvent.ACTION_DOWN
&& !menu.isMenuShown()) {
menu.showMenu();
return true;
}
return super.onKeyDown(keyCode, event);
}
}
MainAdapter:
package com.home.testslidingmenu;
import android.content.Context;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.FrameLayout.LayoutParams;
import m.framework.ui.widget.slidingmenu.MenuAdapter;
import m.framework.ui.widget.slidingmenu.SlidingMenu;
import m.framework.ui.widget.slidingmenu.SlidingMenuItem;
/**
* 侧栏实际逻辑类。负责完成侧栏目录的展示、事件的监听、页面主体的显示和切换等等业务。
*/
public class MainAdapter extends MenuAdapter {
/** 第一组 */
public static final int GROUP_1 = 1;
/** 第二组 */
public static final int GROUP_2 = 2;
/** 第一项 */
public static final int ITEM_1 = 1;
/** 第二项 */
public static final int ITEM_2 = 2;
/** 第三项 */
public static final int ITEM_3 = 3;
/** 第四项 */
public static final int ITEM_4 = 4;
/** 第五项 */
public static final int ITEM_5 = 5;
/** 第六项 */
public static final int ITEM_6 = 6;
/** 第七项 */
public static final int ITEM_7 = 7;
/** 第八项 */
public static final int ITEM_8 = 8;
/** 第九项 */
public static final int ITEM_9 = 9;
/** 第十项 */
public static final int ITEM_10 = 10;
private SlidingMenu menu;
private SlidingMenuItem curItem;
public MainAdapter(SlidingMenu menu) {
super(menu);
this.menu = menu;
initData();
}
private void initData() {