import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.RectF;
import android.os.Build;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
public class KBubbleSeekBar extends View {
private static final String TAG = KBubbleSeekBar.class.getSimpleName();
private Context mContext;
private float mMin = 0; // min
private float mMax = 100; // max
private float mProgress = 0; // real time value
private String mProgressText = "111";// 气泡内显示进度
private int mBgColor;
private int mProgressColor;
private Paint mPaint;
private int mViewWidth;// 获取到视图宽度
private int mViewHeight;// 视图高度
private WindowManager mWindowManager;
private BubbleView mBubbleView;
private WindowManager.LayoutParams mLayoutParams;
private float mProgressRightX = 0; //坐标预留
private boolean triggerBubbleShowing; // 是否为点击页面显示气泡
private int mBubbleWidth; // 气泡宽度
private int mBubbleHeight;// 气泡高度
private OnProgressChangedListener mProgressListener; // 进度change监听
public void setProgressChangeListener(OnProgressChangedListener mProgressListener) {
this.mProgressListener = mProgressListener;
}
/**
* Listen to progress onChanged, onActionUp, onFinally
*/
public interface OnProgressChangedListener {
void onProgressChanged(KBubbleSeekBar bubbleSeekBar, int progress, float progressFloat, boolean fromUser);
void onStartChangeProgress(KBubbleSeekBar bubbleSeekBar, int progress, float progressFloat);
void onStopChangeProgress(KBubbleSeekBar bubbleSeekBar, int progress, float progressFloat, boolean fromUser);
}
public KBubbleSeekBar(Context context) {
super(context);
}
public KBubbleSeekBar(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
mContext = context;
initView(attrs);
}
public KBubbleSeekBar(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
/**
* 初始化数据
*
* @param attrs 设置样式值
*/
private void initView(AttributeSet attrs) {
if (null == attrs) {
return;
}
TypedArray ta = mContext.obtainStyledAttributes(attrs, R.styleable.KBubbleSeekBar);
mProgress = ta.getFloat(R.styleable.KBubbleSeekBar_nowProgress, mMin);
//mBgColor = ta.getColor(R.styleable.KBubbleSeekBar_bgProgressColor, Color.parseColor("#ffc6c6c6"
带气泡的Seekbar
最新推荐文章于 2022-03-20 23:39:49 发布