揭露动画—ViewAnimationUtils.createCircularReveal
来源:互联网 发布:yum clear命令 编辑:程序博客网 时间:2024/06/05 16:24
ViewAnimationUtils是Android5.0出来的API。其作用就是可以使控件能够呈现水波一样展开。先上一张效果图:
PS:图是网上找的,不会做gif图。 具体的方法如下:
public static Animator createCircularReveal(View view, int centerX, int centerY, float startRadius, float endRadius) { return new RevealAnimator(view, centerX, centerY, startRadius, endRadius); }
参数1:view是你需要这个效果的控件 参数2:centerX动画中心x轴坐标 参数3:centerY动画中心y轴坐标 参数4:startRadius动画开始的半径 参数5:endRadius动画结束的半径 我的demo布局如下,很简单:
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/btn1" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="揭露动画效果"/> <Button android:id="@+id/btn4" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="默认显示"/> </LinearLayout> <ImageView android:id="@+id/img" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="fitXY" android:src="@mipmap/uvurn" android:visibility="invisible"/>
布局就是两个按钮,一个是启动动画的按钮,一个是普通的显示、隐藏的按钮,还有一个ImageView就是动画的载体。 java的动画代码如下:
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { int measuredWidth = img.getMeasuredWidth(); int measuredHeight = img.getMeasuredHeight(); int maxRadius = Math.max(measuredWidth, measuredHeight); Animator circularReveal = null; if(img.getVisibility()==View.VISIBLE){ //如果已经显示了 /*circularReveal = ViewAnimationUtils.createCircularReveal (img, measuredWidth/2, measuredHeight/2, maxRadius, 0);*/ /*circularReveal = ViewAnimationUtils.createCircularReveal (img, 0, 0, maxRadius, 0);*/ circularReveal = ViewAnimationUtils.createCircularReveal (img, measuredWidth, measuredHeight, maxRadius, 0); circularReveal.setDuration(1000); circularReveal.setStartDelay(1000); circularReveal.start(); circularReveal.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); img.setVisibility(View.GONE); } }); }else{ circularReveal = ViewAnimationUtils.createCircularReveal (img, measuredWidth/2, measuredHeight/2, 0, maxRadius); circularReveal.setDuration(1000);// circularReveal.setInterpolator(new LinearOutSlowInInterpolator());//out到in img.setVisibility(View.VISIBLE); circularReveal.start(); } }else{ img.setVisibility(img.isShown()?View.GONE:View.VISIBLE); }
首先,你得是Android5.0及以上版本才有这个效果 获取控件的宽,高,取大的为半径(按你自己的想法来就可以了) 设置动画的数据,也就是上面说到的5个参数 设置动画的持续时间,动画监听等 这里需要说明的是,如果你的布局文件里面imageview设置的不占位隐藏,也就是gone,你第一次获取imageview的长宽的时候,获取不到,会是0。 这里不一定非要按imageview的长宽来,后面的四个参数,都是你自己随便设置的,设置其他的数据也是一样的,会得到不一样的效果。比方说设置动画中心X轴坐标,Y轴坐标为(0,0),那么动画就是从左上角开始显示,一直到全都显示出来。 然后就是半径,如果你没有设置图片长宽中大的一个数,比方说设置小一点的,我设置100像素,动画结束后,显示的图片就是以你设置的圆心开始,半径为100像素的一个圆形图片。 再就是动画的监听,动画结束的时候的监听。动画结束你要显示图片,还是隐藏图片,在动画结束的时候设置。
项目链接
阅读全文
0 0
- 揭露动画—ViewAnimationUtils.createCircularReveal
- 揭露动画ViewAnimationUtils.createCircularReveal()
- 杂货铺(RecyclerView,SpannableString,ViewAnimationUtils.createCircularReveal()动画)
- Android开发 之 揭露动画
- Android Activity转场 -- 揭露动画
- android仿美团底部导航栏的点击效果——揭露动画
- Android Reveal Animation(揭露动画)实现
- Android CircularReveal揭露动画三种实现
- Android 创建CircularReveal揭露动画的实现
- 一个揭露动画的的折线图
- ViewAnimationUtils的学习记录
- ViewAnimationUtils初体验
- ViewAnimationUtils的使用详解
- Material Design之定制动画--触摸反馈,循环揭露,转场动画,共享元素和曲线运动
- Android动画学习(六)之View揭露效果和SurfaceView实现动画
- Android 使用Circular Reveal为你的应用添加揭露动画效果
- 揭露WPF SDK“不能说的秘密——出自《IT168》
- 深度爆料——剖析揭露IT培训行业黑幕
- 黑客叔叔(雨袭团)内部交流题(第一季1.0.1):
- Cocos2d-js cc.director介绍
- HDU6069Counting Divisors
- Python QQ 发送Email SMTP
- ssm整合经验(SpringMVC+Mybatis)
- 揭露动画—ViewAnimationUtils.createCircularReveal
- Android数据库监听器+Demo
- Java 递归,利用递归阶乘累加以及打印文件夹目录
- JZOJ 2017.8.6 B组总结
- nyoj6 喷水装置(一)
- HDU
- 【SQL优化】MySQL优化(概述)
- JS中带返回值的构造函数
- CVPR—2017会议全套视频下载地址分享