SlidingMenu是可以侧滑的第三方控件:
在添加了第三方函数库之后,并不难实现上图的功能:
//设置左滑边框 setBehindContentView(R.layout.left_menu); //得到slidingmenu SlidingMenu slidingmenu = getSlidingMenu(); //设置全屏触摸 slidingmenu.setTouchModeAbove(slidingmenu.TOUCHMODE_FULLSCREEN); //设置底面屏幕剩余偏移量 slidingmenu.setBehindOffset(100); //设置右滑屏 slidingmenu.setSecondaryMenu(R.layout.right_menu); //使能左右滑屏 slidingmenu.setMode(SlidingMenu.LEFT_RIGHT);
1 声明一个Fragment父类:
package com.example.zhihuibj.fragment; import android.app.Activity; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public abstract class BaseFragment extends Fragment{ public Activity mActivity; //fragment创建 @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); mActivity=getActivity(); } //处理fragment布局 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub return initViews(); } //依赖的Activity创建完成 @Override public void onActivityCreated(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onActivityCreated(savedInstanceState); initData(); } //子类必须实现初始化方法 public abstract View initViews(); //初始化 public void initData(){}; }
package com.example.zhihuibj.fragment; import com.example.zhihuibj.R; import android.view.View; /* * 主页面 */ public class ContentFragment extends BaseFragment{ @Override public View initViews() { View view= View.inflate(mActivity, R.layout.fragment_content_menu, null); return view; } }
package com.example.zhihuibj.fragment; import com.example.zhihuibj.R; import android.view.View; /* * 侧边栏 */ public class LeftMenuFragment extends BaseFragment{ @Override public View initViews() { View view = View.inflate(mActivity, R.layout.fragment_left_menu, null); return view; } }
使用空白的FrameLayout替换左边栏和主菜单的布局
</pre><pre name="code" class="html"><?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/lf_menu" android:layout_width="match_parent" android:layout_height="match_parent" > </FrameLayout>
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > </FrameLayout>
private void InitFragment() { android.support.v4.app.FragmentManager fm = getSupportFragmentManager(); FragmentTransaction transactions = fm.beginTransaction(); transactions.replace(R.id.lf_menu,new LeftMenuFragment()); transactions.replace(R.id.lf_content, new ContentFragment()); transactions.commit(); }
整体activity:
package com.example.zhihuibj; import com.example.zhihuibj.fragment.ContentFragment; import com.example.zhihuibj.fragment.LeftMenuFragment; import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu; import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity; import android.app.Activity; import android.app.FragmentManager; import android.os.Bundle; import android.support.v4.app.FragmentTransaction; /* * 主页面 */ public class MainActivity extends SlidingFragmentActivity { @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activitymain); //设置左滑边框 setBehindContentView(R.layout.left_menu); //得到slidingmenu SlidingMenu slidingmenu = getSlidingMenu(); //设置全屏触摸 slidingmenu.setTouchModeAbove(slidingmenu.TOUCHMODE_FULLSCREEN); //设置底面屏幕剩余偏移量 slidingmenu.setBehindOffset(100); //设置右滑屏 slidingmenu.setSecondaryMenu(R.layout.right_menu); //使能左右滑屏 slidingmenu.setMode(SlidingMenu.LEFT_RIGHT); InitFragment(); } /* * 初始化fragment,将fragment填充给布局文件 */ private void InitFragment() { android.support.v4.app.FragmentManager fm = getSupportFragmentManager(); FragmentTransaction transactions = fm.beginTransaction(); transactions.replace(R.id.lf_menu,new LeftMenuFragment()); transactions.replace(R.id.lf_content, new ContentFragment()); transactions.commit(); } }