Android 仿qq 点赞功能
闲来无事研究了下qq的点赞功能,qq点赞后会随机生成不同颜色的图片,生成方式如下:
//生成不同颜色的点赞图片private Bitmap generateRandomColorBitmap(){int w,h;w=h=dip2px(this,20);Bitmap dst= Bitmap.createBitmap(w,h, Bitmap.Config.ARGB_8888);Bitmap src=BitmapFactory.decodeResource(getResources(),R.mipmap.pql).copy(Bitmap.Config.ARGB_8888, true);;Canvas dstCanvas=new Canvas(dst);Canvas srcCanvas=new Canvas(src);Paint rectPaint=new Paint();rectPaint.setStyle(Paint.Style.FILL);rectPaint.setColor(randomColors[getRandom(0,5)]);dstCanvas.drawRect(0,0,w,h,rectPaint);Paint p=new Paint();p.setStyle(Paint.Style.FILL);p.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));srcCanvas.drawBitmap(dst,0,0,p);dst.recycle();return src;}
然后运动的轨迹是曲线的,可以用三次贝塞尔曲线生成轨迹路线代码如下:
/*** 三次贝塞尔曲线计算公式* B(t) = P0 * (1-t)^3 + 3 * P1 * t * (1-t)^2 + 3 * P2 * t^2 * (1-t) + P3 * t^3, t ∈ [0,1]* @param t 曲线长度比例* @param p0 起始点* @param p1 控制点1* @param p2 控制点2* @param p3 终止点* @return t对应的点*/private PointF CalculateBezierPointForCubic(float t, PointF p0, PointF p1, PointF p2, PointF p3) {PointF point = new PointF();float temp = 1 - t;point.x = p0.x * temp * temp * temp + 3 * p1.x * t * temp * temp + 3 * p2.x * t * t * temp + p3.x * t * t * t;point.y = p0.y * temp * temp * temp + 3 * p1.y * t * temp * temp + 3 * p2.y * t * t * temp + p3.y * t * t * t;return point;}
运行动过程当中的变化可以用属性动画实现代码如下:
public void setScale(float v){img.setScaleY(v);img.setScaleX(v);}public void setPosition(float v){//计算位置的变化PointF p=CalculateBezierPointForCubic(v,p0,p1,p2,p3);img.setX(p.x);img.setY(p.y);}public void setAlpha(float v){img.setAlpha(v);}public void startAnimator(){set.playTogether(ObjectAnimator.ofFloat(this,"scale",0.4f,1.3f,1.0f));set.playTogether(ObjectAnimator.ofFloat(this,"position",0.0f,1.0f));set.playTogether(ObjectAnimator.ofFloat(this,"alpha",0.0f,1.0f,0.0f));set.setInterpolator(new LinearInterpolator());set.addListener(new Animator.AnimatorListener() {@Overridepublic void onAnimationStart(Animator animation) {}@Overridepublic void onAnimationEnd(Animator animation) {parentView.removeView(img);moveImages.remove(AnimaImageView.this);}@Overridepublic void onAnimationCancel(Animator animation) {}@Overridepublic void onAnimationRepeat(Animator animation) {}});set.setDuration(2000);set.start();}
最终效果:
完整代码:
https://github.com/XIAIBIANCHENG/qqthumb
Android 仿qq 点赞功能相关推荐
- android 仿qq相册功能,Android第四十九期 - 仿QQ空间上传功能+本地数据库存储
最近在看撸撸代码,他自己创了一种,网上有三种,分别是OpenDroid,greenDao,sugar,Sqlite原生写法,感觉都差不多,个人使用最优的是greenDao,下面开始介绍: 1.O ...
- android 仿QQ,微信群组里的@功能,支持@多人,并能一键删除,能获取上传对应的id(修改版)
首先注明该文章是借签别人的博客,原文博文地址点击打开链接 android 仿QQ,微信群组里的@功能,支持@多人,并能一键删除,能获取上传对应的id 这个需求来源:本人做集成环信聊天时,项目需要@功能 ...
- android 仿qq录音动画,Android实现QQ点赞效果动画 Android动画
版权声明:本文为代码部落原创文章,转载请注明出处. 前言 点赞是现在社交app中比较常用的功能,一个小小的点赞按钮如果能加上一些有趣动画,一来告诉用户你已经点了赞(这是对一些手残党极大的福音),二来人 ...
- android人脸识显示头像自定义,Android 仿QQ头像自定义截取功能
看了Android版QQ的自定义头像功能,决定自己实现,随便熟悉下android绘制和图片处理这一块的知识. 先看看效果: 思路分析: 这个效果可以用两个View来完成,上层View是一个遮盖物,绘制 ...
- Android仿QQ实现聊天功能
前段时间下载了Android仿QQ界面和聊天的Demo,发现很有意思,于是研究了一下并自己在此基础上集成环信实现了在线聊天功能,可以实现注册.加人.审核通知.推送.创建群组.群组聊天,并加入了炫酷的背 ...
- android qq分组展开,Android仿qq分组管理的第三方库
本文实例为大家分享了Android仿qq分组管理的第三方库,供大家参考,具体内容如下 下面先看效果 我们点击展开与折叠分组的功能在库里面是已经封装好的,只能把它已入到项目中,就可以直接用了,十分的方便 ...
- android 仿qq修改头像,Qt:小项目仿QQ修改头像界面,技术点记录
最近写了一个修改头像功能的UI,布局参考了QQ目前的修改头像界面.如下图 这里主要说明一下两个地方的技术:1.头像图片上层的遮罩层,圆形外部为灰色,内部为全透明:2.上传图片宽高比例可以通过鼠标拖拽移 ...
- Android仿QQ主界面-------完善篇
在我前面的博文中,做出了仿QQ主界面的主要工作,博文地址:Android仿QQ主界面. 但是在那一篇中还有一个不起眼的地方没做,今天就完善它. 今天要实现在文字下面来个ImageView,实现动画.先 ...
- android取QQ昵称,Android仿QQ复制昵称效果的实现方法
背景: 在上一篇文章中,给出了一种复制QQ效果的方案,今天就来讲讲换一种方式实现.主要依赖的是一个开源项目https://github.com/shangmingchao/PopupList. 解决办 ...
- Android仿QQ侧滑菜单
先上效果图: GIF图有点模糊,源码已上传Github:Android仿QQ侧滑菜单 ####整体思路: 自定义ItemView的根布局(SwipeMenuLayout extends LinearL ...
最新文章
- DataPipeline联合Confluent Kafka Meetup上海站
- 批量kill掉包含某个nginx的进程
- HTTP Error 401.2 - Unauthorized iis7 错误
- matlab 里catmull rom,Unity中的曲线插值CatmullRom
- ★LeetCode(627)——交换工资(MySQL)
- 关于char, wchar_t, TCHAR, _T(),L,宏 _T、TEXT,_TEXT
- C# 操作json 序列化 反序列化
- 北斗导航 | RAIM算法之奇偶矢量法(原理讲解,附代码链接:可用性判定)
- 【转载】用CAM350制作CAM资料的基本步骤
- OpenCV4学习笔记(71)——散焦图像去模糊滤波
- EPLAN学习笔记——常用操作步骤
- 百度云库计算机网页制作说课PPT,网页制作说课资料得
- post 防篡改_表单提交数据防篡改
- 学习笔记——共阳数码管的动态显示
- 苹果手机显示已用短信服务器发送,iPhone手机一般发短信给对方,提示已送达和已读分别有什么不一样的意义。...
- 【产品经理】日活跃用户「MAU」 和月活跃用户「DAU」
- resnet-50介绍(一)
- ios和android更新,Android和iOS同时进行更新 这次又带来什么
- 【033】基于51单片机的步进电机角度测量与速度设定Proteus仿真设计
- 新闻资讯小程序app