Android开源框架的SlidingFragment的使用示例
程序员文章站
2022-07-04 20:20:00
效果如下:
直接上代码,留着以后用,代码目录结构如下:
其中basefragment.java是另外5个fragment的基类,代码如下:
packa...
效果如下:
直接上代码,留着以后用,代码目录结构如下:
其中basefragment.java是另外5个fragment的基类,代码如下:
package com.xuliugen.newsclient.fragment.base; import android.os.bundle; import android.support.v4.app.fragment; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.textview; /** * fragment的基类 * * @author xuliugen * */ public class basefragment extends fragment { @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); } @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { textview textview = new textview(getactivity()); textview.settext(this.getclass().getsimplename()); // 获取当前对象对应的类名称 return textview; } public void onactivitycreated(bundle savedinstancestate) { super.onactivitycreated(savedinstancestate); }; }
另外5个fragment的代码都一样就是直接继承basefragment.java没有任何实现,其他4个省略
public class fragment1 extends basefragment { }
menufragment.java是用于管理这几个fragment的
package com.xuliugen.newsclient.fragment; import java.util.arraylist; import java.util.list; import android.os.bundle; import android.support.v4.app.fragment; import android.util.log; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.adapterview; import android.widget.adapterview.onitemclicklistener; import android.widget.arrayadapter; import android.widget.listview; import com.xuliugen.newsclient.mainactivity; import com.xuliugen.newsclient.r; import com.xuliugen.newsclient.fragment.base.basefragment; /** * 继承fragment要自己实现的方法 * * 用于填充侧滑菜单中的数据 * * onitemclicklistener:listview里边的点击事件 * * @author xuliugen * */ public class menufragment extends fragment implements onitemclicklistener { view view; private string tag = "menufragment"; /** * 当activity创建的时候加载数据 */ @override public void onactivitycreated(bundle savedinstancestate) { super.onactivitycreated(savedinstancestate); log.i(tag, "onactivitycreated"); listview listview = (listview) view.findviewbyid(r.id.list_view); arrayadapter<string> adapter = new arrayadapter<string>(getactivity(), android.r.layout.simple_list_item_1, android.r.id.text1, inidata()); listview.setadapter(adapter);// 设置适配器 listview.setonitemclicklistener(this); } /** * 侧边栏的静态数据 * * @return */ private list<string> inidata() { list<string> list = new arraylist<string>(); list.add("fragment1"); list.add("fragment2"); list.add("fragment3"); list.add("fragment4"); list.add("fragment5"); return list; } @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); log.i(tag, "oncreate"); } /** * 用于加载侧边栏 */ @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { log.i(tag, "oncreateview"); // 加载界面:侧边栏 view = layoutinflater.from(getactivity()).inflate(r.layout.list_view, null); return view; } /** * listview中点击事件的监听器 选择监听事件 */ @override public void onitemclick(adapterview<?> parent, view view, int position, long id) { basefragment basefragment = null; switch (position) { case 0: basefragment = new fragment1(); break; case 1: basefragment = new fragment2(); break; case 2: basefragment = new fragment3(); break; case 3: basefragment = new fragment4(); break; case 4: basefragment = new fragment5(); break; } /** * 让basefragment替换界面 */ /* * getactivity().getsupportfragmentmanager() // 获取fragment的管理者 * .begintransaction() // 开启事物 .replace(r.id.content_frag, basefragment, * "home")// 替换,将menufragment中的数据替换到r.id.menu_frag中 .commit();// 提交 */ // 通过switch选择,相当于一个回调方法 switchfragment(basefragment); } private void switchfragment(basefragment fragment) { if (fragment != null) { if (getactivity() instanceof mainactivity) { ((mainactivity) getactivity()).switchfragment(fragment); } } } }
mainactivity.java主要是用于初始化slidingfragmentactivity的操作,设置参数等
package com.xuliugen.newsclient; import android.os.bundle; import android.view.window; import com.jeremyfeinstein.slidingmenu.lib.slidingmenu; import com.jeremyfeinstein.slidingmenu.lib.app.slidingfragmentactivity; import com.xuliugen.newsclient.fragment.fragment1; import com.xuliugen.newsclient.fragment.menufragment; import com.xuliugen.newsclient.fragment.base.basefragment; /** * 使用滑动菜单首先要继承slidingfragmentactivity,然后实现的一般步骤如下: * * 1.得到滑动菜单 * * 2.设置滑动菜单是在左边还是在右边出来 * * 3.设置滑动菜单出来之后,内容页,显示的剩余宽度 * * 4.设置滑动菜单的阴影设置阴影,阴影需要在开始的时候特别淡,慢慢变暗 * * 5.设置阴影的宽度 * * 6.设置滑动菜单的范围 * * @author xuliugen * */ public class mainactivity extends slidingfragmentactivity { slidingmenu slidingmenu; @override public void oncreate(bundle savedinstancestate) { requestwindowfeature(window.feature_no_title); super.oncreate(savedinstancestate); setbehindcontentview(r.layout.menu); // 加载slidingfragment的初始化 setcontentview(r.layout.content);// 这里是动态加载的页面 // 设置content内容中的初始值 fragment1 fragment1 = new fragment1(); getsupportfragmentmanager()// .begintransaction()// .replace(r.id.content_frag, fragment1)// .commit();// // 1.得到滑动菜单 slidingmenu = getslidingmenu(); // 2.设置滑动菜单是在左边还是在右边出来(左、右、左右) slidingmenu.setmode(slidingmenu.left); // 3.设置滑动菜单出来之后,内容页,显示的剩余宽度 slidingmenu.setbehindwidthres(r.dimen.slidingmenu_offset); // 4.设置滑动菜单的阴影设置阴影,阴影需要在开始的时候特别淡,慢慢变暗 slidingmenu.setshadowdrawable(r.drawable.shadow); // 5.设置阴影的宽度 slidingmenu.setshadowwidth(r.dimen.shadow_width); // 6.设置滑动菜单的范围 // slidingmenu.touchmode_fullscreen:全屏 // slidingmenu.touchmode_margin:边沿的时候滑动 // slidingmenu.touchmode_none:不滑动 slidingmenu.settouchmodeabove(slidingmenu.touchmode_fullscreen); // 创建fragmentment menufragment menufragment = new menufragment(); getsupportfragmentmanager() // 获取fragment的管理者 .begintransaction() // 开启事物 .replace(r.id.menu_frag, menufragment, "menu")// 替换,将menufragment中的数据替换到r.id.menu_frag中 .commit();// 提交 } /** * 方法回调:在menufragment类中进行调用 * 暴露替换帧布局内容的操作 * @param fragment */ public void switchfragment(basefragment fragment) { getsupportfragmentmanager()// .begintransaction()// .replace(r.id.content_frag, fragment)// .commit(); slidingmenu.toggle();// 点击之后自动切换 } }
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接