// Path: library/src/main/java/com/jpeng/jptabbar/DensityUtils.java
// public class DensityUtils {
// 
//     public static int dp2sp(Context context, float dipValue) {
//         float pxValue = dp2px(context, dipValue);
//         return px2sp(context, pxValue);
//     }
// 
//     public static int sp2dp(@NonNull Context context, float spValue) {
//         float pxValue = sp2px(context, spValue);
//         return px2dp(context, pxValue);
//     }
// 
//     public static int px2dp(@NonNull Context context, float pxValue) {
//         final float scale = context.getResources().getDisplayMetrics().density;
//         return (int) (pxValue / scale);
//     }
// 
//     public static int dp2px(@NonNull Context context, float dipValue) {
//         final float scale = context.getResources().getDisplayMetrics().density;
//         return (int) (dipValue * scale);
//     }
// 
//     public static int px2sp(@NonNull Context context, float pxValue) {
//         final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
//         return (int) (pxValue / fontScale);
//     }
// 
//     public static int sp2px(@NonNull Context context, float spValue) {
//         final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
//         return (int) (spValue * fontScale);
//     }
// 
// }


import android.content.Context;
import android.graphics.*;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import com.jpeng.jptabbar.DensityUtils;
            if (mIsShowDrawable) {
                drawDrawableBadge(canvas);
            } else {
                drawTextBadge(canvas);
            }
        }
    }

    /**
     * 绘制图像徽章
     *
     * @param canvas
     */
    private void drawDrawableBadge(Canvas canvas) {
        mBadgeRectF.left = mBadgeable.getWidth() - mBadgeHorizontalMargin - mBitmap.getWidth();
        mBadgeRectF.top = mBadgeVerticalMargin;
        switch (mBadgeGravity) {
            case RightTop:
                mBadgeRectF.top = mBadgeVerticalMargin;
                break;
            case RightCenter:
                mBadgeRectF.top = (mBadgeable.getHeight() - mBitmap.getHeight()) / 2;
                break;
            case RightBottom:
                mBadgeRectF.top = mBadgeable.getHeight() - mBitmap.getHeight() - mBadgeVerticalMargin;
                break;
            default:
                break;
        }
        canvas.drawBitmap(mBitmap, mBadgeRectF.left, mBadgeRectF.top, mBadgePaint);
// Path: library/src/main/java/com/jpeng/jptabbar/DensityUtils.java
// public class DensityUtils {
// 
//     public static int dp2sp(Context context, float dipValue) {
//         float pxValue = dp2px(context, dipValue);
//         return px2sp(context, pxValue);
//     }
// 
//     public static int sp2dp(@NonNull Context context, float spValue) {
//         float pxValue = sp2px(context, spValue);
//         return px2dp(context, pxValue);
//     }
// 
//     public static int px2dp(@NonNull Context context, float pxValue) {
//         final float scale = context.getResources().getDisplayMetrics().density;
//         return (int) (pxValue / scale);
//     }
// 
//     public static int dp2px(@NonNull Context context, float dipValue) {
//         final float scale = context.getResources().getDisplayMetrics().density;
//         return (int) (dipValue * scale);
//     }
// 
//     public static int px2sp(@NonNull Context context, float pxValue) {
//         final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
//         return (int) (pxValue / fontScale);
//     }
// 
//     public static int sp2px(@NonNull Context context, float spValue) {
//         final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
//         return (int) (spValue * fontScale);
//     }
// 
// }


// Path: library/src/main/java/com/jpeng/jptabbar/badgeview/BadgeViewHelper.java
import android.content.Context;
import android.graphics.*;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import com.jpeng.jptabbar.DensityUtils;

            if (mIsShowDrawable) {
                drawDrawableBadge(canvas);
            } else {
                drawTextBadge(canvas);
            }
        }
    }

    /**
     * 绘制图像徽章
     *
     * @param canvas
     */
    private void drawDrawableBadge(Canvas canvas) {
        mBadgeRectF.left = mBadgeable.getWidth() - mBadgeHorizontalMargin - mBitmap.getWidth();
        mBadgeRectF.top = mBadgeVerticalMargin;
        switch (mBadgeGravity) {
            case RightTop:
                mBadgeRectF.top = mBadgeVerticalMargin;
                break;
            case RightCenter:
                mBadgeRectF.top = (mBadgeable.getHeight() - mBitmap.getHeight()) / 2;
                break;
            case RightBottom:
                mBadgeRectF.top = mBadgeable.getHeight() - mBitmap.getHeight() - mBadgeVerticalMargin;
                break;
            default:
                break;
        }
        canvas.drawBitmap(mBitmap, mBadgeRectF.left, mBadgeRectF.top, mBadgePaint);
        mBadgeRectF.right = mBadgeRectF.left + mBitmap.getWidth();