智慧北京:主页中内容页面和菜单页面fragment的实现

实现效果:

减轻了Activity负担,Activity只需要负责管理2个fragment,而让fragment去处理页面内容



1、设置FrameLayout,一种最纯净的布局,里面不用计算什么,和Fragment搭配时相当于一个空壳子,不负责任何东西的处理,只负责切换

____main.xml、menu.xml___

<pre name="code" class="html"><?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"
    android:id="@+id/main_container_content"
    android:orientation="vertical" >
</FrameLayout>
 

2、设置Fragment管理者和开启事务

___MainUI.java___

<pre name="code" class="html">package huaxa.it.zhihuidemo;

import huaxa.it.zhihuidemo.fragment.ContentFragment;
import huaxa.it.zhihuidemo.fragment.MenuFragment;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.Window;

import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;

/**
 * @项目名:     ZhiHuiDemo
 * @包名:         huaxa.it.zhihuidemo
 * @类名:         MainUI
 * @创建者:     黄夏莲
 * @创建时间: 2016年10月4日 ,下午11:38:11
 * 
 * @描述:          主页面 
 */
public class MainUI extends SlidingFragmentActivity
{
	private static final String	TAG_CONTENT	= "content";
	private static final String	TAG_MENU= "menu";
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		//去掉title
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		super.onCreate(savedInstanceState);
		// 1、设置主页内容
		setContentView(R.layout.content_container);
		
		//2、设置菜单的布局
		setBehindContentView(R.layout.menu_container);
		
		//菜单的实例
		SlidingMenu mMenu = getSlidingMenu();
		//3、设置SlidingMenu的Mode
		mMenu.setMode(SlidingMenu.LEFT);//若不设置,默认就是left
		
//		mMenu.setMode(SlidingMenu.LEFT_RIGHT)
//		//4、如果有右菜单
//		mMenu.setSecondaryMenu(R.layout.xxx);
		
		//5、设置菜单的宽度
		mMenu.setBehindWidth(300);//设置的是菜单的宽度
//		mMenu.setBehindOffset(300);//设置的是菜单外面其他内容的宽度
		
		//设置Touch Mode Above
		mMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);//全屏显示,不可左右拖动菜单达到打开和收回效果
		
//		mMenu.setTouchModeBehind(SlidingMenu.TOUCHMODE_FULLSCREEN);//可左右拖动菜单达到打开和收回效果
		
		//加载菜单和主页
		initFragment();
		
	}

	private void initFragment()
	{
		FragmentManager manager = getSupportFragmentManager();
		//1、开启事务
		FragmentTransaction transaction = manager.beginTransaction();
		
		//2、加载切换主页面
		transaction.replace(R.id.main_container_content, new ContentFragment(),TAG_CONTENT);
		//  加载切换菜单页面
		transaction.replace(R.id.main_container_menu, new MenuFragment() ,TAG_MENU);
				
		//3、提交事务
		transaction.commit();
		
	}
	
}

 

 3、声明ContentFragment和MenuFragment类 

基础:声明一个BaseFragment基类,放onCreateView等抽象类,并用protected保护起来(protected表示你愿意让你的子孙后代看见你的物品,也愿意帮他们做事。)

abstract:

abstract修饰符用来修饰类和成员方法
a:用abstract修饰的类表示抽象类,抽象类位于继承树的抽象层,抽象类不能被实例化。
b:用abstract修饰的方法表示抽象方法,抽象方法没有方法体。抽象方法用来描述系统具有什么功能,但不提供具体的实现。
abstract的 规则:
a:抽象类可以没有抽象方法,但是有抽象方法的类必须定义为抽象类,如果一个子类继承一个抽象类,子类没有实现父类的所有抽象方法,那么子类也要定义为抽象类,否则的话编译会出错的。
b:抽象类没有构造方法,也没有抽象静态方法。但是可以有非抽象的构造方法
c:抽象类不能被实例化,但是可以创建一个引用变量,类型是一个抽象类,并让它引用非抽象类的子类的一个实例
d:不能用final 修饰符修饰

____ContentFragment、MenuFragment_______

package huaxa.it.zhihuidemo.fragment;


import org.w3c.dom.Text;

import android.view.Gravity;
import android.view.View;
import android.widget.TextView;

/**
 * @项目名:     ZhiHuiDemo
 * @包名:         huaxa.it.zhihuidemo.fragment
 * @类名:         MainFragment
 * @创建者:     黄夏莲
 * @创建时间: 2016年10月5日 ,下午11:32:13
 * 
 * @描述:          <span style="font-family: Arial, Helvetica, sans-serif;"></span>      菜单页面 <span style="font-family: Arial, Helvetica, sans-serif;"></span>
 */
public class MenuFragment extends BaseFragment
{

	@Override
	protected View initView()
	{
		TextView text = new TextView(mActivity) ;
		
		text.setText("菜单页面");
		text.setTextSize(25);
		text.setGravity(Gravity.CENTER);
		return text;
	}
	
}
package huaxa.it.zhihuidemo.fragment;

import android.annotation.SuppressLint;
import android.view.Gravity;
import android.view.View;
import android.widget.TextView;

/**
 * @项目名: ZhiHuiDemo
 * @包名: huaxa.it.zhihuidemo.fragment
 * @类名: ContentFragment
 * @创建者: 黄夏莲
 * @创建时间: 2016年10月5日 ,下午11:31:04
 * 
 * @描述: 内容页面
 */
public class ContentFragment extends BaseFragment
{


	@Override
	protected View initView()
	{

		TextView text = new TextView(mActivity);

		text.setText("主页面");
		text.setTextSize(25);
		text.setGravity(Gravity.CENTER);
		return text;
	}
}
—————BaseFragment———————
package huaxa.it.zhihuidemo.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;

/**
 * @项目名:     ZhiHuiDemo
 * @包名:         huaxa.it.zhihuidemo.fragment
 * @类名:         BaseFragment
 * @创建者:     黄夏莲
 * @创建时间: 2016年10月5日 ,下午11:33:38
 * 
 * @描述:          Fragment基类
 */
public abstract class BaseFragment extends Fragment
{
	protected  Activity mActivity;

	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		// 拿到宿主Activity
		super.onCreate(savedInstanceState);
		
		mActivity = getActivity();
	}
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState)
	{
		// TODO Auto-generated method stub
		return initView();
	}

	protected abstract View initView();
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值