代码:http://download.csdn.net/detail/huangbin95487710/9260337
依赖包模式
完整运行还需要用到以下依赖包
基于github中SlidingMenu库升级封装成傻瓜模式
- 新特性配置支持
- 配置滑动方式
- 配置左右视图%比
- 配置背景颜色,透明度,渐变颜色
- 配置滑动速度
- 配置退出模式
- 默认样式
<!-- 默认样式 --> <style name="DivSlidingMenu"> <item name="mode">left_right</item> <!-- 左视图的宽度百分比或千分比 --> <item name="leftWidth">70</item> <!-- 右边视图的宽度百分比或千分比 --> <item name="rightWidth">50</item> <!-- 滑出视图方式 --> <item name="touchModeAbove">none</item> <!-- 主视图方式 --> <item name="touchModeBehind">margin</item> <!-- 阴影的图片 --> <item name="shadowDrawable">@drawable/sliding_shadow</item> <!-- 右边阴影的图片 --> <item name="shadowRightDrawable">@android:color/transparent</item> <!-- 阴影宽度 --> <item name="shadowWidth">15dp</item> <!-- 渐变开启 --> <item name="fadeEnabled">true</item> <!-- 渐变深度 --> <item name="fadeDegree">0.35</item> <!-- 背景颜色 --> <item name="slidingbackground">@color/sliding_menu_frame_color</item> <!-- 返回按键退出 --> <item name="keyback_quit">true</item> <!-- 滑动速度 --> <item name="duration">400</item> <!-- false 平均页面,true 覆盖页面 --> <item name="enableslide">false</item> </style>
- 示例代码
- 布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/ll" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:padding="15dip" > <Button android:id="@+id/btn_default" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginBottom="15dip" android:text="默认样式" /> <Button android:id="@+id/index" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginBottom="15dip" android:text="下标选中" /> <Button android:id="@+id/div" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginBottom="15dip" android:text="自定义样式" /> <Button android:id="@+id/left" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginBottom="15dip" android:text="只有左边菜单" /> <Button android:id="@+id/btn_null" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginBottom="15dip" android:text="没有左右菜单" /> <Button android:id="@+id/right" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginBottom="15dip" android:text="只有右边菜单" /> </LinearLayout>
- 代码
- 启动入口SlidingAllActivity.java
package cn.whonow.whonow.sliding; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import cn.whonow.whonow.R; /** * sliding菜单全集 * * @author HuangYi QQ:95487710 */ public class SlidingAllActivity extends Activity { private Context mContext; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test_sliding); this.mContext = this; Button button1 = (Button) findViewById(R.id.btn_default); button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 默认样式 SlidingActivity.startSliding(mContext, SlidingActivity.class); } }); Button button2 = (Button) findViewById(R.id.index); button2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 下标选中 SlidingActivity .startSliding(mContext, SlidingActivity.class, 2); } }); Button button3 = (Button) findViewById(R.id.div); button3.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 自定义样式 SlidingActivity.startSliding(mContext, SlidingActivity.class, 0, R.style.MyDivSlidingMenu); } }); Button button4 = (Button) findViewById(R.id.left); button4.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 只有左边菜单 SlidingActivity.startSliding(mContext, SlidingLeftActivity.class); } }); Button button5 = (Button) findViewById(R.id.btn_null); button5.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 没有左右菜单 SlidingActivity.startSliding(mContext, SlidingNullActivity.class); } }); Button button6 = (Button) findViewById(R.id.right); button6.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 只有右菜单 SlidingActivity.startSliding(mContext, SlidingRightActivity.class); } }); } }
- 主视图SlidingActivity.java
package cn.whonow.whonow.sliding; import General.Listener.NavListener; import General.View.SlidingMenu.Act.FragmentBase; import General.View.SlidingMenu.Act.SlidingFragment; import General.View.SlidingMenu.Listener.SlidingTitleListener; import android.app.LocalActivityManager; import android.support.v4.app.Fragment; import cn.whonow.whonow.R; public class SlidingActivity extends SlidingFragment { private InviteFragment mInviteFragment; @Override public FragmentBase getContentFragment(SlidingFragment context, LocalActivityManager lam) { // TODO Auto-generated method stub if (mInviteFragment == null) mInviteFragment = new InviteFragment(); return mInviteFragment; } @Override public Fragment getLeftFragment(SlidingFragment context) { // TODO Auto-generated method stub return new LeftFragment(this); } @Override public Fragment getRightFragment(SlidingFragment context) { // TODO Auto-generated method stub return new RightFragment(this); } public class InviteFragment extends FragmentBase { public InviteFragment() { super(); } /** * 传入界面值 */ @Override public void initFuntion() { super.setLayoutId(R.layout.test_tabpager_triangle); // super.setNavId(FunctionButton.INDEX_INVITE); // super.setTitleId(R.string.app_name); super.setPagerDefault(mDefaultIndex); } /** * 数字初始化 */ public void initValue() { if (mFragmentItemList.size() > 0) return; TabPagerItem mPagerItem1 = new TabPagerItem("测试1"); TabPagerItem mPagerItem2 = new TabPagerItem("测试2"); TabPagerItem mPagerItem3 = new TabPagerItem("测试3"); mFragmentItemList.add(mPagerItem1); // mFragmentItemList.add(mPagerItem2); // mFragmentItemList.add(mPagerItem3); // TabPagerItem mPagerItem4 = new TabPagerItem("测试4"); // TabPagerItem mPagerItem5 = new TabPagerItem("测试5"); // mFragmentItemList.add(mPagerItem4); // mFragmentItemList.add(mPagerItem5); } @Override public NavListener getNavListener() { // TODO Auto-generated method stub return null; } @Override public SlidingTitleListener getSlidingTitleListener() { // TODO Auto-generated method stub return null; } @Override public boolean isCheckLog() { // TODO Auto-generated method stub return true; } } @Override public boolean isCheckUpdate() { // TODO Auto-generated method stub return false; } @Override public Class<?> getActName() { // TODO Auto-generated method stub return SlidingActivity.class; } @Override public boolean isCheckLog() { // TODO Auto-generated method stub return false; } }
- 左边视图
package cn.whonow.whonow.sliding; import General.System.MyLog; import General.Umeng.Update.UmengFragmentPager; import General.View.SlidingMenu.Act.SlidingFragment; import android.content.Intent; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.View.OnClickListener; import cn.whonow.whonow.R; public class LeftFragment extends UmengFragmentPager { public View mView; public SlidingFragment context; public LeftFragment(SlidingFragment context) { this.context = context; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (null == mView) { mView = inflater.inflate(R.layout.test_tabpager_item, container, false); mView.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub MyLog.show(context, "onClick"); } }); } return mView; } public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); } @Override public String getPagerName() { // TODO Auto-generated method stub return null; } @Override public boolean isCheckLog() { // TODO Auto-generated method stub return false; } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub } }
- 右边视图
package cn.whonow.whonow.sliding; import General.System.MyLog; import General.Umeng.Update.UmengFragmentPager; import General.View.SlidingMenu.Act.SlidingFragment; import android.content.Intent; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import cn.whonow.whonow.R; public class RightFragment extends UmengFragmentPager { public View mView; public SlidingFragment context; public RightFragment(SlidingFragment context) { this.context = context; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (null == mView) { mView = inflater.inflate(R.layout.test_tabpager_item, container, false); mView.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub MyLog.show(context, "onClick"); } }); } return mView; } public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); } @Override public String getPagerName() { // TODO Auto-generated method stub return null; } @Override public boolean isCheckLog() { // TODO Auto-generated method stub return false; } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub } }
- 效果图