android中轮播图的实现
我刚刚是刚刚接触android半年的小小鸟,通过做过的一些demo,与小项目对android有了一个初步的自己的了解,接下来关于轮播图,因为我的实际需求,从网上参考一些大牛们写的小demo,渐渐有了自己的理解,现在写出来,作为每周的总结,来加深理解。
android的轮播图实现有多种方法,首先可以用gallery,不过这种方式已经过时,现在google官方推荐用viewpager来实现,同时viewflipper也可以实现,接下来我讲一下这三种方式在实现上的区别:
1、先说gallery,画廊的意思,一个锁定中心条目并且拥有水平滚动列表的视图,其使用galleryItemBackground作为Gallery适配器中的各视图的默认参数。如果你没有设置,你就需要调整一些Gallery的属性,比如间距spacing,
画廊中的视图应该使用Gallery.LayoutParams(作为Gallery的内部类)作为它们的布局参数类型。
继承关系
public classGalleryextendsAbsSpinner
implementsGestureDetector.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,你必须至少覆盖以下方法:
ObjectinstantiateItem(ViewGroup, int) 当需要加载新的item时,出发此方法
voiddestroyItem(ViewGroup, int, Object) 销毁多余的item
intgetCount() 得到需要显示的item的数量
boolean isViewFromObject(View, Object) 返回true代表复用view对象
更多相关文章
- android(基于回调)的事件处理
- android 开发使用 kotlin 进行点击事件监听和界面跳转,直接传也方
- Unable to start activity ComponentInfo 解决方法
- Android 安装apk的方法
- Android SQLite数据库解析并使用两种方法实现增删改查
- Android 读取XML的两种方法。
- Android使用EventBus传递事件
- android window.requestWindowFeature()常用方法
- MediaExtractor的seekTo方法精确定位到指定帧