I create a vertical search bar using the following class
public class VerticalSeekBar extends SeekBar { public VerticalSeekBar(Context context) { super(context); } public VerticalSeekBar(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public VerticalSeekBar(Context context, AttributeSet attrs) { super(context, attrs); } @Override 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()); } @Override 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: setProgress(getMax() - (int) (getMax() * event.getY() / getHeight())); onSizeChanged(getWidth(), getHeight(), 0, 0); break; case MotionEvent.ACTION_CANCEL: break; } return true; } }
And then create an arrow in action using
VerticalSeekBar myZoomBar = new VerticalSeekBar(this); Drawable drawable = getResources().getDrawable(R.drawable.green_bar); ClipDrawable clip = new ClipDrawable(drawable, Gravity.LEFT,ClipDrawable.HORIZONTAL); Drawable drawable2 = getResources().getDrawable(R.drawable.white_bar); InsetDrawable d1 = new InsetDrawable(drawable2, 5, 5, 5, 5); myZoomBar.setThumb(getResources().getDrawable(R.drawable.whitecircle)); LayerDrawable mylayer = new LayerDrawable(new Drawable[] { d1, clip }); myZoomBar.setProgressDrawable(mylayer); myZoomBar.setMax(100); myZoomBar.setProgress(50); LinearLayout.LayoutParams zoomBarParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT); zoomBarParams.gravity = Gravity.CENTER_HORIZONTAL; LinearLayout zoomLayout = new LinearLayout(this); zoomLayout.addView(myZoomBar, zoomBarParams); FrameLayout.LayoutParams frameLayoutParams = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT,Gravity.CENTER); addContentView(zoomLayout, frameLayoutParams);
The question is, how can I press my thumb and focus the selection from the code?
android android-layout
Sunil mishra
source share