QQ去除未读状态的动画

QQ去除未读状态的动画

by 伍雪颖

github代码

- (void)drawRect:(CGRect)rect
{

switch (_state) {

case
SRSlimeStateNormal:

{

float percent =
1 -
distansBetween(_startPoint ,
_toPoint) /
_viscous;

if (percent ==
1) {

CGContextRef context =
UIGraphicsGetCurrentContext();

UIBezierPath *path = [UIBezierPath
bezierPathWithRoundedRect:CGRectMake(_startPoint.x
- _radius,
_startPoint.y -
_radius,
2*_radius,
2*_radius)

cornerRadius:_radius];

[self
setContext:context
path:path];

CGContextDrawPath(context,
kCGPathFillStroke);

}else {

CGFloat startRadius =
_radius * (kStartTo + (1-kStartTo)*percent);

CGFloat endRadius =
_radius * (kEndTo + (1-kEndTo)*percent);

CGContextRef context =
UIGraphicsGetCurrentContext();

UIBezierPath *path = [self
bodyPath:startRadius

end:endRadius

percent:percent];

[self
setContext:context
path:path];

CGContextDrawPath(context,
kCGPathFillStroke);

if (percent <=
0) {

_state =
SRSlimeStateShortening;

[self
scaling];

}

}

}

break;

case
SRSlimeStateShortening:

{

_toPoint =
CGPointMake((_toPoint.x
- _startPoint.x)*0.8
+ _startPoint.x,

(_toPoint.y -
_startPoint.y)*0.8
+ _startPoint.y);

float p =
distansBetween(_startPoint,
_toPoint) /
_viscous;

float percent =1 -p;

float r =
_radius * p;

if (p >
0.01) {

CGFloat startRadius = r * (kStartTo + (1-kStartTo)*percent);

CGContextRef context =
UIGraphicsGetCurrentContext();

CGFloat endRadius = r * (kEndTo + (1-kEndTo)*percent)
* (1+percent /
2);

UIBezierPath *path = [self
bodyPath:startRadius

end:endRadius

percent:percent];

[self
setContext:context
path:path];

CGContextDrawPath(context,
kCGPathFillStroke);

}else {

self.hidden =
YES;

_state =
SRSlimeStateMiss;

}

}

break;

default:

break;

}

}

时间: 2024-11-13 05:07:35

QQ去除未读状态的动画的相关文章

wing带你玩转自定义view系列(2) 简单模仿qq未读消息去除效果

上一篇介绍了贝塞尔曲线的简单应用 仿360内存清理效果 这一篇带来一个  两条贝塞尔曲线的应用 : 仿qq未读消息去除效果. 转载请注明出处:http://blog.csdn.net/wingichoy/article/details/50503630 老规矩,先上效果图: qq的未读消息去除很炫酷,其实就是用了两条贝塞尔曲线,我们按思路来,先来画两个圆,及两条贝塞尔曲线,辅助点为圆心y坐标的一半.我们把下面移动的圆,叫做mMoveCircle. 这样一画,就很简单明了了对不对.只要在拖动的时候

Android自定义控件:类QQ未读消息拖拽效果

QQ的未读消息,算是一个比较好玩的效果,趁着最近时间比较多,参考了网上的一些资料之后,本次实现一个仿照QQ未读消息的拖拽小红点,最终完成效果如下: 首先我们从最基本的原理开始分析,看一张图: 这个图该怎么绘制呢?实际上我们这里是先绘制两个圆,然后将两个圆的切点通过贝塞尔曲线连接起来就达到这个效果了.至于贝塞尔曲线的概念,这里就不多做解释了,百度一下就知道了. 切点怎么算呢,这里我们稍微复习一些初中的数学知识.看了这个图之后,求出四个切点应该是轻而易举了. 现在思路已经很清晰了,按照我们的思路,开

UI--学习模仿QQ未读提醒拖拽删除

