前言

控件可以通过 setVisibility 方法进行显示和隐藏。默认情况下没有动画效果,直接显示和隐藏有时候显得比较生硬。

带有动画效果的显示和隐藏更加优雅,例如在阅读小说时,点击小说弹出设置时,会伴随着滑动的动画。本文就通过这个例子来进行说明,先上效果图:

实现

下面说下如何实现。

在 xml 中创建动画

首先在 res 文件夹中新建 anim 文件夹,然后编写要实现的动画。

对于上面的动画效果,需要分别定义底部弹出动画和顶部弹出动画:

bottom_enter.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="250"
        android:toYDelta="0%"
        android:fillAfter="true"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:fromYDelta="100%" />
</set>

top_enter.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="250"
        android:toYDelta="0%"
        android:fillAfter="true"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:fromYDelta="-100%" />
</set>

说明一下,fromYDelta 和 toYDelta 中的百分数是相对于控件自身的比例,它是相对于控件自身的位置,所以 toYDelta 都是 0%,也就是回到它本来的位置,而正负代表了方向。

在代码中使用

下面的操作是点击 Button 后发生的:

    Animation topAnim = AnimationUtils.loadAnimation(
            TestActivity.this, R.anim.read_setting_top_enter);
    Animation bottomAnim = AnimationUtils.loadAnimation(
            TestActivity.this, R.anim.read_setting_bottom_enter);
    mTopView.startAnimation(topAnim);
    mBottomView.setAnimation(bottomAnim);
    mTopView.setVisibility(View.VISIBLE);
    mBottomView.setVisibility(View.VISIBLE);

一开始控件是隐藏的,在显示控件前,给控件添加动画,那么它的显示就带有动画效果了。

写在最后

本文主要通过一个例子说明了如何在显示控件时带有动画效果。在隐藏控件时,同样可以带有动画效果,思路和显示时一样,在动画结束后隐藏控件即可,这里就不啰嗦了。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