Java 调用invalidate时在其他自定义视图中调用onDraw
我有两个具有相同方法的自定义视图,当我在其中一个视图中调用Java 调用invalidate时在其他自定义视图中调用onDraw,java,android,android-canvas,Java,Android,Android Canvas,我有两个具有相同方法的自定义视图,当我在其中一个视图中调用invalidate()时,它在两个视图中都调用onDraw方法。我尝试了几种方法,包括this.invalidate(),但它仍然调用它。我认为它工作的唯一方法是向另一个类添加一个布尔值,以检查它在onDraw()中被自己调用的情况 自定义视图1 自定义视图2 你是从一个延伸到另一个吗?例如,您从自定义视图1扩展了自定义视图2。@CsehTamá都是扩展视图。您可以发布测试代码吗?类1:类2:这些视图位于多通道布局(带权重的Relati
invalidate()
时,它在两个视图中都调用onDraw
方法。我尝试了几种方法,包括this.invalidate()
,但它仍然调用它。我认为它工作的唯一方法是向另一个类添加一个布尔值,以检查它在onDraw()中被自己调用的情况
自定义视图1
自定义视图2
你是从一个延伸到另一个吗?例如,您从自定义视图1扩展了自定义视图2。@CsehTamá都是扩展视图。您可以发布测试代码吗?类1:类2:这些视图位于多通道布局(带权重的RelativeLayout或LinearLayout)中。请给出视图层次结构,说明如何在布局中放置这些视图。
public void showPercentage(double percent, double out){
cropx = (int) percent;
outof = (int) out;
this.invalidate();
}
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if(cropx != 0){
croppedBmp = Bitmap.createBitmap(drawGraph2, 0, 0, (drawGraph2.getWidth()*cropx/100), drawGraph2.getHeight());
canvas.drawBitmap(croppedBmp, 0, 0, new Paint());
croppedBmp.recycle();
System.gc();
Runtime.getRuntime().gc();
}
}
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//System.out.print to check if its being called
System.out.println("hey");
Bitmap croppedBmp = Bitmap.createBitmap(drawGraph2);
canvas.drawBitmap(croppedBmp, 0, 0, new Paint());
}