扫码关注官方订阅号
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
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有没有背景?
没看出来你的问题是怎么造成的,可以贴上你的实现代码以帮你分析一下
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
seekbar.setOnSeekBarChangeListener, 在onProgressChanged callback中动态的改变黑线View的marginTop即可
public class LineView extends View {
}
public class MainActivity extends AppCompatActivity {
}
你是不是在onDraw里操作canvas的?这个ImageView有没有背景?
没看出来你的问题是怎么造成的,可以贴上你的实现代码以帮你分析一下