如何在Android的让图中的黑线随着滑动seekbar一起变化?
我现在想实现一个功能是:当我拖动图中seekbar的时候,上面的黑线可以上下移动。
具体的说,一个activity有一个seekbar,我怎么能在seekbar边滑动,上面的黑线也随着变化?
用canvas画黑线。
回答:
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) {
}
});
}
}
回答:
你是不是在onDraw里操作canvas的?这个ImageView有没有背景?
回答:
没看出来你的问题是怎么造成的,可以贴上你的实现代码以帮你分析一下
以上是 如何在Android的让图中的黑线随着滑动seekbar一起变化? 的全部内容, 来源链接: utcz.com/p/178605.html