ViewFlipper飞掠视图

QuibblerQuibbler 2020-02-05 约 6 分钟 1837 次阅读

ViewFlipper

同样是滚动视图,可以作为APP首页的banner。效果和ViewPager一样,名气却远不如ViewPager。

1、使用ViewFlipper

<ViewFlipper
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        
    </ViewFlipper>

ViewPager是通过设置ViewPagerAdapter添加数据的,如何向ViewFlipper中添加View呢?

2、布局中添加子控件

直接在布局中ViewFlipper节点下添加控件,所有在ViewFlipper节点下的控件都会被当做子控件:

<ViewFlipper
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        //第一个View 
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:scaleType="fitCenter"/>
        //第二个View    
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:scaleType="fitCenter"/>
            
    </ViewFlipper>

这种方式最简单,但是实际场景中并不灵活,因为很多数据都是变化的。不可能写死。

3、代码中添加子控件

ViewFlipper有一个添加View的方法addView(View child),可以向ViewFlipper中动态添加滚动页面:

//向ViewFlipper中添加View,加入到最后一个位置
    mViewFlipper.addView(view);

4、滚动动画

默认的ViewFlipper是一张一张的替换,显得死板。好在可以设置滚动替换的动效,变得好看高大上。在res/anim/文件夹下定义不同的动画

进入动画:通过属性android:inAnimation,或者方法setOutAnimation(Animation outAnimation)设置:

<?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <translate
            android:fromXDelta="100%p"
            android:toXDelta="0%p"
            android:duration="1000" />
    </set>

出去动画:通过属性android:outAnimation,或者方法setInAnimation(Animation inAnimation)设置:

<?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <translate
            android:duration="1000"
            android:fromXDelta="0%p"
            android:toXDelta="-100%p" />
    </set>

代码设置动画,载入定义的动画xml文件:

mViewFlipper.setInAnimation(AnimationUtils.loadAnimation(context, R.anim.anim_in));

5、通用属性方法

ViewFlipper还有一些基本属性和方法。

5.1、属性

android:autoStart: 设置自动加载下一个View

android:flipInterval:设置View之间切换的时间间隔

5.2、方法

isFlipping: 判断View切换是否正在进行

setFilpInterval:设置View之间切换的时间间隔

startFlipping: 开始View的切换,而且会循环进行

stopFlipping: 停止View的切换

setOutAnimation:设置切换View的退出动画

setInAnimation: 设置切换View的进入动画

showNext: 显示ViewFlipper里的下一个View

showPrevious: 显示ViewFlipper里的上一个View

相关推荐

WilliamChart:轻量美观的 Android 图表库实战
精选开源

WilliamChart:轻量美观的 Android 图表库实战

WilliamChart:轻量美观的 Android 图表库实战数据可视化是运动、健康、金融、统计类 App 的刚需。MPAndroidChart 功能最全但偏重复杂,WilliamChart 走的则是"轻量 + 美观 + Kotlin 原生"路线——v3 用 Kotlin 完全重写,API 极简,一行 chart.animate(dataSet) 就能把数据画成带动画的折线/柱状/环形图,开箱即

175