Android控件定制--具有滑动页面的容器+具有滑动菜单的容器【附效果图附源码】
2014-04-05 11:59
411 查看
在写这篇文章前,先小小的感慨下,一年没写博客了,不是没东西写,工作上要做的东西实在太多,有空闲的时间基本上都在学习新的东西,每做完一个功能都想写个博客总结下,可是也不想随便敷衍,导致有几篇文章只写了一半还留在草稿箱里,也可能是因为长时间不写博客变得有些懒了!现在时间不那么紧,所以逼着自己写完这篇博客,原因很简单,可以给别人提供参考,也可以给自己以后复习。这一年的时间里,真的接触了很多新的东西,先开发了一个简易的launcher,然后搞板子烧录相关的工作,修改系统的一些界面和功能,做播放器修改ffmpeg解码库,修改framework,开发继电器驱动,空鼠鼠标键盘驱动,空鼠重力驱动,研究了dongle里的代码,等等等等,也算是接触了android各个模块的开发了,在此过程中遇到了很多困难,在论坛上求助过,也加过一些技术群,更多的是在网上查到了宝贵的资料,才让我完成了这所有的功能!!所以很感谢那些愿意把自己的经验分享给大家的人,有时间我也多跟大家分享分享。
回归主题,这个例子是我在业余的时间写的,主要是滑动菜单和滑动页面的效果,因为对这个效果比较感兴趣,当然也参考了一些网友提供的资料,在此表示感谢。滑动菜单主要使用了layout的形式完成,而滑动页面使用了scroll的形式完成,主要是为了掌握两种滑动的方式,因为只是个例子,所以只是简单的用了一些控件,希望能给大家提供参考吧!下面先来看看效果图:
结合上面的三个图片,简单介绍下这个例子的功能
左上图:具有滑动功能的容器,可以在里面添加添加自定义布局页面,在本例中添加了4个PAGE,可以通过手指滑动实现页面切换
右上图:具有滑动菜单的容器,组合了左图的功能,点击Menu按钮可以打开/关闭菜单,也可以通过手指滑动Menu所在的标题栏来实现菜单的打开/关闭
下图:在平板上运行的效果
我觉得代码写得还比较清晰,必要的注释也都加上了,下面就简单介绍下:
源码里一共就使用了三个类:
ScrollContainer.java 这个类是对具有滑动页面功能容器的封装
SlidingMenuContainer.java 这个类是对具有滑动菜单容器类的封装
MainActivity.java 主界面,主要做两件事:初始化,添加监听
下面来看看MainActivity的部分代码:
init初始化方法用于初始化各控件以及变量,包括初始化前面提到的两个容器类,其中ScrollContainer是在main.xml中引用的,SlidingMenuContainer则是通过new出来的,SlidingMenuContainer对外提供了三个方法:
setMenuView,setMainView,toggleMenu
setMenuView和setMainView在构造方法里调用,用来设置菜单视图和主界面视图
toggleMenu是在点击Menu按钮的时候调用,用来打开/关闭菜单,如下:
addListener用于添加监听,SlidingMenuContainer定义了OnMenuSlidingListener接口,
里面定义了onMenuOpen和onMenuClose方法,在菜单打开和关闭的时候调用,
只要注册了这个接口,菜单打开或关闭的时候便会回调这两个方法,
可以在里面加入打开或关闭的动画或其他功能
也许你注意到主界面与菜单之间有阴影效果,这是在SlidingMenuContainer的setMainView方法里多加入了一层背景视图实现的,详情请看代码。这个例子还有很多功能没有完善,不过效果已经出来了,欢迎大家下载源码!
源码下载点这里^^
回归主题,这个例子是我在业余的时间写的,主要是滑动菜单和滑动页面的效果,因为对这个效果比较感兴趣,当然也参考了一些网友提供的资料,在此表示感谢。滑动菜单主要使用了layout的形式完成,而滑动页面使用了scroll的形式完成,主要是为了掌握两种滑动的方式,因为只是个例子,所以只是简单的用了一些控件,希望能给大家提供参考吧!下面先来看看效果图:
结合上面的三个图片,简单介绍下这个例子的功能
左上图:具有滑动功能的容器,可以在里面添加添加自定义布局页面,在本例中添加了4个PAGE,可以通过手指滑动实现页面切换
右上图:具有滑动菜单的容器,组合了左图的功能,点击Menu按钮可以打开/关闭菜单,也可以通过手指滑动Menu所在的标题栏来实现菜单的打开/关闭
下图:在平板上运行的效果
我觉得代码写得还比较清晰,必要的注释也都加上了,下面就简单介绍下:
源码里一共就使用了三个类:
ScrollContainer.java 这个类是对具有滑动页面功能容器的封装
SlidingMenuContainer.java 这个类是对具有滑动菜单容器类的封装
MainActivity.java 主界面,主要做两件事:初始化,添加监听
下面来看看MainActivity的部分代码:
@Override public 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仿人人客户端(v5.7.1)——采用RelativeLayout做父容器,实现左侧滑动菜单(一)
- Android源码解析-仿今日头条PagerSlidingTabStrip滑动页面导航效果
- Android控件源码分析--AndroidResideMenu菜单
- Android 中 SwipeLayout一个展示条目底层菜单的侧滑控件源码解析
- 【Android 开发】:UI控件之 ViewPager 多页面滑动效果控件的的使用
- android侧滑菜单SlidingMenu加上手势滑动及首次运行引导页面混合使用
- Android仿人人客户端(v5.7.1)——采用RelativeLayout做父容器,实现左侧滑动菜单(二)
- Android开发进阶自定义控件之滑动开关实现方法【附demo源码下载】
- 【Android 开发】:UI控件之 ViewPager 多页面滑动效果控件的的使用(二)
- Android定制控件:带图标的TextView和可编辑文本框(附项目源码)
- Android自定义组合控件:UIScrollLayout(支持界面滑动及左右菜单滑动)
- Android仿人人客户端(v5.7.1)——采用RelativeLayout做父容器,实现左侧滑动菜单(一)
- Android自己定义控件:老版优酷的三级菜单(效果图 + Demo)
- Android自定义组合控件:UIScrollLayout(支持界面滑动及左右菜单滑动)
- Android导航菜单横向左右滑动并和下方的控件实现联动
- Android导航菜单横向左右滑动并和下方的控件实现联动
- Android导航菜单横向左右滑动并和下方的控件实现联动
- 从Android源码入手解决ScrollView与内部控件的滑动冲突问题
- Android控件源码分析--AndroidResideMenu菜单
- Android仿人人客户端(v5.7.1)——采用RelativeLayout做父容器,实现左侧滑动菜单(一)