012_ViewPager 翻译学习

ViewPager

官方:http://developer.android.com/reference/android/support/v4/view/ViewPager.html

相关博客:http://blog.csdn.net/harvic880925/article/details/38453725

类信息:public class ViewPager extends ViewGroup

类继承结构:java.lang.Object—>android.view.View—>android.view.ViewGroup—>android.support.v4.view.ViewPager

简介:ViewPager是一个布局管理器,它允许用户通过左右滑动来切换操作页面。这些页面是通过实现PagerAdapter生成的。(官方文档解释ViewPager还处于一个早期的设计开发中,后面的Api接口可能会发生变化)

ViewPager通常用来与Fragment关联,它可以方便地管理每个页面的生命周期。FragmentPagerAdapter和FragmentStatePagerAdapter是官方提供的两个标准模板,它包含一些通用的情况以及所有用户接口的简单实现。

嵌套类:ViewPager.LayoutParams   给将要添加至ViewPager的页面提供布局参数

ViewPager.OnPageChangeListener接口  响应选中页面状态变化的回调接口

ViewPager.PageTransformer 接口  当一个可见的或者已关联的页面滑动时被调用。用于提供切换动画。android 3.0+

ViewPager.SavedState    ViewPager保存的持久化状态

ViewPager.SimpleOnPageChangeListener   ViewPager.OnPageChangeListener接口的简单实现

常量:1、SCROLL_STATE_DRAGGING   标识用户正在拖动这个页面

2、SCROLL_STATE_IDLE   标识页面处于空闲状态,即用户未操作ViewPager

3、SCROLL_STATE_SETTLING   标识页面正在切换过程中

公共方法:

1、  public void addFocusables (ArrayList<View> views, intdirection, int focusableMode)

告诉ViewPager,Views中的view需要获得焦点。

2、  public void addTouchables (ArrayList<View> views)

告诉ViewPager,Views中的view需要响应触摸事件。

3、  public void addView (View child, int index, ViewGroup.LayoutParamsparams)

向ViewPager中添加一个child view。需要注意的是,不能在draw、onDraw、dispatchDraw中调用这个方法。

4、  public boolean arrowScroll (int direction)

通过按钮实现翻页效果时可以调用这个方法。

5、  public boolean beginFakeDrag ()

开启页面滑动阻止模式。这在ViewPager页面中存在可滑动的子View(如页面中包含ListView)时非常有用,此时它仍然可以控制事件的捕捉和滑动行为。调用fakeDragBy(float)指定阻止拖动,调用endFakeDrag()结束拖动阻止模式,并在需要的时候滑动。

当处于滑动阻止模式时,ViewPager将会忽略所有的触摸操作。但是如果已经在开始一个拖动操作了,则不能启动滑动阻止模式,即它将返回false。

6、  public void fakeDragBy (float xOffset)

使用xOffset(单位像素)距离来阻止拖动。在此之前必须首先调用beginFakeDrag。

7、  public void endFakeDrag ()

结束滑动阻止模式。

8、  public boolean isFakeDragging()

当处于滑动阻止模式时返回true,否则false。

9、  public boolean canScrollHorizontally (int direction)

检查当前页面是否可向指定方向滑动。direction为正时代表向右,为负时代表向左。

10、public voidcomputeScroll ()

在父容器要求子view更新它的滑动值得时候被调用。这将在子View使用一个Scroller对象滑动的过程中完成。

11、public booleandispatchKeyEvent (KeyEvent event)

按focus的传递路径分发事件。如果这个事件已经被处理,不再需要继续处理,则返回true,如果希望其他控件处理这个事件,则返回false。

12、public booleandispatchPopulateAccessibilityEvent (AccessibilityEvent event)

13、public void draw(Canvas canvas)

这个方法会在View的宽高以及摆放位置被确定后才被调用,用来绘制它及其子View的视图。

14、public booleanexecuteKeyEvent (KeyEvent event)

调用这个方法来使可滑动的View按照event事件滑动。这个event不是真正的按照视图层次传递过来的事件,但是处理的效果将会是相同的。就像performClick一样,单击事件不一定发生,但是依然可以通过这个方法去执行一次单击事件。如果这个事件已经被处理则返回true,否则返回false。

15、publicViewGroup.LayoutParams generateLayoutParams (AttributeSet attrs)

按照attrs中属性生成一个layoutparams对象。

16、public PagerAdaptergetAdapter ()

   返回当前的pageradapter

17、public intgetCurrentItem ()

18、public intgetOffscreenPageLimit ()

获得缓存的页面个数,默认值是1.

19、public voidsetOffscreenPageLimit (int limit)

设置Viewpager视图结构中除当前显示页面之外需要缓存的空闲页面数量。这些页面将在需要的时候被重建。

这个用来让程序员选择优化,以使得页面切换过渡平滑。如果仅仅包含3-4个页面,可以选择将他们全部缓存,这样在他们之间导航时不会消耗太多的时间。

