前言
控件可以通过 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);
一开始控件是隐藏的,在显示控件前,给控件添加动画,那么它的显示就带有动画效果了。
写在最后
本文主要通过一个例子说明了如何在显示控件时带有动画效果。在隐藏控件时,同样可以带有动画效果,思路和显示时一样,在动画结束后隐藏控件即可,这里就不啰嗦了。