智慧北京:主页中内容页面和菜单页面fragment的实现
2016-10-05 23:30
316 查看
实现效果:
减轻了Activity负担,Activity只需要负责管理2个fragment,而让fragment去处理页面内容
![](https://img-blog.csdn.net/20161006010106104?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20161006010112712?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
1、设置FrameLayout,一种最纯净的布局,里面不用计算什么,和Fragment搭配时相当于一个空壳子,不负责任何东西的处理,只负责切换
____main.xml、menu.xml___
2、设置Fragment管理者和开启事务
___MainUI.java___
3、声明ContentFragment和MenuFragment类
基础:声明一个BaseFragment基类,放onCreateView等抽象类,并用protected保护起来(protected表示你愿意让你的子孙后代看见你的物品,也愿意帮他们做事。)
abstract:
abstract修饰符用来修饰类和成员方法
a:用abstract修饰的类表示抽象类,抽象类位于继承树的抽象层,抽象类不能被实例化。
b:用abstract修饰的方法表示抽象方法,抽象方法没有方法体。抽象方法用来描述系统具有什么功能,但不提供具体的实现。
abstract的 规则:
a:抽象类可以没有抽象方法,但是有抽象方法的类必须定义为抽象类,如果一个子类继承一个抽象类,子类没有实现父类的所有抽象方法,那么子类也要定义为抽象类,否则的话编译会出错的。
b:抽象类没有构造方法,也没有抽象静态方法。但是可以有非抽象的构造方法
c:抽象类不能被实例化,但是可以创建一个引用变量,类型是一个抽象类,并让它引用非抽象类的子类的一个实例
d:不能用final 修饰符修饰
____ContentFragment、MenuFragment_______
减轻了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 4000 _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(); }
相关文章推荐
- 智慧北京:内容页面UI的实现
- 智慧北京:内容页面tab的切换的实现
- 基于Ajax+div的“左边菜单、右边内容”页面效果实现
- 基于Ajax+div的“左边菜单、右边内容”页面效果实现
- 基于Ajax+div的“左边菜单、右边内容”页面效果实现
- 智慧北京:引导页面button的切换实现
- 智慧北京:新闻list页面布局的实现
- 智慧北京:设置菜单可否滑动(在首页和设置滑动页面,不出现菜单)
- Fragment+ViewPaper实现不依赖库的菜单+页面滑动
- 智慧北京:引导页面动态点的实现
- 智慧北京:菜单按钮点击的实现
- 智慧北京:新闻中心菜单切换的实现
- vue2.0使用嵌套路由实现页面内容切换/公用一级菜单控制页面内容切换
- 智慧北京:内容页面网络访问
- 智慧北京:欢迎页面——进入动画效果的实现
- 网页设计,本页面内左侧菜单导航右侧显示内容简单实现方法
- python实现更新页面内容的小例子,已经修改成“更新订饭菜单“
- 使用DrawerLayout实现侧滑菜单,,RadioButton+Fragment实现页面主布局,首页面使用tabLayout+viewPager实现
- 如何在asp.net页面上放置的控件上实现左右键菜单,同时对之操作(1)
- MicroSoft Live 和GOOGLE个性主页 页面元素可拖拽放置的实现原理(2)