Android开源框架的SlidingFragment的使用示例

作者:徐刘根 时间:2021-06-18 09:37:31 

效果如下:

Android开源框架的SlidingFragment的使用示例

直接上代码,留着以后用,代码目录结构如下:

Android开源框架的SlidingFragment的使用示例

其中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();// 点击之后自动切换
 }
}

来源:https://blog.csdn.net/xlgen157387/article/details/46430233

标签:android,slidingfragment,开源框架
0
投稿

猜你喜欢

  • c#实现爬虫程序

    2023-04-19 18:59:14
  • Java多线程下的其他组件之CyclicBarrier、Callable、Future和FutureTask详解

    2023-01-31 14:08:39
  • 通过spring boot 设置tomcat解决 post参数限制问题

    2022-09-26 23:38:31
  • gradle使用maven-publish发布jar包上传到私有maven配置

    2022-11-22 07:07:54
  • springboot html调用js无效400问题及解决

    2023-06-24 02:11:54
  • Java IO流相关知识代码解析

    2023-08-05 05:48:04
  • Java并发编程之浅谈ReentrantLock

    2022-08-25 10:46:02
  • Android Studio 升级到3.0后输入法中文状态下无法选词的终极解决方案

    2022-11-21 07:34:41
  • Android开发flow常见API的使用示例详解

    2021-09-25 05:27:49
  • Jmeter常见函数使用方法汇总

    2022-01-30 19:31:45
  • java教学笔记之对象的创建与销毁

    2023-08-14 02:00:39
  • 基于C#的图表控件库 ScottPlot编译visual studio 2022

    2022-05-02 10:24:13
  • 详解使用Spring Security进行自动登录验证

    2021-07-28 12:31:51
  • Android线程间通信Handler源码详解

    2021-12-31 07:04:10
  • Java编程使用箱式布局管理器示例【基于swing组件】

    2022-08-12 14:09:14
  • Android实现定时任务及闹钟

    2023-05-20 13:34:45
  • android AlertDialog多种使用方法详解

    2021-09-14 05:57:10
  • Java concurrency线程池之线程池原理(四)_动力节点Java学院整理

    2023-08-12 21:13:13
  • C#利用iTextSharp添加PDF水印

    2022-03-23 23:37:44
  • Spring Security认证机制源码层探究

    2022-07-27 19:05:26
  • asp之家 软件编程 m.aspxhome.com