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());
}