android 仿360浮动,Android-->模仿360底部导航按钮

效果图:

d1c94117926a

这里写图片描述

如果没有左右2个边界的判断, 其实还是很简单的.

那就不断绘制drawCircle就可以了.

难就难在左右边界这2个特殊的地方.

我这里使用了drawArc的方法,完成左右2个特殊的地方.

部分代码:

//首先绘制 内圆. 也就是没有透明颜色的圆

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();

}

使用方法:

//设置普通的背景

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;

}

至此: 文章就结束了,如有疑问: QQ群:274306954 欢迎您的加入.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值