这两头要用到垂直seekbar,但是android自带的没有垂直的,到网上找了一个开源的代码,发现里面的滑动块不能随进度条一起变动bug。后来又在这个开源项目里找到原作者做的修改。才实现了滑动块随进度条一起移动。
调用方法有变动,需要用seekbar.setProgressAndThumb(10),而不是seekbar.setProgress(10);
代码如下:
import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.widget.SeekBar;
public class VerticalSeekBar extends SeekBar {
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);
}
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) {
c.rotate(-90);
c.translate(-getHeight(), 0);
super.onDraw(c);
}
/**
* 滑块与进度一起变动(一定要调用这个,不要调用系统setprogeress)
* @param progress
*/
public synchronized void setProgressAndThumb(int progress) {
setProgress(getMax() - (getMax() - progress));
onSizeChanged(getWidth(), getHeight(), 0, 0);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_UP:
int i = 0;
i = getMax() - (int) (getMax() * event.getY() / getHeight());
setProgressAndThumb(i);
Log.i("Progress", getProgress() + "");
onSizeChanged(getWidth(), getHeight(), 0, 0);
break;
case MotionEvent.ACTION_CANCEL:
break;
}
return false;//这里要返回false,如果返回true,就无法监听开始和停止触摸事件
}
}
demo下载地址:
http://download.csdn.net/detail/junfeng120125/5817815
分享到:
相关推荐
Android应用源码之垂直SeekBar(拖动条)
自己写的一个Android垂直SeekBar,主要参考AbsSeekBar源代码与网上一些代码修改来的,基本实现垂直效果,还有一些小问题需要解决
实现android 垂直seekbar,滑块和进度一起变动。
Android 垂直Seekbar.zip:显示垂直seekbar的源码
Android自定义垂直seekbar,可成功监听seekbar的各个状态,是很好的代码
Android 可用的竖版 seekbar,只提供VerticalSeekBar类 Android本身只自带横版的seekbar
Android应用源码开发Demo,主要用于毕业设计学习。
Android竖直(竖直)漂亮seekbar的源码实现,有竖直的和水平的两个进度条,欢迎下载学习。
Android应用源码开发Demo,主要用于毕业设计学习。
安卓源码包androi进度条垂直SeekBar(拖动条)seekbar滑动按钮等DEMO源码等4个合集: Android seekbar滑动按钮源码 仿知乎的横线直线progressbar 垂直SeekBar(拖动条) 环形的调节条,用于工程中特殊的调值控件,拟...
Android高级应用源码-垂直SeekBar(拖动条).zip
NULL 博文链接:https://wenzongliang.iteye.com/blog/2181723
android实例竖着的seekbar
安卓Android源码——垂直SeekBar(拖动条).zip
安卓Android源码——垂直SeekBar(拖动条).rar
自定义 垂直 SeekBar 竖型