咨询热线:023-63853373

24小时热线:13372636650

新闻中心

首页

产品方案

服务项目

开发案例
新闻资讯
联系我们

【Android】圆形揭露动画

2020/02/09  来源:乐潮信息

在Android系统中提供了一种圆形的揭露动画,具体表现为一个view以圆形的形式展开、揭示。所谓揭露动画,就是一种用于 View 之间,甚至界面之间的特殊过渡动画效果。通过ViewAnimationUtils.createCircularReveal 方法可以创建一个RevealAnimator动画,代码如下所示:

ViewAnimationUtils.createCircularReveal(

                view,

                x,//动画开始中心点X

                y,//动画开始中心点Y

                startR,//开始半径

                endR);//结束半径

如上,各参数的意思已做了注释。

接下来通过一个demo来更好的理解它的用法和效果:

首先定义一个布局文件,显示两张图片:

<LinearLayout

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:gravity="center"

        android:orientation="vertical">

        <ImageView

            android:id="@+id/img_1"

            android:layout_width="100dp"

            android:layout_height="100dp"

            android:src="@drawable/test" />

 

        <ImageView

            android:id="@+id/img_2"

            android:layout_width="100dp"

            android:layout_height="100dp"

            android:layout_marginTop="30dp"

            android:src="@drawable/test" />

    </LinearLayout>

然后为这两张图片添加点击事件:

 public void onViewClicked2(View view) {

        switch (view.getId()) {

            case R.id.img_1:

                Animator animator = ViewAnimationUtils.createCircularReveal(

                        img1,

                        img1.getWidth() / 2,//动画开始中心点X

                        img1.getHeight() / 2,//动画开始中心点Y

                        0,//开始半径

                        img1.getWidth());//结束半径

                animator.setInterpolator(new AccelerateDecelerateInterpolator());

                animator.setDuration(1500);

                animator.start();

                break;

            case R.id.img_2:

                Animator animator2 = ViewAnimationUtils.createCircularReveal(

                        img2,

                        0,

                        0,

                        0,

                        (float) Math.hypot(img2.getWidth(), img2.getHeight()));//根号下x的平方+y的平方

                animator2.setInterpolator(new AccelerateDecelerateInterpolator());

                animator2.setDuration(1500);

                animator2.start();

                break;

        }

    }

运行后点击图片我们可以看到如下效果:

初始效果:

点击第一张图:



点击第二张图:

 

我们可以根据自己需要的效果来设置动画开始的中心点,以及开始和结束的半径,来实现我们想要的效果。

不光如此,我们还可以为activity的根部局设置揭露动画来实现activity的转场动画。

在新activity的onCreate方法中设置:

llContent.post(new Runnable() {

            @Override

            public void run() {

                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

                    Animator animator =  createCircularReveal(llContent,llContent.getWidth()/2,llContent.getHeight()/2,

                            0, (float) Math.hypot(llContent.getWidth(),llContent.getHeight()),2000);

                    animator.start();

                }

            }

        });

 

其中llcontent是根部局,动画开始中心是布局的中心,动画开始半径是0,结束半径是对角线长度的一半,动画时间设置的是2秒,这样在进入activity的时候就可以看到整个布局是由中心向外以圆形的方式展开的。值得注意的是,该动画效果是从Android5.X开始添加的,在使用时我们要注意版本的控制。

 

乐潮信息www.leco-tec.com原创,引用请表明出处

开发三级分销系统APP的好处

重庆APP开发乐潮科技认为:三级分销系统是各路商家的最爱,这句话说的绝对没毛病。

手机app定制开发要根据用户市场来

重庆app开发公司乐潮科技认为,随着移动互联网技术的不断发展,手机app开发现在已经

重庆APP开发多少钱

根据app应用软件开发的难易程度可以将重庆app开发价格大致分为一下几类

点击我更换图片

公司地址:

重庆市渝北区冉家坝时光城写字楼

联系方式:

023-63853373

13372636650(24h热线)

重庆市渝北区冉家坝时光城写字楼

© 2020 乐潮信息

渝ICP备15006414号-2      渝公网安备 50011202502110号