最近有很多事情要忙,一直没有更新博客,今天得空来写一写。话说春天什么时候来,还是冷兮兮的。
今天还是来讲下Tab的实现。android自带的Tab在有比较多条目的时候会显得非常挤,这样不仅不美观,更加影响操作。如果Tab能做成左右滑动的,那就非常好了。其实实现这种效果并不难,而且方法也不少。今天给大家介绍下用gallery这个组件来实现的方法。
首先我们需要写Gallery的适配器。这里我们要注意的是Gallery有一个特点,就是起始一个元素的左边会留下一块空位,如下图所示:
这样我们的Tab显然不是很完美,如何解决?开始想的就是去看gallery的源码,重写他。不过既然我们做的是滑动的,让他左右都可滑动不就ok了?要实现左右滑动,要做的事情就是让里面的元素循环。Gallery是即时显示图像的,可以通过两点来做到:
1.让getCount()方法返回一个非常大的值。
2.在getView()中显示的时候通过循环取余来实现一直显示数组中的有限值。
而且Gallery还提供了一个setSelection()方法,用来设置当前选择的条目,我们将显示的位置放在比较靠后的位置,这样就不会在左滑的时候滑到头,那样就可以以假乱真了。
下面来看下适配器代码:
注释已经写的很清楚了,应该没什么问题。
这里程序中使用了
这是一个引用自制layout 元素的用法,必须在res/values 下面添加一个attrs.xml,并在其中定义 <declare-styleable> 标签TAG,目的是自定义layout 的背景风格,并且通过TypeArray 的特性,让相同的Layout 元素可以重复用于每一张图片,大家可以看下apiDemos里gallery1s的用法,这里也是参考它的用法。看下attrs.xml的代码:
还要说一点的是,对于选中和未选中的背景处理。我们在onItemClick中得到选中的Tab,然后为选中的和未选中的设置一个背景。这个背景这里用自定义图形shape的方法来定义,在res/drawable下新建xml文件,tab_button_select.xml中内容如下:
其中的gradient标签实现一个从startColor到endColor角度为90渐变色。其实我们经常用这种方式来自定义我们的控件,可以用来实现圆角,渐变,描边等效果,分别在shape根节点下用gradient,corners,stroke标签实现,大家可以自己去试试,效果还是很好的,也很简单。
下面来看下MainActivity的代码,显示layout的方法和我以前一篇仿Iphone效果的Tab中一样,通过隐藏和显示相应的layout来实现。当然,也可以通过intent来指向不同的Activity等方法来做。注意定义要显示的Tab数组的时候,因为我们第一个显示的不是第一个Tab,所以适当调整下数组的定义顺序,同样对应的layou也是。
最后就是main.xml布局文件了:
这样我们用gallery实现的可滑动的Tab就完成了,看下最后的效果。
大家有什么问题可以留言交流哈。特别是对让左边不留空的方法有好的解决办法的话,希望能提出来,大家一起学习交流。
分享到:
相关推荐
android UI进阶之实现listview中checkbox的多选与记录
androidUI进阶之实现listview的下拉加载.pdf
android页面滑动效果。
android_UI进阶之实现listview的下拉加载,实用简单
android_UI进阶之style和theme的总结,供学习交流,谢谢~
该文档详细介绍了listView的分页加载
现在的大多数应用都会有一个欢迎引导页面如图所示通过左右滑动来告知用户一些功能特性这个引导图效果用ViewPager可以很轻松的实现 正如前面所说ViewPager是用来展示一组数据的所以肯定需要Adapter来绑定数据和v
UI开发之Android gallery实现图片的循环旋转 UI开发之Android gallery实现图片的循环旋转 UI开发之Android gallery实现图片的循环旋转 UI开发之Android gallery实现图片的循环旋转
关于listview的操作五花八门,有下拉刷新,分级显示,分页列表,逐页加载等,以后会陆续和大家分享这些技术,今天讲下下拉加载这个功能的实现。最初的下拉加载应该是ios上的效果,现在很多应用如新浪微博等都加入了...
android UI进阶之android中隐藏的layout 抽屉的使用方法,需要的朋友可以参考一下
自UI工作原理:Viewgroup/View/Window/WindowManager之间关系 Android事件分发机制 View重要属性和方法 自定义控件实现
Android Drawable 概述 Bitmap & .9.png Shape XML StateListDrawable Android图形编程 类简介 Canvas Paint Typeface
UI开发第六篇——仿QQ的滑动TabUI开发第六篇——仿QQ的滑动Tab
第05章 UI进阶.html
UI开发第七篇之Android gallery实现图片的循环旋转UI开发第七篇之Android gallery实现图片的循环旋转
031_android UI组件之 Gallery画廊控件,很细致的视频教程,这个可以学哦。
Android UI界面之切换主题的实现代码,在安卓手机中,这是个比较有用且比较基础的功能,无刷新切换android系统默认的窗口风格,这个你知道的,这是个简单的测试例子。
Android UI 界面设计 移动APP