1.引言

在开发过程中,我们经常会遇到需要显示或隐藏view视图的情况,如果在隐藏或显示view的过程中加上动画,能让交互更加的友好和动感,本文将介绍如何使用圆形揭露动画巧妙地隐藏或显示view。

2.圆形揭露动画简介

圆形揭露动画是动画的一种,是由viewanimationutils类提供的,调用viewanimationutils.createcircularreveal()方法可以创建圆形揭露动画,使用此动画要求api级别为21及以上版本,createcircularreveal()方法的参数如下:

//view:使用圆形动画的视图
//centerx:裁剪圆形的中心的x坐标,这个中心是指相对于视图本身
//centery:裁剪圆形的中心的y坐标,这个中心是指相对于视图本身
//startradius:圆形的起始半径
//endradius:圆形的结束半径
public static animator createcircularreveal(view view,int centerx,  int centery, float startradius, float endradius)

3.使用圆形揭露动画隐藏或显示view

3.1 简易布局

简易布局如下:

<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:orientation="vertical"
    tools:context=".mainactivity">

    <button
        android:id="@+id/btn_hide_or_show"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="隐藏或显示"
        android:textcolor="@color/black"
        android:textsize="18sp" />

    <imageview
        android:id="@+id/imageview"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_margintop="50dp"
        android:src="@mipmap/ic_launcher"/>
</linearlayout>

3.2 使用圆形揭露动画隐藏view

首先要计算得出view相对于自身的中心点的x坐标和y坐标,然后调用math.hypot()方法计算得出圆形的半径,接着调用viewanimationutils.createcircularreveal(imageview, ivxcenter, ivycenter, circleradius, 0f)创建圆形揭露动画,增加动画执行的listener,在动画执行结束后调用imageview.setvisibility(view.gone),最后启动动画,示例如下:

if (build.version.sdk_int >= build.version_codes.lollipop) {
     int width = imageview.getwidth();
     int height = imageview.getheight();
     int ivxcenter = width/2;
     int ivycenter = height/2;
     float circleradius = (float) math.hypot(ivxcenter, ivycenter);
     animator circularreveal = viewanimationutils.createcircularreveal(imageview, ivxcenter, ivycenter, circleradius, 0f);
     circularreveal.addlistener(new animatorlisteneradapter() {
         @override
         public void onanimationend(animator animation) {
             super.onanimationend(animation);
             imageview.setvisibility(view.gone);
             isvisible = false;
         }
     });
     circularreveal.start();
 }else {
     imageview.setvisibility(view.gone);
     isvisible = false;
 }

3.3 使用圆形揭露动画显示view

使用圆形揭露动画显示view,先计算得出view相对于自身的中心点的x坐标和y坐标,然后算出圆形的半径,接着创建圆形揭露动画,此时的起始半径是0f,结束半径是圆形的半径,调用imageview.setvisibility(view.visible),最后启动动画,示例如下:

if (build.version.sdk_int >= build.version_codes.lollipop) {
    int width = imageview.getwidth();
    int height = imageview.getheight();
    int ivxcenter = width/2;
    int ivycenter = height/2;
    float circleradius = (float) math.hypot(ivxcenter, ivycenter);
    animator circularreveal = viewanimationutils.createcircularreveal(imageview, ivxcenter, ivycenter, 0f, circleradius);
    imageview.setvisibility(view.visible);
    isvisible = true;
    circularreveal.start();
}else {
    imageview.setvisibility(view.visible);
    isvisible = true;
}

4.总结

使用圆形揭露动画隐藏或显示view,主要是计算出view相对于自身的中心点的x坐标和y坐标,并计算出圆形半径,在调用viewanimationutils.createcircularreveal()方法创建的时候要注意起始半径和结束半径的填写,隐藏view的时候在动画执行完毕后setvisibility()方法隐藏,显示view的时候,在动画启动前调用setvisibility()方法显示。

到此这篇关于android如何使用圆形揭露动画巧妙地隐藏或显示view的文章就介绍到这了,更多相关android隐藏或显示view内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!