91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android高級UI特效仿直播點贊動畫效果

發布時間:2020-10-02 16:06:18 來源:腳本之家 閱讀:397 作者:mrr 欄目:移動開發

本文給大家分享高級UI特效仿直播點贊效果—一個優美炫酷的點贊動畫,具體實現代碼大家參考本文。

效果圖如下:

Android高級UI特效仿直播點贊動畫效果

Android高級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中代碼:

Android高級UI特效仿直播點贊動畫效果

Android高級UI特效仿直播點贊動畫效果

Android高級UI特效仿直播點贊動畫效果

下面給大家分享一個源碼:html5+canvas仿抖音直播愛心飄動點贊動畫特效源碼

總結

以上所述是小編給大家介紹的Android高級UI特效仿直播點贊動畫效果,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永和县| 轮台县| 安康市| 图木舒克市| 兴文县| 五大连池市| 阿巴嘎旗| 原阳县| 大埔县| 凭祥市| 张家界市| 开远市| 博乐市| 潮州市| 汨罗市| 安化县| 庆安县| 格尔木市| 开远市| 长垣县| 霍州市| 綦江县| 项城市| 乌审旗| 长顺县| 兰溪市| 贞丰县| 依兰县| 札达县| 巩留县| 抚顺市| 如皋市| 武夷山市| 南漳县| 台前县| 抚顺市| 政和县| 新建县| 青浦区| 姜堰市| 华安县|