SlidingMenu-Fragment

来源:互联网 发布:nginx 域名指向目录 编辑:程序博客网 时间:2024/05/01 03:22

SlidingMenu是可以侧滑的第三方控件:


在添加了第三方函数库之后,并不难实现上图的功能:

//设置左滑边框setBehindContentView(R.layout.left_menu);//得到slidingmenuSlidingMenu slidingmenu = getSlidingMenu();//设置全屏触摸slidingmenu.setTouchModeAbove(slidingmenu.TOUCHMODE_FULLSCREEN);//设置底面屏幕剩余偏移量slidingmenu.setBehindOffset(100);//设置右滑屏slidingmenu.setSecondaryMenu(R.layout.right_menu);//使能左右滑屏slidingmenu.setMode(SlidingMenu.LEFT_RIGHT);


为了以后的拓展,采用了Fragment方式,使侧边栏和主界面的逻辑更为清晰。

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创建@Overridepublic void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);mActivity=getActivity();}//处理fragment布局@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {// TODO Auto-generated method stubreturn initViews();}//依赖的Activity创建完成@Overridepublic void onActivityCreated(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onActivityCreated(savedInstanceState);initData();}//子类必须实现初始化方法public abstract View initViews();//初始化public void initData(){};}


在ContentFragment与LeftMenuFragment进行实现:

package com.example.zhihuibj.fragment;import com.example.zhihuibj.R;import android.view.View;/* * 主页面 */public class ContentFragment extends BaseFragment{@Overridepublic 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{@Overridepublic 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 {@Overridepublic void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activitymain);//设置左滑边框setBehindContentView(R.layout.left_menu);//得到slidingmenuSlidingMenu 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();}}


0 0
原创粉丝点击