java - 如何将数据更新到从自定义视图类创建的对象中,以便可以在自定义视图上绘制?
问题描述
我的应用程序需要将数据发布到自定义视图并根据 MainActivity 发送的数据重绘视图。这是示例代码。自定义视图->
public class custom_view extends View {
private simple_line line;
public custom_view(Context context) {
super(context);
line=new simple_line(0);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
line.draw_line(canvas);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
setMeasuredDimension(getMeasuredWidth(),getMeasuredHeight());
}
private class simple_line{
private float x_val;
private Paint mpaint;
public simple_line(float val){
x_val=val;
mpaint=new Paint();
mpaint.setColor(Color.RED);
mpaint.setStyle(Paint.Style.STROKE);
mpaint.setStrokeWidth(10);
}
public float getX_val() {
return x_val;
}
public void setX_val(float x_val) {
this.x_val = x_val;
invalidate();
}
public void draw_line(Canvas canvas){
Path mpath=new Path();
mpath.moveTo(getWidth()/2+x_val,0);
mpath.lineTo(getWidth()/2+x_val,getHeight());
mpath.close();
canvas.drawPath(mpath,mpaint);
}
}
public void update_xval(float val){
line.setX_val(val);
}
}
这是主要活动->
public class MainActivity extends AppCompatActivity{
private Button button;
private custom_view myview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button=(Button)findViewById(R.id.mybutton);
myview=(custom_view)findViewById(R.id.myview);
myview=new custom_view(this);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myview.update_xval(100);
}
});
}
}
按下按钮时我无法更新 x_val。我哪里出错了。需要做什么来更新 x_val?
解决方案
功能有问题draw_line(Canvas canvas)
。您没有在custom_view
. 你需要invalidate()
在draw_line(Canvas canvas)
调用之后。
推荐阅读
- java - 如何将二进制字符串转换为十六进制并在java中通过Uart端口发送
- angular - 在ionic4中自动读取短信不起作用
- python - 如何使用networkx nx.draw()使x和y轴出现?
- entity - 两个聚合根之间的 DDD 共享实体
- jquery - 检查两个字段以输入字符
- python - 如何在python中将日期时间列重置为一分钟的增量
- java - Java https 请求获取 curseforge 站点的 403 响应代码
- python - Python,如何通过查找或 .map 交互两个不同的数据帧
- java - 从 ViewModel MutableLiveData 获取值并将它们显示在文本字段上
- arrays - 如何用 Excel 行(字符串)填充组合框?