我现在想实现一个功能是:当我拖动图中seekbar的时候,上面的黑线可以上下移动。
具体的说,一个activity有一个seekbar,我怎么能在seekbar边滑动,上面的黑线也随着变化?
用canvas画黑线。
若需要在canvas中动态改变Y值。补充代码示例:
public class LineView extends View {
private int mProgressPercent;
private Paint mPaint;
public LineView(Context context) {
super(context);
}
public LineView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public LineView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public void update(int progress) {
mProgressPercent = progress;
invalidate();
}
@Override
protected void onDraw(Canvas canvas) {
if (mPaint == null) {
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
}
mPaint.setColor(Color.BLACK);
float y = ((float) mProgressPercent / 100) * getHeight();
canvas.drawLine(0, y, getWidth(), y, mPaint);
}
}
Activity:
private SeekBar mSeekBar;
private LineView mLineView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mLineView = (LineView) findViewById(R.id.lineView);
mSeekBar = (SeekBar) findViewById(R.id.seekBar);
mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
mLineView.update(progress);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。