Reputation: 3260
I am building an app in which i have a Arc SeekBar
and i am trying to make the TextView
to follow SeekBar
thumb.
My Code:
seekBar = (ArcSeekBar)findViewById(R.id.seekArc);
textView = (TextView)findViewById(R.id.myText);
seekBar.setOnSeekArcChangeListener(new ArcSeekBar.OnSeekArcChangeListener() {
@Override
public void onProgressChanged(ArcSeekBar seekArc, int progress, boolean fromUser) {
int x = seekBar.getmTranslateX() - seekBar.getmThumbXPos()-100;
int y = seekBar.getmTranslateY() - seekBar.getmThumbYPos()-100;
textView.setX(x);
textView.setY(y);
textView.setText(String.valueOf(progress));
}
@Override
public void onStartTrackingTouch(ArcSeekBar seekArc) {
}
@Override
public void onStopTrackingTouch(ArcSeekBar seekArc) {
}
});
And how i meeassure the seekbar X and Y positions.
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
final int height = getDefaultSize(getSuggestedMinimumHeight(),
heightMeasureSpec);
final int width = getDefaultSize(getSuggestedMinimumWidth(),
widthMeasureSpec);
final int min = Math.min(width, height);
float top = 0;
float left = 0;
int arcDiameter = 0;
mTranslateX = (int) (width * 0.5f);
mTranslateY = (int) (height * 0.5f);
arcDiameter = min - getPaddingLeft();
mArcRadius = arcDiameter / 2;
top = height / 2 - (arcDiameter / 2);
left = width / 2 - (arcDiameter / 2);
mArcRect.set(left, top, left + arcDiameter, top + arcDiameter);
int arcStart = (int) mProgressSweep + mStartAngle + mRotation + 90;
mThumbXPos = (int) (mArcRadius * Math.cos(Math.toRadians(arcStart)));
mThumbYPos = (int) (mArcRadius * Math.sin(Math.toRadians(arcStart)));
setTouchInSide(mTouchInside);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
The result is:
Any ideas? I want the text to be above the thumb always.
Upvotes: 0
Views: 538
Reputation: 1695
yout must to have central point . and the textview circle size must be bigger than other circle
Upvotes: 2