Android控件定制--具有滑动页面的容器+具有滑动菜单的容器【附效果图附源码】
来源:互联网 发布:linux修改jdk环境变量 编辑:程序博客网 时间:2024/04/29 21:56
这个例子是我在业余的时间写的,主要是滑动菜单和滑动页面的效果,因为对这个效果比较感兴趣,当然也参考了一些网友提供的资料,在此表示感谢。滑动菜单主要使用了layout的形式完成,而滑动页面使用了scroll的形式完成,主要是为了掌握两种滑动的方式,因为只是个例子,所以只是简单的用了一些控件,希望能给大家提供参考吧!下面先来看看效果图:
结合上面的三个图片,简单介绍下这个例子的功能
左上图:具有滑动功能的容器,可以在里面添加添加自定义布局页面,在本例中添加了4个PAGE,可以通过手指滑动实现页面切换
右上图:具有滑动菜单的容器,组合了左图的功能,点击Menu按钮可以打开/关闭菜单,也可以通过手指滑动Menu所在的标题栏来实现菜单的打开/关闭
下图:在平板上运行的效果
我觉得代码写得还比较清晰,必要的注释也都加上了,下面就简单介绍下:
源码里一共就使用了三个类:
ScrollContainer.java 这个类是对具有滑动页面功能容器的封装
SlidingMenuContainer.java 这个类是对具有滑动菜单容器类的封装
MainActivity.java 主界面,主要做两件事:初始化,添加监听
下面来看看MainActivity的部分代码:
@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); init(); addListener();}
init初始化方法用于初始化各控件以及变量,包括初始化前面提到的两个容器类,其中ScrollContainer是在main.xml中引用的,SlidingMenuContainer则是通过new出来的,SlidingMenuContainer对外提供了三个方法:
setMenuView,setMainView,toggleMenu
setMenuView和setMainView在构造方法里调用,用来设置菜单视图和主界面视图
toggleMenu是在点击Menu按钮的时候调用,用来打开/关闭菜单,如下:
private void init() { ...... mOrderView = (RelativeLayout) mInflater.inflate(R.layout.main, null); mMenuView = (LinearLayout) mInflater.inflate(R.layout.sliding_menu, null); mMenuView.setLayoutParams(new LayoutParams(300, LayoutParams.FILL_PARENT)); mSlidingMenuContainer = new SlidingMenuContainer(this, mMenuView, mOrderView); setContentView(mSlidingMenuContainer);}
addListener用于添加监听,SlidingMenuContainer定义了OnMenuSlidingListener接口,
里面定义了onMenuOpen和onMenuClose方法,在菜单打开和关闭的时候调用,
只要注册了这个接口,菜单打开或关闭的时候便会回调这两个方法,
可以在里面加入打开或关闭的动画或其他功能
private void addListener() { mSlidingMenuContainer.setOnMenuSlidingListener(new OnMenuSlidingListener() { @Override public void onMenuOpen() { Log.d(TAG, "on menu open"); } @Override public void onMenuClose() { Log.e(TAG, "on menu close"); } });}
也许你注意到主界面与菜单之间有阴影效果,这是在SlidingMenuContainer的setMainView方法里多加入了一层背景视图实现的,详情请看代码。这个例子还有很多功能没有完善,不过效果已经出来了,欢迎大家下载源码!
源码下载点这里^^
- Android控件定制--具有滑动页面的容器+具有滑动菜单的容器【附效果图附源码】
- 具有Ajax自动建议功能的TextBox控件(附源码)
- Android侧边栏的自定义滑动实现(附源码)
- 让Delphi的标准TStatusBar状态栏控件具有容器功能
- Android 具有动画的 Viewpager滑动CircleIndicator指示器
- Android 具有左右滑动功能的时间轴
- ListView中每个item的左右滑动响应,附源码
- 一个简单的滑动门示例(附源码)
- Android客户端与服务端(jsp)之间json的传输与解析【附效果图附源码】
- 基于WebSocket实现的Android和H5聊天通讯实例【附效果图附所有源码】
- Android定制控件:带图标的TextView和可编辑文本框(附项目源码)
- 创建具有固定导航功能的滑动单页面布局网站
- 导航菜单横向左右滑动并和下方的控件实现联动(有效果图)
- 让ListView的焦点具有滑动的效果
- 积跬步,聚小流------具有滑动效果的导航
- 用SwipeBackLayout让activity具有滑动返回的效果
- 让具有导航栏的界面滑动返回
- 打造一个具有弹性滑动效果的TextView
- c# Invoke和BeginInvoke 区别
- 互联网创业者自杀,为何?
- iOS上访问HTTPS站点几种方法优缺点
- lr_convert_string_encoding 函数使用详解
- jackson json数据过滤,用于hibernate的懒加载对象级联关系的json解析
- Android控件定制--具有滑动页面的容器+具有滑动菜单的容器【附效果图附源码】
- 如何写系统需求分析书
- WebService笔记(二):简介
- 无违约金 小额贷
- 2014蓝桥杯B组初赛试题《啤酒和饮料》
- oracle中的exists 和not exists 用法详解
- bluetooth 4.0所支持的profile
- 分布式存储的一些概念
- linux下perforce命令行客户端使用