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 <?xml version="1.0" encoding="utf-8"?>
 2 <shape
 3     xmlns:android="http://schemas.android.com/apk/res/android"
 4     android:shape="oval"
 5     android:useLevel="false">
 6     <!--oval是 shape的属性之一,意思是 椭圆-->
 7     <!--solid 是shape 的孩子之一,作用是实现填充-->
 8     <solid android:color="#ff49fdfa"/>
 9     <!--size 也是shape 的孩子之一,作用是实现 长宽限制-->
10     <size
11         android:width="300dp"
12         android:height="300dp" />
13 </shape>

布局代码:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:orientation="vertical"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent">
 6
 7     <LinearLayout
 8         android:id="@+id/linearTestScale"
 9         android:orientation="vertical"
10         android:layout_width="10dp"
11         android:background="@drawable/a"
12         android:layout_height="10dp">
13
14         </LinearLayout>
15     <Button
16         android:id="@+id/btnTestScale"
17         android:text="xxx"
18         android:layout_width="wrap_content"
19         android:layout_height="wrap_content"
20         />
21 </LinearLayout>

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     @Override
23     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             @Override
30             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 }

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


android 在使用ViewAnimationUtils.createCircularReveal()无法兼容低版本的情况下,另行实现圆形scale动画...相关推荐

  1. Android实现一键复制粘贴,兼容低版本系统(api 11以下)

    Android实现一键复制粘贴,兼容低版本系统(api11以下) /**         * 实现文本复制功能         * @param content         * @return t ...

  2. Android开发之解决NestedScrollView滑动监听兼容低版本的方法

    NestedScrollView的滑动监听目前仅限api23及以上,为了兼容低版本如下自定义方法 可以自定义NestedScrollView即可如下: package cn.net.gfan.worl ...

  3. android 沉浸式状态栏 兼容低版本,详解Android沉浸式实现兼容解决办法

    自android5.0开始,沉浸式状态栏似乎成为一种潮流,应用里缺少沉浸式总感觉少些什么.于是乎,我开始到处找如何兼容低版本的沉浸式,由于Android平台跨度问题,总遇到一些不如人意的问题.终于,皇 ...

  4. 3dmax高版本转低版本插件_Fundebug前端JavaScript插件更新至1.8.0,兼容低版本的Android浏览器...

    兼容低版本Android浏览器,请大家及时更新. Fundebug前端BUG监控服务 Fundebug是专业的程序BUG监控平台,我们JavaScript插件可以提供全方位的BUG监控,可以帮助开发者 ...

  5. android 兼容包(可兼容低版本系统)

    android 兼容包(可兼容低版本系统) 高Level为了兼容低Level版本,从而推出了兼容包android-support-v* 目前发现的只有三个 android-support-v4   a ...

  6. [转]AppCompat 22.1,Goole暴走,MD全面兼容低版本

    AppCompat 22.1,Goole暴走,MD全面兼容低版本 分类: Android2015-04-24 09:48 1354人阅读 评论(0) 收藏 举报 android 目录(?)[+] 武侠 ...

  7. jsencrypt.js 兼容低版本IE浏览器(IE9以下)

    jsencrypt.js 兼容低版本IE浏览器(IE9以下) IE5.IE6.IE7.IE8使用jsencrypt.js IE5.IE6.IE7.IE8使用RSA加密 JS使用非对称加密 SCRIPT ...

  8. 解决 Visual Studio 2017 RC 不兼容低版本 Visual Studio 创建的 MVC 4 项目的问题

    解决 Visual Studio 2017 RC 不兼容低版本 Visual Studio 创建的 MVC 4 项目的问题 参考文章: (1)解决 Visual Studio 2017 RC 不兼容低 ...

  9. [css] 你对响应式设计的理解是什么?知道它基本的原理是吗?要想兼容低版本的IE怎么做呢?

    [css] 你对响应式设计的理解是什么?知道它基本的原理是吗?要想兼容低版本的IE怎么做呢? 理解:在不同系统,不同设备,不同尺寸的界面,有良好的用户体验,舒适的阅读体验,交互体验. 原理:根据不同设 ...

最新文章

  1. 人工操作阶段计算机是如何工作的,第一章计算机基础概述全解.ppt
  2. Java根据当前日期获得这一周的日期
  3. 公司前台打印机的连接方法(超级简单)
  4. ML之xgboost:绘制xgboost的二叉树graphviz的两种方法代码实现
  5. stm32 无符号整形_STM32中“unsigned short”和“unsigned int”的区别是什么?
  6. 60度斜坡怎么计算_【测绘】南方CASS土方计算方法—方格网法
  7. Oracle和Mysql的不同
  8. Java nginx 双向ssl_Nginx配置单项SSL以及双向SSL
  9. CCF201909-4 推荐系统(100分)【模拟】
  10. jenkins 手动执行_Win下Jenkins-2.138源码编译及填坑笔记
  11. EdrawMax思维导图,EdrawMax组织结构图
  12. JS字符串转json,json转字符串
  13. easy_ui之搭建后台界面(一)
  14. ES插件es-head下载和安装
  15. 蓝牙打印 设置打印样式_Android蓝牙打印机,带你真正了解各种打印格式
  16. 大数据运维实战第一课 大话 Hadoop 生态圈
  17. 单利模式的优缺点和使用场景
  18. Google 真的抄百度了吗?
  19. AcWing 204. 表达整数的奇怪方式
  20. 实验室安全事故读后感

热门文章

  1. 计算机网络环境及应用系统的安装与调试(Computer network environment and application system installation and debugging)
  2. Java 输入流与输出流
  3. Verilog以及VHDL所倡导的的代码准则
  4. 【 Verilog HDL 】寄存器数据类型(reg)与线网数据类型(wire,tri)
  5. 将中文日期转换成自己想要的格式如:2018年09月29日转换成2018-09-29
  6. 在Linux命令行下查询当前所使用的shell版本与种类的方法
  7. 2017 CIO展望:新IT运营模式的5大元素
  8. React学习实例总结,包含yeoman安装、webpack构建
  9. webpack 配置简单说几句 ?
  10. AT+CSMP 设置短消息文本参数