मैंसेट अंगूठे फोकस और कस्टम seekbar प्रोग्राम के रूप में
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;
}
}
और फिर
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);
का उपयोग कर सवाल यह है कि है गतिविधि में seekbar बनाने निम्नलिखित वर्ग का उपयोग कर एक ऊर्ध्वाधर seekbar बनाने रहा हूँ पर दबाया drawable क्या मैं अंगूठे दबाया और कोड से आकर्षित करने योग्य ध्यान केंद्रित करूँ?
मैंने आपके जवाब में आपका संपादन देखा। जब तक मैं इसे स्वीकार करने जा रहा था, किसी और ने इसे खारिज कर दिया। वैसे, चूंकि हम ACTION_DOWN पर pressed_state पर खींचने वाले अंगूठे को बदल रहे हैं, तो क्या यह ACTION_UP का सामना नहीं होने तक इस तरह से नहीं रहना चाहिए? यदि ACTION_MOVE का पता चला है, तो यह केवल ACTION_DOWN को पहले ही कॉल कर दिया जाएगा (और अंगूठे को खींचने योग्य सेट किया गया है)। ड्रैग हमेशा होता है, जबकि मैं घटनाओं का प्रवाह मान रहा हूं: ACTION_DOWN >> ACTION_MOVE >> ACTION_UP। क्या मैं यहाँ गलत हूँ? – Vikram
हां, लेकिन मैं उपरोक्त देख सकने के लिए एक लंबवत खोजबार खींचने के लिए कस्टम क्लास का उपयोग कर रहा हूं, इसलिए मुझे इसे शामिल करना था :) –