<代码里的世界> -UI篇 用文字札记描绘自己 android学习之路 转载请保留出处 by Qiao http://blog.csdn.net/qiaoidea/article/details/46608385 [导航] 弹出式对话框各种方案 从仿QQ消息提示框来谈弹出式对话框的实现方式 (Dialog,PopupWind,自定义View,Activity,FragmentDialog) Dialog源码解析 从源码上看Dialog与DialogFragment 仿IOS ActionShe

仿qq未读消息

仿qq未读消息 仿qq未读消息,拖拽删除 下载地址: 运行截图:    热门源码下载: 高仿京东商城 Android快速开发不可或缺的11个工具类 Android快速开发框架LoonAndroid Android应用源码比较不错的新闻客户端 版权声明:本文为博主原创文章,未经博主允许不得转载.

iOS 未读消息角标 仿QQ拖拽 简单灵活 支持xib(源码)

一.效果 二.简单用法 超级简单,2行代码集成:xib可0代码集成,只需拖一个view关联LFBadge类即可 支持pod导入pod 'LFKit/LFBadge' //一般view上加角标 _badge1 = [[LFBadge alloc] init]; [_badge1 addToTabBarItem:_view1]; //BarButtonItem上加角标 _badge2 = [[LFBadge alloc] init]; [_badge2 addToBarButtonItem:self

iOS开发项目篇—39获取用户未读的微博信息(信息提醒)

iOS开发项目篇—39获取用户未读的微博信息(信息提醒) 一.简单说明 1.实现效果       2.实现 (1)新建一个类,封装请求 查看新浪官方要求的请求参数 该类中的代码设计 YYUnreadCountParam.h文件 1 // YYUnreadCountParam.h 2 //封装请求参数的类 3 4 #import "YYBaseParam.h" 5 6 @interface YYUnreadCountParam : YYBaseParam 7 /**uid true in

【Python学习笔记】-APP图标显示未读消息数目

以小米手机系统为例,当安装的某个APP有未读消息时,就会在该APP图标的右上角显示未读消息的数目.本文主要解说怎样用Python语言实现图标显示未读消息的数目.首先,还是要用到Python中PIL库,关于Linux下怎样安装PIL库,请大家參考这篇博客:http://blog.csdn.net/kevin_zhai/article/details/47720721,里面有具体的安装过程.实现的原理非常easy,直接用Image读取原始图标.然后将未读消息的数目插入到图标的右上角就可以. 脚本代码

OD调试学习笔记7—去除未注册版软件的使用次数限制

OD调试学习笔记7—去除未注册版软件的使用次数限制 本节使用的软件链接 (想自己试验下的可以下载) 一:破解的思路 仔细观察一个程序,我们会发现,无论在怎么加密,无论加密哪里,这个程序加密的目的就是需要你掏腰包来获得更多的功能或者解除限制.那么我们就可以逆向的来思考,如果该程序成功的注册后,那么程序的行为必将发生变化,如NAG去除了,如功能限制没有了等等.也就是说,程序的代码的走法也会跟未注册的时候截然不同.因为程序的行为改变了,那么决定它所有行为的代码走法也会发生变化. 二:认识OD的两种断点

腾讯企业邮箱API实现单点登录和获取企业未读邮件

应公司要求在ERP平台的OA系统上显示企业邮箱的未读邮件数量,并且实现单点登录.也就是点击数字可以直接进入腾讯企业邮箱不用登录.既然用到这个API肯定大家也都有腾讯企业邮箱OpenApi协议v1.4文档了.我这是1.4的. 有了文档就可以按照上面的步骤根据需要调用API就可以了.刚开始的时候拿到这个文档都还不知道怎么做,百度下感觉效果不明显,所以想写一个稍微完整一点的实例可以供大家参考 首先我是用Java写的,根据文档需要去访问它给的地址并携带正确参数才能返回我们需要的结果. 为了发送请求所以用