SlidingMenu的详细介绍

  在介绍SlidingMenu的应用步骤之前,先简单说一下SlidingMenu的含义和重要性,SlidingMenu是一个侧滑菜单,在很多APP上都可以看到它的体现,对用户的体验也有很好的效果,所以作为安卓工程师来说能够熟练应用它也是很必要的。可是在SlidingMenu的应用中,对应初学者来说有一个难以接受,也是容易忘记的事,我们是直接根据Google的一个工程师开发好的工具来拿过来使用,在这个过程中,前提是要关联一个SlidingMenu的库,为什么要关联这个库呢?因为我们所要开发的新项目是依赖这个库中的,如果不关联的话就会出现编译错误。

 SlidingMenu的应用步骤:

(1)先导入SlidingMenu的库(Library)(在导库之前还应导入ActionBarSherlock,使库与之关联)

在GitHub中下载的地址:https://github.com/JakeWharton/ActionBarSherlock

            https://github.com/jfeinstein10/SlidingMenu

(导入库的步骤:右击eclipse左侧空白处选择Import,后面的步骤与导入项目的步骤一致)

(2)新建一个项目,在项目属性中添加入SlidingMenu的Library,库和文件必须在同一个工作区间

(添加库的步骤:选中项目右击,选中Properties——>Add——>选中哭ming,点击OK即可)

(3)从库中将一些所需的布局和代码等拷贝到项目中
(4)进行java逻辑的编辑
下面写一个简单的demo,向左侧滑的
先描述一下情景:先是有一个main布局:main布局是一个空白的充满屏幕的帧布局
                                然后向左侧滑出现一个menu布局:menu布局其实就是一个空白的宽度为offsetres_width即180dp,高度与屏幕高度一致的在滑动过程中具有了阴影效果的矩形
                                 其次就是用一个ListView去替换menu布局,所以就出现了5个呈垂直的fragment文字作为listview的条目
,在ListView的条目的点击事件中每点击一个条目就会有相应的Fragment去替换main布局,替换的每一个Fragment中其实就是一个显示简单类名的文本

实现的步骤如下:

(1)项目结构图如下:

(2)在MainActivity中编写逻辑,这里对SlidingMenu的属性做了详细的注释,所以不再赘述

<span style="font-family:SimSun;font-size:18px;">public class MainActivity extends SlidingFragmentActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
        initSlidingMenu();
    }
    private void initSlidingMenu() {
        //加载向左侧滑的布局,其实就是一个帧布局
        setBehindContentView(R.layout.activity_menu);
        SlidingMenu slidingMenu = getSlidingMenu();
        //设置侧滑的方式,一个有三种方式可选:Left,Right,Left_Right
        slidingMenu.setMode(SlidingMenu.LEFT);
        //设置SlidingMenu离屏幕的偏移量,即slidingMenu的宽度
        slidingMenu.setBehindOffsetRes(R.dimen.offsetres_width);
        //根据资源文件ID来设置滑动菜单 的阴影效果
        slidingMenu.setShadowDrawable(R.drawable.shadow);
        //根据dimension资源文件的ID设置分割线的宽度,这里的宽度是一个具体的长度值
        slidingMenu.setShadowWidthRes(R.dimen.shadow_width);
        //设置触摸屏幕的方式,有三种方式:TOUCHMODE_FULLSCREEN,TOUCHMODE_MARGIN,TOUCHMODE_NONE
        slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
        //加载二级菜单的布局
        slidingMenu.setSecondaryMenu(R.layout.menu_right);
        //设置二级菜单的阴影效果
        slidingMenu.setSecondaryShadowDrawable(R.drawable.shadow);
        //新建一个fragment替换
        MenuFragment menuFragment = new MenuFragment();
        // ListView 替换这个布局
        getSupportFragmentManager().beginTransaction()
                .replace(R.id.menu, menuFragment, "MENU").commit();

    }
//一个自定义的切换fragment的方法
    public void switchFragment(Fragment fragment) {
        if (fragment != null) {
            getSupportFragmentManager().beginTransaction()
                    .replace(R.id.main, fragment, "HOME").commit();
        }
    }

}
</span>


(3)MenuFragment的逻辑

