Additive属性动画

Additive属性动画

 

参考

http://ronnqvi.st/multiple-animations/

 

效果

 

源码

https://github.com/YouXianMing/Animations

//
//  AdditiveAnimationController.m
//  Animations
//
//  Created by YouXianMing on 16/1/21.
//  Copyright  2016年 YouXianMing. All rights reserved.
//

#import "AdditiveAnimationController.h"
#import "UIView+SetRect.h"

@interface AdditiveAnimationController ()

@property (nonatomic, strong) CALayer  *layer;

@end

@implementation AdditiveAnimationController

- (void)setup {

    [super setup];

    // http://ronnqvi.st/multiple-animations/

    self.layer                 = [CALayer layer];
    self.layer.frame           = CGRectMake(0, 0, 30, 30);
    self.layer.backgroundColor = [UIColor redColor].CGColor;
    self.layer.cornerRadius    = 15.f;
    self.layer.position        = self.contentView.middlePoint;
    [self.contentView.layer addSublayer:self.layer];

    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapEvent:)];
    [self.contentView addGestureRecognizer:tap];
}

- (void)tapEvent:(UITapGestureRecognizer *)tapGesture {

    CGPoint touchPoint      = [tapGesture locationInView:tapGesture.view];
    CGPoint differencePoint = CGPointMake(self.layer.position.x - touchPoint.x,
                                          self.layer.position.y - touchPoint.y);

    CALayer *presentationLayer = self.layer.presentationLayer;
    NSLog(@"%@", presentationLayer);

    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position"];
    animation.duration          = 1.f;
    animation.timingFunction    = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    animation.additive          = true;
    animation.fromValue         = [NSValue valueWithCGPoint:differencePoint];
    animation.toValue           = [NSValue valueWithCGPoint:CGPointZero];

    [CATransaction begin];
    [CATransaction setDisableActions:YES];
    self.layer.position = touchPoint;
    [CATransaction commit];

    [self.layer addAnimation:animation forKey:nil];
}

@end

细节

时间: 2024-10-26 15:27:51

Additive属性动画的相关文章

属性动画和Activity、Fragment过渡动画等

主题是关于动画的,但是不是什么动画的内容都包括.先泛泛的介绍一下,然后详细的介绍一下翻代码找见的一个好玩的动画的使用.以下的内容包括Android 3和Android 3.1等引入的API,在使用中请注意版本. 代码都是用Kotlin写的.如果你用的是新版的Android Studio. 创建项目之后,按下快捷键Shift+Ctrl+Alt+K就会自动把代码从java转换成Kotlin. 之后按照说明给项目配置Kotlin的插件即可.很简单.Kotlin的官网在这里:http://kotlinl

Android属性动画之实现布局的下拉展开

前段时间,我们做了一下Android的几个动画(http://blog.csdn.net/qq_25193681/article/details/51777248),对Android的补间动画有了一定的了解.但是在Android的3.0之后,google又提出了属性动画的这样一个框架,他可以更好的帮助我们实现更丰富的动画效果.所以为了跟上技术的步伐,今天就聊一聊属性动画. 这一次的需求是这样的:当点击一个View的时候,显示下面隐藏的一个View,要实现这个功能,需要将V iew的visibil

Android技术进阶的要素之Android属性动画

由于Android3.0之前就有了许多的动画框架,其中之一就是Animation,但是随着时代的发展和交互要求的提高,Animation的局限性也越来越明显,例如:Anmiation动画不能响应点击事件等等.因此,在Android3.0之后,Google推出了新的动画框架--属性动画(Animator). 而在Animator框架中使用最多的就是AnimatorSet和ObjectAnimator的配合,使用ObjectAnimator进行更加精细化的控制,只控制一个对象的一个属性值,而使用多个

Android属性动画之实现灵动菜单效果

前段时间,我学习了自定义View,基本能够绘制一些比较好看的控件,那么今天开始,我将会学习属性动画.前面我也简单的看过属性动画的概念,然后也是看了一下效果,了解了一些基本概念,比如Animator.ObjectAnimator.插值器等等.为此我还特意写了博客Android技术进阶的要素--Android属性动画,但是没有一个项目去巩固,也一直耿耿于怀,今天终于可以开始写这方面的程序了,好了,讲了这么多的废话,下面开始看看今天的内容,我是通过demo来了解属性动画的.先看你效果: 这个就是展开后

属性动画中的插值器和估值器

1.概述         谷歌在android3.0时候给我们带来了属性动画,真正意义上带来了"动画",以前的帧动画也就4中效果的组合(旋转.淡入淡出.放大缩小.平移),而且只是表面的动画,最经典的比如,把一个button按钮移动到另一个位置,然后去点击,一点反应都没有,但是点击原来空白位置仍然有点击事件触发.而属性动画彻彻底底解决这个问题.         属性动画到底带来了哪些属性呢?如下: (1)Duration:动画持续时间 (2)TimeInterpolation: 用于定义

android 属性动画在ScrollView中平移view的问题

问题描述 android 属性动画在ScrollView中平移view的问题 在ScrollView里使用属性动画平移一个view 的时候,沿ScrollView滑动反向,不管是的动态改变translationX,还是x,view的宽度也会改变,就相当于只改变view的一个边界,另一个边界还是固定不动,看上去完全不是平移而是压缩或拉伸的效果,平移该如何实现? 解决方案 android view动画问题Android View 动画问题Android view动画问题 解决方案二: 我不知道你在说

Android属性动画完全解析(上),初识属性动画的基本用法

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/43536355 在手机上去实现一些动画效果算是件比较炫酷的事情,因此Android系统在一开始的时候就给我们提供了两种实现动画效果的方式,逐帧动画(frame-by-frame animation)和补间动画(tweened animation).逐帧动画的工作原理很简单,其实就是将一个完整的动画拆分成一张张单独的图片,然后再将它们连贯起来进行播放,类似于动画片的工作原理.补间动画

Android属性动画源代码解析(超详细)

本文假定你已经对属性动画有了一定的了解,至少使用过属性动画.下面我们就从属性动画最简单的使用开始. ObjectAnimator .ofInt(target,propName,values[]) .setInterpolator(LinearInterpolator) .setEvaluator(IntEvaluator) .setDuration(500) .start(); 相信这段代码对你一定不陌生,代码中有几个地方是本文中将要重点关注的,setInterpolator(...).setE

从点到面,给Button的属性动画

属性动画是API 11加进来的一个新特性,其实在现在来说也没什么新的了.属性动画可以对任意view的属性做动画,实现动画的原理就是在给定的时间内把属性从一个值变为另一个值.因此可以说属性动画什么都可以干,只要view有这个属性. 所以我们这里对Button来做一个简单的属性动画:改变这个Button的宽度.也可以用Tween Animation,但是明显有一点不能满足要求的地方是Tween Animation只能做Scale动画,也就是缩放.你可以对这个button做缩放来达到增加宽度的效果,但