安卓自定义view仿小米商城购物车动画
生活随笔
收集整理的這篇文章主要介紹了
安卓自定义view仿小米商城购物车动画
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
通過自定義View與ViewGroup實現小米商城購物車效果
用到的知識點
原理
- 通過貝塞爾曲線實現商品拋入購物車的路徑
- 自定義ViewGroup實現添加多個商品進購物車的動畫
- 自定義View繪制心以及購物車圖案
代碼
一.繪制底部背景View
1.通過Path繪制第一部分,繪制心以及文字
通過貝賽爾曲線繪制心形
2.繪制購物車區域 繪制購物車圖形以及文購物車文字
通過Path的拼接繪制購物車圖形
3.繪制加入購物車文字
通過FontMetrics實現文字在矩形中心居中對齊
二.繪制動畫View
1.繪制商品圖片在拋物線路徑上,拋物線路徑由貝塞爾曲線組成,通過不斷的改變數值實現商品圖片拋物線移動
/*** 繪制商品圖片在拋物線路徑上* @param canvas*/private void drawProductOnPath(Canvas canvas) {PointF mCurveStart = new PointF();//曲線開始的點PointF mCurveMiddle = new PointF();//曲線中間點PointF mCurveEnd = new PointF();//曲線結束的點mCurveStart.set(measuredWidth * 0.7f, measuredHeight - 85);mCurveMiddle.set(measuredWidth * 0.4f, 0);mCurveEnd.set(measuredWidth * 0.3f, measuredHeight - 85);Path mCurvePath = new Path();//移動曲線mCurvePath.moveTo(mCurveStart.x, mCurveStart.y);mCurvePath.cubicTo(mCurveStart.x, mCurveStart.y, mCurveMiddle.x, mCurveMiddle.y, mCurveEnd.x, mCurveEnd.y);PathMeasure pathMeasure = new PathMeasure();pathMeasure.setPath(mCurvePath, false);float[] pos = new float[2];pathMeasure.getPosTan(pathMeasure.getLength() * percent, pos, null);Matrix matrix = new Matrix();matrix.postTranslate(pos[0] - newBitmap.getWidth() / 2, pos[1] - newBitmap.getHeight() / 2);canvas.drawBitmap(newBitmap, matrix, mBitmapPaint);}2.ValueAnimator 數值改變的同時從繪View,實現商品圖片的拋入購物車的動畫效果,當View添加的時候start此ValueAnimator
/*** 改變數值實現動畫*/private void initAnimator() {valueAnimator = ValueAnimator.ofInt(ints);valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {@Overridepublic void onAnimationUpdate(ValueAnimator animation) {int animatedValue = (int) animation.getAnimatedValue();percent = animatedValue / 100f;if (percent < 0.8) {int height = (int) (bitmapWidth * (1 - percent));int width = (int) (bitmapHeight * (1 - percent));if (width > 0 && height > 0) {newBitmap = scaleBitmap(bitmap, 1 - percent);}}invalidate();}});valueAnimator.addListener(new AnimatorListenerAdapter() {@Overridepublic void onAnimationEnd(Animator animation) {super.onAnimationEnd(animation);mBitmapPaint.setAlpha(0);}@Overridepublic void onAnimationStart(Animator animation) {super.onAnimationStart(animation);mBitmapPaint.setAlpha(255);}});valueAnimator.setDuration(500);valueAnimator.setInterpolator(new AccelerateInterpolator());}自定義ViewGroup實現購物車效果
1.ViewGroup初始化的時候將底部背景View添加進ViewGroup并且Layout的在底部
2.當點擊加入購物車時候,將動畫View添加進此ViewGroup,并且啟動動畫繪制界面實現商品拋進購物車效果。
詳細代碼見Github傳送門
歡迎大家star,fork
有很多不足,望見諒
可以直接下載代碼使用
使用方法如下
使用方法1.布局文件添加以下屬性<com.yhongm.shoppingcart.ShoppingCartViewandroid:id="@+id/vg"android:layout_alignParentBottom="true"android:layout_width="match_parent"android:layout_height="300dp" />2.java方法:scvg.setProductBitmap(產品圖片bitmap); 設置產品圖片scvg.setShoppingCartListener(this); 設置點擊監聽總結
以上是生活随笔為你收集整理的安卓自定义view仿小米商城购物车动画的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 堕落爱情
- 下一篇: android 第三方社区,从友盟微社区