Prashant Gaurav
Prashant Gaurav

Reputation: 215

How to create a custom Horizontal SeekBar

I am working on an android app and trying to create a custom horizontal SeekBar.Its working but showing vertical SeekBar.I am sharing my code .Let me know how to change the orientation of the SeekBar. Please help if possible.

Java File for custom Seeking bar ::

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 HSeekBar extends SeekBar {

    public HSeekBar(Context context) {
       super(context);
   }

   public HSeekBar(Context context, AttributeSet attrs, int defStyle)    {
    super(context, attrs, defStyle);
   }

   public HSeekBar(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);
   }

  @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;
    }

  }

Xml file

 <android.widget.HSeekBar
            android:id="@+id/hbar"
            android:layout_width="wrap_content"
            android:layout_height="250dip"
            android:max="200"
            android:progress="0"
            android:progressDrawable="@drawable/style"
            android:thumb="@drawable/thumb_image" />

 </LinearLayout>

Upvotes: -1

Views: 988

Answers (1)

praveen s
praveen s

Reputation: 219

          <SeekBar
            android:id="@+id/value"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:rotation="90"
            android:max="100" />

Just using "android:rotation="90"" or android:rotationX or android:rotationY to get rotation for seekbar

Upvotes: 1

Related Questions