自定义中间向两边滑动的滑动条(CenterSeekBar)

本文介绍了如何通过自定义View实现CenterSeekBar,使用滑动圆点作为拇指和渐变背景来表示进度。代码中详细展示了Drawable的选择、测量尺寸、绘制过程以及触摸事件处理。通过设置属性max、min和progress,可以灵活调整滑动范围。

低功耗蓝牙项目,需要一块懂省电的板

思澈 SF32LB52 芯片,BLE 协议栈深度优化,上手即开发

自定义CenterSeekBar代码如下

package com.example.myapplication;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;

/**
 * 中间向左右滑动的滑动条
 */
public class CenterSeekBar extends View {
   
   

    private static final String TAG = CenterSeekBar.class.getSimpleName();
    private static final int CLICK_ON_PRESS = 1;
    /*中间的拖动bar*/
    private Drawable mThumb;
    //默认的背景
    private Drawable mBackgroundDrawable;
    //滑动后的背景
    private Drawable mProgressDrawable;
    private int mSeekBarWidth;
    private int mSeekBarHeight;
    private int mThumbWidth;
    private int mThumbHeight;
    //thumb的中心位置
    private int mThumbCenterPosition = 0;
    private OnSeekBarChangeListener mSeekBarChangeListener;
    private int mFlag;
    int mMinWidth;
    int mMaxWidth;
    int mMinHeight = 12;
    int mMaxHeight;
    protected int mPaddingLeft = 0;
    protected int mPaddingRight = 0;
    protected int mPaddingTop = 0;
    protected int mPaddingBottom = 0;
    private int maxProgress;
    private int minProgress = 0;
    private int progress;

    public CenterSeekBar(Context context) {
   
   
        this(context, null);
    }

    public CenterSeekBar(Context context, AttributeSet attrs) {
   
   
        this(context, attrs, 0);
    }

    public CenterSeekBar(Context context, AttributeSet attrs, int defStyleAttr) {
   
   
        super(context, attrs, defStyleAttr);
        final TypedArray a = context.obtainStyledAttributes(
                attrs, R.styleable.CenterSeekBar, defStyleAttr, defStyleAttr);
        mThumb = a.getDrawable(R.styleable.CenterSeekBar_thumb);
        if (mThumb == null) {
   
   
            mThumb = getResources().getDrawable(R.drawable.seekbar_thumb_selector);
        }
        mProgressDrawable = a.getDrawable(R.styleable.CenterSeekBar_progressDrawable);
        if (mProgr

低功耗蓝牙项目,需要一块懂省电的板

思澈 SF32LB52 芯片,BLE 协议栈深度优化,上手即开发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言并肃

感谢大哥支持!您的鼓励是我动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值