Android 自定义 View 实现公告小喇叭功能

需要实现的效果图如下

1620977133160189.gif

知识点介绍

实现该种效果需要用到 Android SDK 中提供的 ViewFlipper 类。翻译它的注释如下:

可以在已添加到其中的两个或多个视图之间进行动画处理。 一次只显示一个孩子。 如果有要求,可以按固定的时间间隔自动在每个孩子之间切换。

再来看下该类的关系图

20210514163946.jpg

从上面的关系图可见该类是个 ViewGroup(存在感几乎为零)。那感觉我们只要将多个 TextView 放到该容器中便可实现效果图的样式了(这也太简单了)。

ViewFlipper 介绍

xml 属性

属性名称 解释
android:autoStart 为 true 时,自动开始动画
android:flipInterval view 间切换的时间间隔
android:inAnimation 进入动画
android:outAnimation 离开动画

java 方法

方法名称 解释
isFlipping 判断View切换是否正在进行
setFilpInterval 设置View之间切换的时间间隔
startFlipping 开始View的切换,而且会循环进行
stopFlipping 停止View的切换
setOutAnimation 设置切换View的退出动画
setInAnimation 设置切换View的进入动画
showNext 显示ViewFlipper里的下一个View
showPrevious 显示ViewFlipper里的上一个View

ViewFlipper 使用

1、ViewFlipper 布局

  <ViewFlipper
        android:id="@+id/viewflipper"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:flipInterval="2000"
        android:inAnimation="@anim/up_in"
        android:outAnimation="@anim/up_out"
        android:persistentDrawingCache="animation">

        <Button
            android:id="@+id/btn"
            android:layout_width="match_parent"
            android:layout_height="158dp"
            android:background="@color/blue"
            android:text="第一个" />

        <Button
            android:id="@+id/btn1"
            android:layout_width="match_parent"
            android:layout_height="158dp"
            android:background="@color/red"
            android:text="第二个" />


 </ViewFlipper>
复制代码

2、进入滑出动画

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

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

复制代码

通过以上2步变实现了基础版的轮播小喇叭功能。如果本文仅止于此那就太没意思了,下面介绍进阶版

进阶

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享