android 仿360浮动,Android--模仿360底部导航按钮
效果圖:
這里寫圖片描述
如果沒有左右2個邊界的判斷, 其實還是很簡單的.
那就不斷繪制drawCircle就可以了.
難就難在左右邊界這2個特殊的地方.
我這里使用了drawArc的方法,完成左右2個特殊的地方.
部分代碼:
//首先繪制 內(nèi)圓. 也就是沒有透明顏色的圓
mPaint.setColor(mCircleColor);
canvas.drawCircle(mCx, mCy, Math.min(curRadius, mCircleRadius), mPaint);
//其次 繪制,帶有透明顏色的圓
mPaint.setColor(mCircleColorOut);
canvas.drawCircle(mCx, mCy, Math.min(curRadius, mCircleRadiusOut), mPaint);
//最后判斷是否是左右特殊位置, 繪制arc
if (drawLeft) {
mPaint.setColor(mCircleColor);
canvas.drawArc(getArcRecF(Math.min(curRadius, mCircleRadiusMax)), 90, 180, true, mPaint);
} else if (drawRight) {
mPaint.setColor(mCircleColor);
canvas.drawArc(getArcRecF(Math.min(curRadius, mCircleRadiusMax)), -90, 180, true, mPaint);
}
//為了動畫,需要一直改變繪制的半徑
if (curRadius < maxRadius) {
curRadius += mRadiusDrawStep;
invalidateSelf();
}
使用方法:
//設(shè)置普通的背景
button.setBackground(new CircleAnimDrawable().setPosition(CircleAnimDrawable.POS_LEFT));
button.setBackground(new CircleAnimDrawable().setPosition(CircleAnimDrawable.POS_CENTER));
button.setBackground(new CircleAnimDrawable().setPosition(CircleAnimDrawable.POS_RIGHT));
//如果要在RadioButton里面使用,需要包一層Drawable
private Drawable createRadioBackground(int position) {
StateListDrawable listDrawable = new StateListDrawable();
listDrawable.addState(new int[]{android.R.attr.state_checked}, new CircleAnimDrawable().setPosition(position));
return listDrawable;
}
至此: 文章就結(jié)束了,如有疑問: QQ群:274306954 歡迎您的加入.
總結(jié)
以上是生活随笔為你收集整理的android 仿360浮动,Android--模仿360底部导航按钮的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 汽车组装c语言排列组合算法,求一个关于排
- 下一篇: 黑色沙漠加贝尔在哪