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;
}
}
2 添加Fragment布局方式:
使用空白的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();
}
}