今天给大家推荐一个Android垂直型的SeekBar,可能对于你们在项目中有所帮助。这个已经有人具体实现。本人只是在这里稍做推荐。有关更多的好的控件本人在网上已建了一个网站专门做Android开源控件的收录以及示例代码的各种使用用法,目的是帮助更多的Android开发者,让更多的人爱上Android开发者。可以给出具体实现的思想及代码。

按以前写作方式,首先上效果图:

Android实现垂直型的SeekBar_第1张图片

具体实现方式是继续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. Android从网上获取图片的简单示例
  2. 告别Dagger2模板代码:DaggerAndroid原理解析
  3. 获取Android的Java源代码并在Eclipse中关联查看
  4. Android开发者必备的十个工具
  5. EditText实现输入限制和校验功能实例代码
  6. android关机重启流程代码
  7. Android源代码编译脚本

随机推荐

  1. 详细介绍如何使用javascript+xml实现分页
  2. 如何使用DOM创建XML的详细介绍
  3. 教你怎样快速从一个XML文件中查找信息的
  4. java读取XML文件的四种方式及比较的代码
  5. 一个简单的XML Schema的示例代码详解
  6. XML特殊字符和空格 换行 转义符的代码详
  7. 通过XML数据岛和Dom制作通讯录的代码实例
  8. xml解析工具包 Xstream的示例代码详解
  9. 详细介绍使用XMLHTTP发送超长XML表单数据
  10. XML创建可排序、分页的数据显示页面