今天给大家推荐一个Android垂直型的SeekBar,可能对于你们在项目中有所帮助。这个已经有人具体实现。本人只是在这里稍做推荐。有关更多的好的控件本人在网上已建了一个网站专门做Android开源控件的收录以及示例代码的各种使用用法,目的是帮助更多的Android开发者,让更多的人爱上Android开发者。可以给出具体实现的思想及代码。
按以前写作方式,首先上效果图:
具体实现方式是继续SeekBar,重写onDraw方法只要旋转90度就可以实现。
给出以上两个其中的一个代码:
package android.widget; import android.content.Context; import android.graphics.Canvas; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; public class VerticalSeekBar extendsSeekBar { public VerticalSeekBar(Context context) { super(context); } public VerticalSeekBar(Context context, AttributeSet attrs, intdefStyle) { 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, intheightMeasureSpec) { super.onMeasure(heightMeasureSpec, widthMeasureSpec); setMeasuredDimension(getMeasuredHeight(), getMeasuredWidth()); } protected void onDraw(Canvas c) { c.rotate(-90); c.translate(-getHeight(),0); super.onDraw(c); } @Override public boolean onTouchEvent(MotionEvent event) { if (!isEnabled()) { return false; } 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()); setProgress(i); Log.i("Progress",getProgress()+""); onSizeChanged(getWidth(),getHeight(), 0, 0); break; case MotionEvent.ACTION_CANCEL: break; } return true; } }
具体用法和一般的seekBar一样。监听其改变事件:
verticalSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override public voidonStopTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub } @Override public voidonStartTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub } @Override public voidonProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { vsProgress.setText(progress+""); } });
以上就是垂直型的seekBar的实现。欢迎大家关注个人本人网站:http://android.mshare.me/ 专注于分享Android开源【包括开源UI、开源项目、示例代码】以及主站http:www.mshare.me--分享移动互联网。也欢迎大家踊跃贡献你的代码投稿到本站。
如需转载引用请注明出处:http://blog.csdn.net/jiahui524