在Android中由于默认的SeekBar是水平样式的,所以垂直的样式需要通过自定义来确定样式。首先上自定义的代码

public class VerticalSeekBar extends SeekBar {    private SeekBar.OnSeekBarChangeListener mOnSeekBarChangeListener;    int i=0;    public VerticalSeekBar(Context context) {        super(context);    }    public VerticalSeekBar(Context context, AttributeSet attrs, int defStyle) {        super(context, attrs, defStyle);    }    public VerticalSeekBar(Context context, AttributeSet attrs) {        super(context, attrs);    }    public void setOnSeekBarChangeListener(SeekBar.OnSeekBarChangeListener l) {        mOnSeekBarChangeListener = l;    }    protected void onSizeChanged(int w, int h, int oldw, int oldh) {        super.onSizeChanged(h, w, oldh, oldw);    }    @Override    protected synchronized void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        super.onMeasure(heightMeasureSpec, widthMeasureSpec);        setMeasuredDimension(getMeasuredHeight(), getMeasuredWidth());    }    protected void onDraw(Canvas c) {        //将SeekBar转转90度        c.rotate(-90);        //将旋转后的视图移动回来        c.translate(-getHeight(),0);        Log.i("getHeight()",getHeight()+"");        super.onDraw(c);    }    void onStartTrackingTouch() {        if (mOnSeekBarChangeListener != null) {            mOnSeekBarChangeListener.onStartTrackingTouch(this);        }    }    void onProgressChanged() {        if (mOnSeekBarChangeListener != null) {            mOnSeekBarChangeListener.onProgressChanged(this,i,true);        }    }    void onStopTrackingTouch() {        if (mOnSeekBarChangeListener != null) {            mOnSeekBarChangeListener.onStopTrackingTouch(this);        }    }    @Override    public boolean onTouchEvent(MotionEvent event) {        if (!isEnabled()) {            return false;        }        switch (event.getAction()) {            case MotionEvent.ACTION_DOWN:                onStartTrackingTouch();                break;            case MotionEvent.ACTION_MOVE:                //获取滑动的距离                i=getMax() - (int) (getMax() * event.getY() / getHeight());                //设置进度                setProgress(i);                Log.i("Progress",getProgress()+"");                //每次拖动SeekBar都会调用                onSizeChanged(getWidth(), getHeight(), 0, 0);                Log.i("getWidth()",getWidth()+"");                Log.i("getHeight()",getHeight()+"");                onProgressChanged();                break;            case MotionEvent.ACTION_UP:                onStopTrackingTouch();                break;            case MotionEvent.ACTION_CANCEL:                onStopTrackingTouch();                break;        }        return true;    }}

接下来在xml中引用自定义文件就可以了

由于有时候需要自己更改SeekBar的背景,所以要在Drawable创建文件更改背景

                                                                                                                                                                                                                

更多相关文章

  1. android实现通知栏透明
  2. Android(安卓)VNC Server
  3. eclipse中查看android的SDK源代码
  4. android创建txt文件,读取txt文件内容
  5. Android第十二课 jni函数的静态绑定
  6. Android(安卓)采用pull解析xml文件
  7. android设置重复背景
  8. 出现add 'tools:replace="android:value"' to element at Androi

随机推荐

  1. EditView不可编辑状态和可编辑状态动态切
  2. React native 及 Android(安卓)测试(真机
  3. Android开发中调用Spring CXF整合发布的W
  4. Android(安卓)WMS分析(一) WindowManager
  5. Android开发(1)——项目结构
  6. android source 把自己的apk 编译进 syst
  7. android 局部界面动态切换
  8. android 技术经验归纳
  9. Android中Message传递参数(bundle setDat
  10. Android(安卓)Jetpack-Navigation改造使