首页 > 如何在Android的让图中的黑线随着滑动seekbar一起变化?

如何在Android的让图中的黑线随着滑动seekbar一起变化?

我现在想实现一个功能是:当我拖动图中seekbar的时候,上面的黑线可以上下移动。

具体的说,一个activity有一个seekbar,我怎么能在seekbar边滑动,上面的黑线也随着变化?
用canvas画黑线。


你是不是在onDraw里操作canvas的?这个ImageView有没有背景?


没看出来你的问题是怎么造成的,可以贴上你的实现代码以帮你分析一下


seekbar.setOnSeekBarChangeListener, 在onProgressChanged callback中动态的改变黑线View的marginTop即可


若需要在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

public class MainActivity extends AppCompatActivity {

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) {

        }
    });
    
}

}

【热门文章】
【热门文章】