默认值为1.

20、public intgetPageMargin ()

返回页面之间的间距。

21、public voidsetPageMargin (int marginPixels)

设置相邻页面间间距,单位像素。

22、public voidsetPageMarginDrawable (int resId)

public void setPageMarginDrawable (Drawabled)

为相邻页面间距中添加一个过渡内容。

23、public booleanonInterceptTouchEvent (MotionEvent ev)

触摸事件拦截控制。  和android View触摸事件传递机制相同。

24、public ParcelableonSaveInstanceState ()

public void onRestoreInstanceState(Parcelable state)

保存和恢复状态数据。

25、public booleanonTouchEvent (MotionEvent ev)

26、public voidremoveView (View view)

移除一个页面。不能在draw、onDraw、dispatchDraw或相关方法中调用这个方法。

27、public void setAdapter(PagerAdapter adapter)

为ViewPager填充适配器。

28、public voidsetCurrentItem (int item, boolean smoothScroll)

设置需要跳转的页面。

参数:item   页面的位置

smoothScroll  为true时即平滑地过渡到设置的页面,否则立即跳转。

29、public voidsetCurrentItem (int item)

设置需要跳转的页面。

30、public voidsetOnPageChangeListener (ViewPager.OnPageChangeListener listener)

设置页面切换监听器。

31、public voidsetPageTransformer (boolean reverseDrawingOrder, ViewPager.PageTransformertransformer)

设置页面过渡动画。重写滑动时的外观及感受。

参数:reverseDrawingOrder  为true时将首先绘制目标页面的视图再绘制当前视图。

Transformer ViewPager接受的动画对象

 

受保护的方法:

1、  protected boolean canScroll (View v, boolean checkV, int dx, int x,int y)

2、  protected boolean checkLayoutParams (ViewGroup.LayoutParams p)

3、  protected void drawableStateChanged ()

当view页面状态变化影响到drawables对象显示的时候将被调用。

如果这个View拥有StateListAnimator对象,那么在这些状态变化时,这些过渡动画也会运行。

重写这个方法时应该调用父类的实现。

4、  protected ViewGroup.LayoutParams generateDefaultLayoutParams ()

生成一个默认的包含布局参数的集合对象。这些参数将被请求,当addView(View)方法中没有提供布局参数时。如果这个方法返回null,添加这个View时将会抛出异常。

5、  protected ViewGroup.LayoutParams generateLayoutParams(ViewGroup.LayoutParams p)

生成一个包含布局参数的集合对象。这个方法在向ViewGroup中添加View时,而这个View的布局参数未通过checkLayoutParams(android.view.ViewGroup.LayoutParams)时被调用。这个方法将返回一个新的合适的布局参数集合。

6、  protected int getChildDrawingOrder (int childCount, int i)

7、  protected void onAttachedToWindow ()

当View关联到窗口时调用。这个时候View拥有一个界面区域并将要被绘制。因此,它总是在onDraw方法之前被调用,但是可能在onMeasure之前,也可能在之后执行。

8、  protected void onDetachedFromWindow ()

在View与窗口取消关联时执行,此时它不再拥有一块界面区域。

9、  protected void onDraw (Canvas canvas)

10、protected voidonLayout (boolean changed, int l, int t, int r, int b)

当View需要分配大小并且为子View安排位置时被调用。派生类应该重写这个方法,并且调用子View的layout方法。

11、protected voidonMeasure (int widthMeasureSpec, int heightMeasureSpec)

被measure(int,int)计算View和它的内容所需要的宽和高,获得measuredwidth、measureheight值。子类可以重写这个方法已提供更准确有效的尺寸。

当重写这个方法时必须调用setMeasuredDimension(int, int)方法来保存计算的宽和高,否则将抛出异常。

基类默认的实现是计算背景的尺寸。子类重写这个方法时必须保证计算出的宽和高至少为这个View所需的最小宽和高。

12、protected voidonPageScrolled (int position, float offset, int offsetPixels)

   这个方法在页面滑动时被调用,可能是通过程序实现的切换也可能是用户的操作。子类重写这个方法时应该调用父类的实现。

参数:position当前显示的页面位置

Offset 取值在[0, 1)之间,标识当前页面的偏移百分比。

offsetPixels  当前页面偏移的像素位置  

13、protected booleanonRequestFocusInDescendants (int direction, Rect previouslyFocusedRect)

14、protected voidonSizeChanged (int w, int h, int oldw, int oldh)

当View的尺寸发生变化时调用。如果一个view刚刚加入到View结构中,那么返回的旧的宽度和高度均为0.

15、protected booleanverifyDrawable (Drawable who)

当子类显示他自己的drawable对象时使用,显示这个drawable对象需要重写这个方法并且返回true。它允许这些drawable的动画执行。

子类覆盖时应该调用父类的实现。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值