VeiwPager、Gallery、ViewFlipper区别
来源:互联网 发布:腾讯云mysql 外网连接 编辑:程序博客网 时间:2024/05/22 15:08
ViewFlipper继承ViewAnimator,切换view的时候是有动画效果的,适合做ppt,多界面的程序欢迎引导界面,算是个轻量级的组件,适合展示静态数据,少量数据。
ViewPager继承ViewGroup。看官网描述,这货和Fragment是好搭档,Fragment有自己的生命周期。也就是说ViewPager更适用复杂的视图切换,而且Viewpager有自己的adapter,这也让其适应复杂对象,实现数据的动态加载。
android的轮播图实现有多种方法,首先可以用gallery,不过这种方式已经过时,现在google官方推荐用viewpager来实现,同时viewflipper也可以实现,接下来我讲一下这三种方式在实现上的区别:
1、先说gallery,画廊的意思,一个锁定中心条目并且拥有水平滚动列表的视图,其使用galleryItemBackground作为Gallery适配器中的各视图的默认参数。如果你没有设置,你就需要调整一些Gallery的属性,比如间距spacing,
画廊中的视图应该使用Gallery.LayoutParams(作为Gallery的内部类)作为它们的布局参数类型。
继承关系
public class Gallery extends AbsSpinner
implements GestureDetector.OnGestureListener
java.lang.Object
android.view.View
android.view.ViewGroup
android.widget.AdapterView<T extends android.widget.Adapter>
android.widget.AbsSpinner
android.widget.Gallery
具体的提供的公共方法与保护方法,可参考农民伯伯的中文api文档。
2、ViewFlipper是android提供的一个view容器类,继承于ViewAnimator类,被添加到ViewFlipper中的两个或两个以上的视图之间将执行一个简单的ViewAnimator动画。一次仅能显示一个子视图。如果需要,可以设置间隔时间使子视图像幻灯片一样自动显示。
Xml中的属性
android:autoStart 是否自动自动动画,属性值为boolean
android:flipInterval 显示下一个视图的时间间隔
公共方法:
boolean isAutoStart() 视图显示到窗口上时是否会调用startFlipping()方法
boolean isFilpping() 子视图是否正在切换
boolean setAutoStart(boolean) 设置视图显示到窗口上时是否会调用
startFlipping()方法
boolean setFlipInterval(int ) 设置子视图间切换的时间间隔 ,参数为毫秒数
boolean startFlipping() 开始在子视图间定时循环切换
boolean stopFlipping() 停止切换
如果需要在视图上加入手势滑动跟视图切换时的渐变效果(由明到暗,或者由暗到明),可是通过android.view.GestureDetector类检测各种手势事件实现的,该类有两个回调接口(Interface):
A、GestureDetector.OnDoubleTapListener,用来通知DoubleTap双击事件,类似于鼠标的双击事件,接口三个抽象回调方法
B、GestureDetector.OnGestureListener,用来通知普通的手势事件(down、longPress、scroll、up等),接口具体的六个抽象回调函数如下
1)、onDown(MotionEvent e):down事件,表示按下事件
2)、onSingleTapUp(MotionEvent e):一次点击up事件,表示按下后的抬起事件
3)、onShowPress(MotionEvent e):down事件发生而move或则up还没发生前触发该事件,此事件一般用于通知用户press按击事件已发生
4)、onLongPress(MotionEvent e):长按事件,down事件后up事件前的一段时间间隔后(由系统分配,也可自定义),如果仍然按住屏幕则视为长按事件
5)、onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY):滑动手势事件,例如scroll事件后突然up,fling的速度大小由e每秒x和y改变大小决定
6)、onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY):在屏幕上拖动事件,即down按下点——scroll拖动——up抬起点的move移动事件
3、ViewPager是在android.support.v4包里面,利用它,我们可以做splash界面中开机引导,或者页面菜单等,使用它与使用listview一样,需要用到适配器,ViewPager的适配器是PagerAdapter,它是基类提供适配器来填充页面ViewPager内部,ViewPager将调用它来取得所需显示的页面,而PagerAdapter数据变化时,
也会通知ViewPager。FragmentPagerAdapter或FragmentStatePagerAdapter继承自PagerAdapter。在这里需要说明一下,其实ViewPager应该和Fragment一起使用,至少谷歌官方是这么想的,但是在3.0之下,我们没有必要这么做。下面要注意,当你实现一个PagerAdapter,你必须至少覆盖以下方法:
Object instantiateItem(ViewGroup, int) 当需要加载新的item时,出发此方法
void destroyItem(ViewGroup, int, Object) 销毁多余的item
int getCount() 得到需要显示的item的数量
boolean isViewFromObject(View, Object) 返回true代表复用view对象
FragmentPagerAdapter 继承自 PagerAdapter。相比通用的 PagerAdapter,该类更专注于每一页均为 Fragment 的情况。如文档所述,该类内的每一个生成的 Fragment 都将保存在内存之中,因此适用于那些相对静态的页,数量也比较少的那种;如果需要处理有很多页,并且数据动态性较大、占用内存较多的情况,应该使用FragmentStatePagerAdapter。
- VeiwPager、Gallery、ViewFlipper区别
- 初探android Gallery and ViewFlipper
- 【横向滑动】gallery,ViewPager,ViewFlipper
- ViewPager和ViewFlipper和Gallery
- android - 滑动效果之ViewFlipper与ViewPager与Gallery
- android Gallery点击 跳到ViewFlipper全屏显示图片
- android - 滑动效果之ViewFlipper与ViewPager与Gallery
- Android 之 VeiwPager
- ViewFlipper和ViewPager的区别
- ViewFlipper
- ViewFlipper
- ViewFlipper
- ViewFlipper
- ViewFlipper
- ViewFlipper
- ViewFlipper
- ViewFlipper
- ViewFlipper
- C/C++笔记--static与const关键字分析
- HDU 2298 Toxophily
- 事件分发
- Android选取相册中的图片并对其进行压缩
- 仿太平洋电脑网客户端的搜索头
- VeiwPager、Gallery、ViewFlipper区别
- 今天看到别人关于bundle pmvs的信息就转载一下
- PHP中token验证
- Bootstrap-sass<1>安装与基本结构
- Java学习提要——overloading与override,this.与super()
- 查询并禁止apache中异常访问量的用户
- 傻子也能看懂的迪杰斯特拉算法(转)
- 关于android studio 安装Genymotion插件遇到的问题
- CentOS7安装配置RabbitMQ