我正在建立一个应用程序,其中我有一个弧形SeekBar,我试图使TextView跟随SeekBar拇指。
我的代码:
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) {
}
});以及如何确定搜索栏的X和Y位置。
@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);
}结果是:

有什么想法吗?我希望文本总是在拇指上方。
发布于 2016-04-09 22:08:42

你必须有中心点。并且文本视图圆的大小必须大于其他圆

https://stackoverflow.com/questions/36516840
复制相似问题