AnimCheckBox按鈕點擊動畫效果,點擊選中後勾選框選擇效果,很不錯的動畫功能。
項目來源:https://github.com/lguipeng/AnimCheckBox
本項目主要介紹:
本項目主要自定義AnimCheckBox 集成View,提供選擇的監聽接口OnCheckedChangeListener
主要由drawCircle()方法和drawHook(Canvas canvas);
private void drawCircle(Canvas canvas){
initDrawStrokeCirclePaint();
canvas.drawArc(mRectF, 202, mSweepAngle, false, mPaint);
initDrawAlphaStrokeCirclePaint();
canvas.drawArc(mRectF, 202, mSweepAngle - 360, false, mPaint);
initDrawInnerCirclePaint();
canvas.drawArc(mInnerRectF, 0, 360, false, mPaint);
}html
private void drawHook(Canvas canvas){
if (mHookOffset == 0)
return;
initDrawHookPaint();
mPath.reset();
float offset;
if (mHookOffset <= (2 * size/3 - mHookStartY - mBaseLeftHookOffset)){
mPath.moveTo(mBaseLeftHookOffset, mBaseLeftHookOffset + mHookStartY);
mPath.lineTo(mBaseLeftHookOffset + mHookOffset, mBaseLeftHookOffset + mHookStartY + mHookOffset);
}else if (mHookOffset <= mHookSize){
mPath.moveTo(mBaseLeftHookOffset, mBaseLeftHookOffset + mHookStartY);
mPath.lineTo(2 * size / 3 - mHookStartY, 2 * size / 3);
mPath.lineTo(mHookOffset + mBaseLeftHookOffset,
2 * size/3 - (mHookOffset - (2 * size/3 - mHookStartY - mBaseLeftHookOffset)));
}else {
offset = mHookOffset - mHookSize;
mPath.moveTo(mBaseLeftHookOffset + offset, mBaseLeftHookOffset + mHookStartY + offset);
mPath.lineTo(2 * size / 3 - mHookStartY, 2 * size / 3);
mPath.lineTo(mHookSize + mBaseLeftHookOffset + offset,
2 * size/3 - (mHookSize - (2 * size/3 - mHookStartY - mBaseLeftHookOffset) + offset));
}
canvas.drawPath(mPath, mPaint);
}android