安卓返回手势的自定义view在SystemUI下的:
SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarEdgePanel.java
原生的动画是画一个箭头。如何修改成像小米或者魅族那样的波浪形状呢?
其实很简单,就是在onDraw里绘制一个Bezzel曲线。首先在构造函数设定Paint
mBezzelPaint.setStyle(Paint.Style.FILL);
mBezzelPaint.setColor(0x000000);//30%透明度黑色
mBezzelPaint.setAlpha(75);
如果不想保留箭头就吧onDraw里的其他代码注释了
float pointerPosition = mCurrentTranslation - mArrowThickness / 2.0f;
mBezzelPath.reset();
mBezzelPath.moveTo(mIsLeftPanel ? 0 : getWidth(), (getHeight() * 0.5f) - mLayoutParams.height/2);
mBezzelPath.cubicTo(mIsLeftPanel ? pointerPosition*2/3 : getWidth() - pointerPosition*2/3, (getHeight() * 0.5f) + mVerticalTranslation-mLayoutParams.height/6,mIsLeftPanel ? pointerPosition*2/3 : getWidth() - pointerPosition*2/3, (getHeight() * 0.5f) + mVerticalTranslation+mLayoutParams.height/6, mIsLeftPanel ? 0 : getWidth(), (getHeight() * 0.5f) + mLayoutParams.height/2);
canvas.drawPath(mBezzelPath, mBezzelPaint);
具体的样式根据审美修改一下数值。 这里的mLayoutParams.height是navigation_edge_panel_height。是返回手势绘图的高度。 当然也能用canvas.drawBitmap去画动画小人😀