今天給你們推薦一個Android垂直型的SeekBar,可能對於大家在項目中有所幫助。這個已經有人具體實現。本人只是在這裏稍作推薦。有關更多的好的控件本人在網上已建了一個網站專門作Android開源控件的收錄以及示例代碼的各類使用用法,目的是幫助更多的Android開發者,讓更多的人愛上Android開發者。能夠給出具體實現的思想及代碼。 java
按之前寫做方式,首先上效果圖: android
具體實現方式是繼續SeekBar,重寫onDraw方法只要旋轉90度就能夠實現。 app
給出以上兩個其中的一個代碼: ide
- 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--分享移動互聯網。也歡迎你們踊躍貢獻你的代碼投稿到本站。 ui
如需轉載引用請註明出處:http://blog.csdn.net/jiahui524 spa