Android——SlidingMenu学习总结
来源
SlidingMenu是github上比較火开源库。很强大,不但但是简单的设置实现两側滑动菜单,还能够设置菜单的阴影、渐变色、划动模式等。
下载地址:https://github.com/jfeinstein10/SlidingMenu
怎样使用
要想可以实现SlidingMenu的效果,首先必需要将它作为libary导入到你的project。
注意:slidingMenu_library类库本身自带了android-support-v4.jar文件,而我们自己的project一般也带有这个文件,假设两个文件的SHA-1值不一样,可能会出现
找不到类的异常。我的做法是删除掉自己项目里面的android-support-v4.jar。
API演示样例代码
package com.example.slidingmenu_left; import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.Window; import com.example.slidingmenu_left.fragment.MenuFragment;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity; public class MainActivity extends SlidingFragmentActivity { private SlidingMenu slidingMenu; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE); // 内容页布局
setContentView(R.layout.content); // 设置側拉条目布局
setBehindContentView(R.layout.menu_frame); // 获取側拉栏目对象
slidingMenu = getSlidingMenu(); /*
* SlidingMenu.TOUCHMODE_FULLSCREEN 全屏触摸拖拽有效
* SlidingMenu.TOUCHMODE_MARGIN 拖拽边缘有效
* SlidingMenu.TOUCHMODE_NONE 全屏不响应触摸拖拽事件
*/
slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); // 设置内容显示页相应的dp大小
slidingMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset); // // 设置左側側拉栏目的dp大小
// slidingMenu.setBehindWidthRes(140);// 注意这里面140的单位是像素 /*
* SlidingMenu.LEFT
* SlidingMenu.RIGHT
* SlidingMenu.LEFT_RIGHT
*/
// 设置側拉栏目的位置
slidingMenu.setMode(SlidingMenu.LEFT); // 给側拉栏目和右側内容页区分开(竖线)
slidingMenu.setShadowDrawable(R.drawable.shadow); // 设置(竖线)的宽度
slidingMenu.setShadowWidthRes(R.dimen.shadow_width); // fragment去替换布局中节点
Fragment fragment = new MenuFragment();
getSupportFragmentManager().beginTransaction()// 开启事务
.replace(R.id.menu, fragment, "MENU")//替换布局
.commit();// 提交事务 } /**
* 当前类中做替换当前显示内容界面的操作
* @author wuseyukui
*
* @param fragment
*/
public void switchFragment(Fragment fragment) {
if (fragment != null) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.content_frame, fragment, "CONTENT")
.commit();
slidingMenu.toggle();
}
} }
package com.example.slidingmenu_left.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.example.slidingmenu_left.MainActivity;
import com.example.slidingmenu_left.R; public class MenuFragment extends Fragment { private String tag = "MenuFragment";
private View view; /**
* 创建对象
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i(tag , "=====onCreate");
} /**
* 相似:setContentView
* 设置布局
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Log.i(tag , "=====onCreateView");
view = View.inflate(getActivity(), R.layout.list_view, null);
return view;
} /**
* 数据填充操作
*/
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Log.i(tag , "=====onActivityCreated");
ListView listView = (ListView)view.findViewById(R.id.list_view);
listView.setAdapter(new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1,
android.R.id.text1,
initData()));
listView.setOnItemClickListener(new OnItemClickListener() { @Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Fragment fragment = null;
switch (position) {
case 0:
fragment = new Fragment1();
break;
case 1:
fragment = new Fragment2();
break;
case 2:
fragment = new Fragment3();
break;
case 3:
fragment = new Fragment4();
break;
case 4:
fragment = new Fragment5();
break;
default:
break;
} swithFragment(fragment);
}
});
} private void swithFragment(Fragment fragment) {
if (getActivity() instanceof MainActivity) {
((MainActivity)getActivity()).switchFragment(fragment);
}
} private List<String> initData() {
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add("栏目1");
arrayList.add("栏目2");
arrayList.add("栏目3");
arrayList.add("栏目4");
arrayList.add("栏目5");
return arrayList;
}
}
效果图:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3VzZXl1a3Vp/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
Android——SlidingMenu学习总结的更多相关文章
- Android开源项目SlidingMenu学习(二)
前一篇SlidingMenu学习(一)文章中了解了导入SlidingMenu到我们项目经常出现的问题,下面我们正式学习. 先看一个效果: 看到两幅图片的差别了吗,左边的一栏时可以滑动的,可以隐藏掉,现 ...
- Android开发学习之路-RecyclerView滑动删除和拖动排序
Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...
- Android开发学习路线图
Android开发学习方法: Android是一个比较庞大的体系,从底层的Linux内核到上层的应用层,各部分的内容跨度也比较大.因此,一个好的学习方法对我们学习Android开发很重要. 在此建议, ...
- Android动画学习(二)——Tween Animation
前两天写过一篇Android动画学习的概述,大致的划分了下Android Animation的主要分类,没有看过的同学请移步:Android动画学习(一)——Android动画系统框架简介.今天接着来 ...
- Android自动化学习笔记:编写MonkeyRunner脚本的几种方式
---------------------------------------------------------------------------------------------------- ...
- Android自动化学习笔记之MonkeyRunner:官方介绍和简单实例
---------------------------------------------------------------------------------------------------- ...
- android开发学习笔记000
使用书籍:<疯狂android讲义>——李刚著,2011年7月出版 虽然现在已2014,可我挑来跳去,还是以这本书开始我的android之旅吧. “疯狂源自梦想,技术成就辉煌.” 让我这个 ...
- Android开发学习清单
目录: 第1章 Android应用与开发环境1.1 Android的发展和历史1.1.1 Android的发展和简介1.1.2 Android平台架构及特性1.2 搭建Android开发环境1.2.1 ...
- Android Animation学习(六) View Animation介绍
Android Animation学习(六) View Animation介绍 View Animation View animation系统可以用来执行View上的Tween animation和F ...
随机推荐
- python3写冒泡排序
1.概念理解: 冒泡排序:可以简单的理解为是列表中相近的元素,两两比较,小的在前面.最多需要len()-1次排序. 2.例子:a=[11,7,4,56,35,0] 3.代码实现: 4.输出结果: 第1 ...
- js实现返回上一页功能
大家在做 "返回上一页" 这个功能的时候 都是用history.go(-1);来实现的 但这段代码只是简单的使用浏览器的后退功能 从浏览器缓存中取出页面来显示 但我们绝大部分情况都 ...
- java中HashMap,LinkedHashMap,TreeMap,HashTable的区别
java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap Map主要用于存储健值对,根 ...
- github 新建一个仓库后
每次都记不住命令,记一下,防止找不到 echo "# learn18" >> README.md git init git add README.md git comm ...
- JS数组专题1️⃣ ➖ 数组扁平化
一.什么是数组扁平化 扁平化,顾名思义就是减少复杂性装饰,使其事物本身更简洁.简单,突出主题. 数组扁平化,对着上面意思套也知道了,就是将一个复杂的嵌套多层的数组,一层一层的转化为层级较少或者只有一层 ...
- Openjudge-4151-电影节
这个题是一道贪心的题目,我们要想看的电影数目最多,我们肯定每次都要选最早结束的电影,这样我们才能去看下一部电影. 它本身最早结束,如果同时开始,那肯定是它的放映时间比较短,如果它后开始,先结束,那它的 ...
- 利用RestTemplate进行http调用
在对接API的时候,会涉及调用第三方的服务,这时候可以利用RestTemplate进行调用,下面给大家展示一个简单的调用demo. package com.tanlu.user.api.control ...
- memcached内存分配
Memcached默认情况下采用了名为Slab Allocator的机制分配.管理内存,最大单个存储对象大小为1M. page:分配给slab的最小内存空间,默认为1M,可以在启动时通过-l参数修改 ...
- 第二章:systemverilog声明的位置
1.package 定义及从package中导入定义(***) verilog中,对于变量.线网.task.function的声明必须在module和endmodule之间.如果task被多个modu ...
- Spring MVC 接入 rabbitMQ
依赖包 <dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spr ...