Android高级UI特效仿直播点赞动画效果
本文给大家分享高级UI特效仿直播点赞效果—一个优美炫酷的点赞动画,具体实现代码大家参考本文。
效果图如下:
攻克难点:
心形图片的路径等走向 心形图片的控制范围
部分代码如下:
通过AbstractPathAnimator定义飘心动画控制器
@Override public void start(final View child, final ViewGroup parent) { parent.addView(child, new ViewGroup.LayoutParams(mConfig.heartWidth, mConfig.heartHeight)); FloatAnimation anim = new FloatAnimation(createPath(mCounter, parent, 2), randomRotation(), parent, child); anim.setDuration(mConfig.animDuration); anim.setInterpolator(new LinearInterpolator());//启动动画 anim.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationEnd(Animation animation) { mHandler.post(new Runnable() { @Override public void run() { parent.removeView(child); } }); mCounter.decrementAndGet(); } @Override public void onAnimationRepeat(Animation animation) { } @Override public void onAnimationStart(Animation animation) { mCounter.incrementAndGet(); } }); anim.setInterpolator(new LinearInterpolator()); child.startAnimation(anim); } /** * 根据图片设置bitmap * @param color * @return */ public Bitmap createHeart(int color) { if (sHeart == null) { sHeart = BitmapFactory.decodeResource(getResources(), mHeartResId); } if (sHeartBorder == null) { sHeartBorder = BitmapFactory.decodeResource(getResources(), mHeartBorderResId); } Bitmap heart = sHeart; Bitmap heartBorder = sHeartBorder; Bitmap bm = createBitmapSafely(heartBorder.getWidth(), heartBorder.getHeight()); if (bm == null) { return null; } Canvas canvas = sCanvas; canvas.setBitmap(bm); Paint p = sPaint; canvas.drawBitmap(heartBorder, 0, 0, p); p.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_ATOP)); float dx = (heartBorder.getWidth() - heart.getWidth()) / 2f; float dy = (heartBorder.getHeight() - heart.getHeight()) / 2f; canvas.drawBitmap(heart, dx, dy, p); p.setColorFilter(null); canvas.setBitmap(null); return bm; }
如何创建一个path
public Path createPath(AtomicInteger counter, View view, int factor) { Random r = mRandom; int x = r.nextInt(mConfig.xRand); int x2 = r.nextInt(mConfig.xRand); int y = view.getHeight() - mConfig.initY; int y2 = counter.intValue() * 15 + mConfig.animLength * factor + r.nextInt(mConfig.animLengthRand); factor = y2 / mConfig.bezierFactor; //随机xPoint int xPointFactor = mRandom.nextInt(mConfig.xPointFactor); x = xPointFactor + x; x2 = xPointFactor + x2; int y3 = y - y2; y2 = y - y2 / 2; Path p = new Path(); p.moveTo(mConfig.initX, y); p.cubicTo(mConfig.initX, y - factor, x, y2 + factor, x, y2); p.moveTo(x, y2); p.cubicTo(x, y2 - factor, x2, y3 + factor, x2, y3); return p; }
Activity中代码:
下面给大家分享一个源码:html5+canvas仿抖音直播爱心飘动点赞动画特效源码
总结
以上所述是小编给大家介绍的Android高级UI特效仿直播点赞动画效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
您可能感兴趣的文章:
- Android 仿抖音的评论列表的UI和效果的实现代码
- Android UI新组件学习和使用
- Android MIUI通知类短信权限的坑
- Android UI 中的 ListView列表控件的示例
- 浅谈Android RecyclerView UI的滚动控件示例
- android开发仿ios的UIScrollView实例代码
- Android Build Variants 为项目设置变种版本的方法
- Android编程设计模式之Builder模式实例详解
- Android UI控件之ImageSwitcher实现图片切换效果
- Android UI控件之Gallery实现拖动式图片浏览效果
- Android UI控件之ListView实现圆角效果
- Android UI控件之ProgressBar进度条
- Android UI控件之Spinner下拉列表效果
- Android利用Espresso进行UI自动化测试的方法详解
- Android编程处理窗口控件大小,形状,像素等UI元素工具类
- Android build文件的删除的方法
- android studio 一直卡在Gradle:Build Running的几种解决办法
- 25个实用酷炫的Android开源UI框架
赞 (0)