博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android 在使用ViewAnimationUtils.createCircularReveal()无法兼容低版本的情况下,另行实现圆形scale动画...
阅读量:6936 次
发布时间:2019-06-27

本文共 2495 字,大约阅读时间需要 8 分钟。

ViewAnimationUtils.createCircularReveal()的简介:

      ViewAnimationUtils.createCircularReveal()是安卓5.0才引入的,快速实现圆形缩放动画的api,效果如下图所示:

 

       如果要在你的程序中使用它,必须要设置最低的 api 版本是 21,往下版本的,在运行程序的时候就会抛出 .createCircularReveal() not found

异常。其源码如下:

1 public static Animator createCircularReveal(View view,int centerX,  int centerY, float startRadius, float endRadius) {2     return new RevealAnimator(view, centerX, centerY, startRadius, endRadius);3 }

第一个参数view:是你要进行圆形缩放的 view;

第二和第三个参数:分别是开始缩放点的 x 和 y 坐标;

第四和第五:分别是开始的半径和结束的半径。

 

在兼容低版本下模仿实现上述效果:

      实现思路:

           1-》实现圆形,使用 xml 自定义背景,实现圆形,再设置到 view ;

           2-》使用传统的 scaleX 和 scaleY ,在所要缩放的 view 里同时实现缩放。

shape 代码:

1 
2
6
7
8
9
10
13

 

布局代码:

1 
2
6 7
13 14
15
21

 

java代码:

1 package com.LGH.ui.activity; 2  3 import android.animation.AnimatorSet; 4 import android.animation.ObjectAnimator; 5 import android.app.Activity; 6 import android.os.Bundle; 7 import android.view.View; 8 import android.view.animation.LinearInterpolator; 9 import android.widget.Button;10 import android.widget.LinearLayout;11 12 import io.github.froger.instamaterial.R;13 14 /**15  * Created by Administrator on 2015/6/29.16  */17 public class test extends Activity{18 19     Button btnTestScale;20     LinearLayout linearTestScale;21 22     @Override23     protected void onCreate(Bundle savedInstanceState) {24         super.onCreate(savedInstanceState);25         setContentView(R.layout.test);26         btnTestScale = (Button) findViewById(R.id.a);27         linearTestScale = (LinearLayout) findViewById(R.id.aaa);28         btnTestScale.setOnClickListener(new View.OnClickListener() {29             @Override30             public void onClick(View v) {31                 ObjectAnimator revealAnimator = ObjectAnimator.ofFloat( //缩放X 轴的32                         linearTestScale, "scaleX", 0, 200);33                 ObjectAnimator revealAnimator1 = ObjectAnimator.ofFloat(//缩放Y 轴的34                         linearTestScale, "scaleY", 0, 200);35                 AnimatorSet set = new AnimatorSet();36                 set.setDuration(500);//设置播放时间37                 set.setInterpolator(new LinearInterpolator());//设置播放模式,这里是平常模式38                 set.playTogether(revealAnimator, revealAnimator1);//设置一起播放39                 set.start();40             }41         });42     }43 }

 

 

 

如果您认为这篇文章还不错或者有所收获,您可以通过扫描一下下面的支付宝二维码 打赏我一杯咖啡【物质支持】,也可以点击右下角的【推荐】按钮【精神支持】,因为这两种支持都是我继续写作,分享的最大动力

img_12e3f54d4d0f70f0eb14f20548e3d781.png

转载地址:http://rlbnl.baihongyu.com/

你可能感兴趣的文章
Android 4.2 系统编译 找不到添加的内部资源 com.android.internal.R
查看>>
Spring Boot WebFlux + Server-sent事件示例
查看>>
Git for windows 中文乱码解决方案
查看>>
python 爬虫
查看>>
OpenGL超级宝典笔记——雾
查看>>
javaScript元素选择器
查看>>
核心交易链路架构设计与演进
查看>>
websocket-bench压力测试
查看>>
http://91.213.30.151/
查看>>
Android ViewStub详解
查看>>
JavaScript中的prototype、__proto__和constructor
查看>>
Android Studio更新升级方法
查看>>
iOS10全新方法实现推送+deviceToken无法获取或无效的解决
查看>>
centos7 修改selinux 开机导致 faild to load SELinux polic
查看>>
Spring3.1 Cache注解
查看>>
c++ ActiveX基础1:使用VS2010创建MFC ActiveX工程项目
查看>>
linux 基础入门一
查看>>
mysql把一个表某个字段的内容复制到另一张表的某个字段的SQL语句写法
查看>>
java类初始化顺序-阿里笔试题
查看>>
ExecutorService线程池
查看>>