您的位置:首页 > 移动开发 > Android开发

Android 自定义View动画效果进阶

2017-09-01 17:17 405 查看
[align=center]Android 自定义View动画效果进阶[/align] 之前写过一篇有关于自定义ViewGroup的博客,道理很简单,理解之后自己想写什么样的就写什么样的空间。今天写我的第二个博客。。。给大家讲一下自定义View,也是公司的一个需求,实现类似Desigin动画的各种酷刑交互效果,写好了是真的酷炫。先再讲一下自定义View主要就是paint 和 Canvas 这些就不细讲了,各种具体方法网上自己细查吧。使用起来不算难就是在onDraw里面画布局。今天讲的酷炫动画主要是用了ValueAnimator 之前没怎么接触过这个,一般都是ObjectAnimator实现动画,自定义View加ValueAnimator加共享元素是真的酷炫。不知道共享元素的就问度娘吧,好多讲解,但是共享动画不能视频android 5.0以下的机型,直接给你们个三方库
compile 'com.kogitune:pre-lollipop-activity-transition:1.0.0'
用法如下这是启动页面
ActivityTransitionLauncher.with(MainActivity.this).from(clickView).launch(new Intent(MainActivity.this, PrograssActivity.class));
这是接收页面
 ActivityTransition.with(getIntent()).to(transView).start(savedInstanceState);
这就不细讲了,网上有共享动画的实现方法和4.x的实现方法下面我们来讲酷炫的自定义 View先上图怎么样酷炫吧这是一套自定义View其实没什么难度,就讲一下一开始的啊其实就是先画个圆环
RectF oval = new RectF(x, y, x1, y1);
paint.setColor(Color.WHITE);//设置圆环的颜色
paint.setStyle(Paint.Style.STROKE);//设置空心
paint.setAntiAlias(true);//消除锯齿
paint.setStrokeWidth(Utils.dip2px(getContext(), 2));
paint.setAlpha(255 - alpha);
canvas.drawArc(oval, -90, circle, false, paint);//根据进度画圆弧 
ValueAnimator animator = ValueAnimator.ofFloat(0, 360);animator.setDuration((long) 1000).setRepeatCount(0);animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {@Overridepublic void onAnimationUpdate(ValueAnimator animation) {Float angle = (Float) animation.getAnimatedValue();circle = angle;invalidate();}});animator.addListener(new AnimatorListenerAdapter() {@Overridepublic void onAnimationEnd(Animator animation) {AlphaMax();}});// 自定义开始减速到0后加速到初始值的Interpolatoranimator.setInterpolator(new LinearInterpolator());animator.start();
circle就是进度,重点是ValueA828fnimator 后面跟的是开始值0,360的意思就是一圈然后你就可以通过监听直接获取出值的变化下面是监听动画结束来开始下一个动画LinearInterpolator是插值器,可以自定义,网上有几个系统自带的基本插值器,自己写就够用了我这些动画就是一个接一个接出来的只要算好画出来的图形的值就行,各种酷炫动画都可以实现。不喜勿怪啊,要是有问题评论啊
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