今天给大家推荐一个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

更多相关文章

  1. 用c/c++混合编程方式为ios/android实现一个自绘日期选择控件(一)
  2. Android一套代码适配不同Android版本终极指南
  3. Android从网上获取图片的简单示例
  4. Android(安卓)Launcher3 隐藏搜索框
  5. Android——猜数字小游戏
  6. Android——天气预报(酷欧天气)(第三篇)
  7. Android(安卓)KTX简介
  8. Android(安卓)软键盘在有scollview,纵向viewpager+recyclview实现
  9. A-GPS定位与GPS定位的Android简单实现

随机推荐

  1. Android电池电量更新 - BatteryService
  2. android经常调用的组件
  3. android启动其他应用的一段代码
  4. Android(安卓)Activity生命周期
  5. 今天玩玩Android(安卓)-==-- 了解一下
  6. 解决Conversion to Dalvik format failed
  7. android 开源自组织网络开源包
  8. 编译android 64位openssl库
  9. Android-Intent的使用方法详解
  10. Android跳转WIFI界面的四种方式