抽象出Share SDK里面的侧滑效果(一)

2014-11-24 02:50:40 · 作者: · 浏览: 3

在使用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() {