UIBezierPath *movePath = [UIBezierPath bezierPath];
CGPoint fromPoint = CGPointMake(160, 110);
CGPoint toPoint = CGPointMake(280, 460);
[movePath moveToPoint:fromPoint];
[movePath addQuadCurveToPoint:toPoint
controlPoint:CGPointMake(toPoint.x, fromPoint.y)];
CAKeyframeAnimation *moveAnim = [CAKeyframeAnimation animationWithKeyPath:@"position"];
moveAnim.path = movePath.CGPath;
moveAnim.removedOnCompletion = YES;
CABasicAnimation *scaleAnim = [CABasicAnimation animationWithKeyPath:@"transform"];
scaleAnim.fromValue = [NSValue valueWithCATransform3D:CATransform3DIdentity];
scaleAnim.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.1, 0.1, 1.0)];
scaleAnim.removedOnCompletion = YES;
CABasicAnimation *opacityAnim = [CABasicAnimation animationWithKeyPath:@"alpha"];
opacityAnim.fromValue = [NSNumber numberWithFloat:1.0];
opacityAnim.toValue = [NSNumber numberWithFloat:0.1];
opacityAnim.removedOnCompletion = YES;
CAAnimationGroup *animGroup = [CAAnimationGroup animation];
animGroup.animations = [NSArray arrayWithObjects:moveAnim, scaleAnim,opacityAnim, nil];
animGroup.duration = 1;
[imageView.layer addAnimation:animGroup forKey:nil];
UIBezierPath是用来创建各种曲线的类,这个类很强大,各种你能想到的都可以用它来完成。
这里我们建立的二次曲线实际上就是从照片的中心点位置到垃圾箱终点的一条曲线。
至于函数中controlPoint的选取,自己查阅API吧,这里就不多说了。
接着我们建立了一个CAKeyframeAnimation的动画,这个主要用于实现动画的轨迹变化,我们将动画的path值设为之前定义的曲线值,这样动画就会按我们设定的轨迹移动了。
接下来是大小变化的动画,设定了最初和最终的画面大小。CATransform3DMakeScale用于生成变换矩阵,紧接着是生成透明度的动画。
由于我们用到了三种动画,所以需要用CAAnimationGroup来一次性的使用它们。
这样我们就完成了这样的动画,试试吧。
分享到:
相关推荐
通过查看源代码,你可以学习到具体实现细节,例如如何集成`ItemTouchHelper`,以及如何自定义滑动和删除动画。 总的来说,滑动删除是RecyclerView中一个高级特性,它需要对Android的事件监听、数据绑定和动画系统有...
【锤子便签详情删除动画】是锤子科技在便签应用中引入的一种独特交互设计,旨在提升用户体验,使得删除操作既直观又富有美感。这种动画效果通常涉及到UI设计、动画编程以及用户交互等多个方面,下面将详细阐述相关...
总结来说,jQuery UI为开发者提供了丰富的工具来创建交互性强且视觉上吸引人的添加删除动画。通过灵活运用其内置的动画效果、事件处理和UI组件,可以打造出流畅而直观的用户体验。在实践中,不断试验和调整动画参数...
本示例"Android Listview 列表项删除动画Demo"旨在演示如何在ListView中实现一个动态效果:当用户选择删除某个列表项时,该条目会有一个从右向左滑动的动画效果,同时,下面的列表项会平滑地填补被删除项留下的空缺...
本资源“jQuery ui实现添加删除动画.rar”显然是关于如何使用jQuery UI来创建动态的添加和删除元素的动画效果。下面将详细探讨jQuery UI以及如何利用它来实现这样的功能。 首先,jQuery UI包含了一系列的UI组件,如...
HTML5相册图片添加删除动画特效是现代网页设计中一种常见的功能,它为用户体验增添了互动性和趣味性。本文将深入探讨如何使用HTML5、CSS3和JavaScript实现这一效果。 首先,HTML5作为现代网页开发的基础,提供了...
在iOS开发中,iPhoto应用的删除动画是一个经典而引人注目的交互设计,它为用户提供了直观且优雅的删除照片的方式。这个动画通常被称为“擦除”或“滑动消失”效果,使得用户在删除图片时有强烈的视觉反馈。在本篇...
// 在这里添加删除动画,如缩放或滑动 }, 200); // 延迟200毫秒执行动画 } ``` 为了实现更复杂的动画,可以使用`ItemAnimator`的`animateRemove`和`animateAdd`方法来自定义动画逻辑。 最后,关于高效更新列表,...
它提供了许多高级功能,如局部刷新、下拉刷新、瀑布流布局、动态添加删除动画、拖动排序以及滑动删除等。这篇内容将深入探讨这些知识点,并通过分析`RecyclerViewDemo-master`项目来展示其实现方式。 首先,...
本小Demo就是针对这种“launcher垃圾桶删除动画”的实现。 首先,我们需要理解Android的动画机制。在Android中,动画主要通过`Animation`类和`Animator`类来实现。`Animation`类是早期版本的动画接口,而`Animator`...
本篇文章将深入探讨两种实现ListView item删除动画的方法:侧滑删除和折叠删除。 一、侧滑删除动画 1. 实现原理:侧滑删除是通过在ListView的每个item右侧扩展出一个可滑动的区域,用户向左滑动item时,显示出删除...
本项目关注的是“安卓仿iOS滑动删除动画”,通过在`SwipeMenuListView`基础上运用属性动画,实现在用户触发删除操作后,列表项(ITEM)能够优雅地向上或向下移动消失,提供一种流畅且直观的视觉反馈。 首先,我们要...
2. **删除动画**: 删除item时,我们可以使用滑出动画,让item看起来像是滑出屏幕。同样,需要重写`animateRemove()`方法。例如,可以使用`ObjectAnimator.ofFloat(view, "translationY", 0, view.getHeight())`让...
每个列表项可能都有一个删除按钮,用于触发删除动画。 动画特效通常是由JavaScript库,如jQuery或者更轻量级的选择器如Vanilla JS实现的。在本项目中,`js`文件很可能包含了处理添加和删除操作的函数,以及控制动画...
用flah动画描述了B树的删除,简单易懂
本教程将深入讲解如何在RecyclerView中实现批量删除功能,并添加相应的删除动画。 批量删除操作通常涉及到数据模型(如ArrayList或LiveData)的更新以及RecyclerView.Adapter的正确通知。当用户选择多个项目进行...
wpf listBox后台绑定时 需要删除数据的时候 前台界面使用动画进行删除,而非直接删除 listbox删除动画 至于其他的继承ItemsControl的容器完全可把listbox换成其他的就可以了
标题中的“自己做的类似GridView 的控件,可以拖动排序,有删除动画android源码”表明这个项目是一个自定义的Android UI组件,它模仿了原生Android中的GridView,但增加了额外的功能,包括拖动排序和删除动画。...