我刚刚是刚刚接触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对象
FragmentPagerAdapter 继承自 PagerAdapter。相比通用的 PagerAdapter,该类更专注于每一页均为 Fragment 的情况。如文档所述,该类内的每一个生成的 Fragment 都将保存在内存之中,因此适用于那些相对静态的页,数量也比较少的那种;如果需要处理有很多页,并且数据动态性较大、占用内存较多的情况,应该使用 FragmentStatePagerAdapter

更多相关文章

  1. android(基于回调)的事件处理
  2. android 开发使用 kotlin 进行点击事件监听和界面跳转,直接传也方
  3. Unable to start activity ComponentInfo 解决方法
  4. Android 安装apk的方法
  5. Android SQLite数据库解析并使用两种方法实现增删改查
  6. Android 读取XML的两种方法。
  7. Android使用EventBus传递事件
  8. android window.requestWindowFeature()常用方法
  9. MediaExtractor的seekTo方法精确定位到指定帧

随机推荐

  1. Android(安卓)ViewPager初探:让页面滑动起
  2. Android原生下拉刷新SwipeRefreshLayout
  3. Unable to recreate missing debug keyst
  4. Android(安卓)ImageView的拖拽实现
  5. %s使用
  6. Android实用代码七段(三)
  7. MATCH_PARENT和FILL_PARENT区别
  8. AOSP: eclipse 导入 android Settings 源
  9. RemoteViews 中暗藏的坑
  10. appium windows下环境搭建