संचालित करने के लिए संशोधित करना मैं एमुलेटर के साथ एक लंबवत खोजबार प्राप्त करने की कोशिश कर रहा हूं, लेकिन मैं अटक गया हूं। मैं चाहने के लिए खोजबार प्राप्त कर सकता हूं, जिस तरह से मैं इसे चाहता हूं, और मैं जो भी चाहता हूं उसे करने के लिए प्रगति प्राप्त कर सकता हूं, और मैं पर टचवेन्ट को क्षैतिज रूप से लंबवत जाने के लिए संशोधित कर सकता हूं। मैं क्या नहीं कर सकता 0gडिफ़ॉल्ट 29 क्षैतिज पिक्सल के बाहर setThumbOffset() का उपयोग किए बिना अंगूठे को प्राप्त करने के लिए अंगूठे प्राप्त करें। में यह कोई समस्या नहीं है। समस्या इस तथ्य से आ रही है कि मैं अंगूठे ऑफसेट को बिल्कुल समझ नहीं पा रहा हूं - मुझे लगता है। मुझे लगता है कि मैं विजेट का आकार बदल सकता हूं, जो मुझे पूरा यकीन है कि मैं सही नहीं कर रहा हूं। या शायद मैं थंब ऑफसेट का उपयोग कर सकता हूं अगर मैं इसे समझ सकता हूं। चूंकि मैं प्रगति की सही ढंग से गणना कर सकता हूं, मैंने सोचा था कि मैं विजेट के प्रगति * (getTop() - getBottom()) के एक रैखिक फ़ंक्शन का उपयोग करूंगा लेकिन ऐसा प्रतीत नहीं होता है। लेकिन मैं यह नहीं समझ सकता कि ऑफसेट केंद्रित है।एंड्रॉइड लुकबार विजेट को लंबवत
कुछ हद तक एक तरफ, मैं वास्तव में अनिश्चित हूं कि पर मैं क्या कर रहा हूं SizeChanged() sane है या अगर यह मुझे बाद में पर गधे में काटने जा रहा है।
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<com.mobilsemantic.mobipoll.SlideBar
android:id="@+id/slide"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:max="100"
android:progress="0"
android:secondaryProgress="25" />
<Button android:id="@+id/button"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Hello, I am a Button" />
<TextView android:id="@+id/tracking"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
और वर्ग (डिबगिंग कबाड़ ध्यान न दें):
import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.SeekBar;
public class SlideBar extends SeekBar {
private int oHeight = 320, oWidth = 29;
private int oProgress = -1, oOffset = -1;;
private float xPos = -1, yPos = -1;
private int top = -1, bottom = -1, left = -1, right = -1;
public SlideBar(Context context) {
super(context);
}
public SlideBar(Context context, AttributeSet attrs)
{
super(context, attrs);
oOffset = this.getThumbOffset();
oProgress = this.getProgress();
}
public SlideBar(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
}
protected synchronized void onMeasure(int widthMeasureSpec, intheightMeasureSpec)
{
int height = View.MeasureSpec.getSize(heightMeasureSpec);
oHeight = height;
this.setMeasuredDimension(oWidth, oHeight);
}
protected void onSizeChanged(int w, int h, int oldw, int oldh)
{
super.onSizeChanged(h, w, oldw, oldh);
}
protected void onLayout(boolean changed, int l, int t, int r, int b)
{
super.onLayout(changed, l, t, r, b);
left = l;
right = r;
top = t;
bottom = b;
}
protected void onDraw(Canvas c)
{
c.rotate(90);
c.translate(0,-29);
super.onDraw(c);
}
public boolean onTouchEvent(MotionEvent event)
{
xPos = event.getX();
yPos = event.getY();
float progress = (yPos-this.getTop())/(this.getBottom()-this.getTop());
oOffset = this.getThumbOffset();
oProgress = this.getProgress();
Log.d("offset" + System.nanoTime(), new Integer(oOffset).toString());
Log.d("progress" + System.nanoTime(), new Integer(oProgress).toString());
float offset;
offset = progress * (this.getBottom()-this.getTop());
this.setThumbOffset((int)offset);
Log.d("offset_postsetprogress" + System.nanoTime(), new Integer(oOffset).toString());
Log.d("progress_postsetprogress" + System.nanoTime(), new Integer(oProgress).toString());
this.setProgress((int)(100*event.getY()/this.getBottom()));
return true;
}
}
देखना होगा http://stackoverflow.com/a/28397583/3496570 और http://stackoverflow.com/a/28397530/ 34 9 6570 – Nepster