<span style="font-family:SimSun;font-size:18px;">public class MenuFragment extends Fragment {
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		View view = View.inflate(getActivity(), R.layout.activity_listview,
				null);
		ListView listview = (ListView) view.findViewById(R.id.listview);
		listview.setAdapter(new ArrayAdapter<String>(getActivity(),
				android.R.layout.simple_list_item_1, android.R.id.text1,
				initData()));
		//listview条目的监听事件:点击对应的条目不同的fragment替换main布局,fragment中只有一个显示简单类名的文本
		listview.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> parent, View v,
					int position, long id) {
				BaseFragment baseFragment = null;
				switch (position) {
				case 0:
					baseFragment = new Fragment01();
					break;
				case 1:
					baseFragment = new Fragment02();
					break;
				case 2:
					baseFragment = new Fragment03();
					break;
				case 3:
					baseFragment = new Fragment04();
					break;
				case 4:
					baseFragment = new Fragment05();
					break;

				}
				//baseFragment替换了main布局
				getActivity().getSupportFragmentManager().beginTransaction()
						.replace(R.id.main, baseFragment, "HOME").commit();
				switchFragment(baseFragment);
			}
//这个是因为有错误隐患存在,所以判断这个方法是否在MainActivity中,如果不在MainActivity中,如果还有一个activity中也有这个方法,会有冲突
			private void switchFragment(BaseFragment baseFragment) {
				if (getActivity() instanceof MainActivity) {
					((MainActivity) getActivity()).switchFragment(baseFragment);
				}

			}
		});
		return view;
	}

	private List<String> initData() {
		List<String> arrayList = new ArrayList<String>();
		arrayList.add("fragment0");
		arrayList.add("fragment1");
		arrayList.add("fragment2");
		arrayList.add("fragment3");
		arrayList.add("fragment4");

		return arrayList;

	}
}
</span>
(4)BaseFragment中的逻辑很简单就是一个TextView

<span style="font-family:SimSun;font-size:18px;">public class BaseFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
		Bundle savedInstanceState) {
	TextView text = new TextView(getActivity());
	//简单的类名,如果是getName()方法会包含全包名
	text.setText(this.getClass().getSimpleName());
	return text;
}
}</span>

还有五个Fragment的类,里面没有做任何处理。

最后我还想多说两句关于SlidingMenu的设置,首先要先加载slidingMenu的布局,这里加载slidingMenu使用的是

<span style="font-family:SimSun;font-size:18px;">  setBehindContentView(R.layout.activity_menu);</span>
还有,要想实现侧滑就要先加载侧滑的布局,然后再对属性进行设置


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园2.0是高校信息化建设的新阶段,它面对着外部环境变化和内生动力的双重影响。国家战略要求和信息技术的快速发展,如云计算、大数据、物联网等,为智慧校园建设提供了机遇,同时也带来了挑战。智慧校园2.0强调以服务至上的办学理念,推动了教育模式的创新,并对传统人才培养模式产生了重大影响。 智慧校园建设的解决之道是构建一个开放、共享的信息化生态系统,利用互联网思维,打造柔性灵活的基础设施和强大的基础服务能力。这种生态系统支持快速迭代的开发和持续运营交付能力,同时注重用户体验,推动服务创新和管理变革。智慧校园的核心思想是“大平台+微应用+开放生态”,通过解耦、重构和统一运维监控,实现服务复用和深度融合,促进业务的快速迭代和自我演化。 智慧校园的总体框架包括多端协同,即“端”,它强调以人为中心,全面感知和捕获行为数据。这涉及到智能感知设备、超级APP、校园融合门户等,实现一“码”或“脸”通行,提供线上线下服务端的无缝连接。此外,中台战略是智慧校园建设的关键,包括业务中台和数据中台,它们支持教育资源域、教学服务域等多个领域,实现业务的深度融合和数据的全面治理。 在技术层面,智慧校园的建设需要分期进行,逐步解耦应用,优先发展轻量级应用,并逐步覆盖更多业务场景。技术升级路径包括业务数据化、数据业务化、校园设施智联化等,利用IoT/5G等技术实现设备的泛在互联,并通过人工智能与物联网技术的结合,建设智联网。这将有助于实现线上线下一网通办,提升校园安全和学习生活体验,同时支持人才培养改革和后勤管理的精细化。 智慧校园的建设不仅仅是技术的升级,更是对教育模式和管理方式的全面革新。通过构建开放、共享的信息化生态系统,智慧校园能够更好地适应快速变化的教育需求,提供更加个性化和高效的服务,推动教育创新和人才培养的高质量发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值