gpt4 book ai didi

java - 安卓设计: onDraw() not called after invalidate()

转载 作者:行者123 更新时间:2023-12-02 11:39:09 26 4
gpt4 key购买 nike

在调用自定义 View (扩展 View )的 invalidate() 方法后,不会调用 onDraw() 方法。这是由我的应用程序设计引起的,但我不知道如何解决这个问题。

我在 FrameLayout 中有两个布局(见下文),它们应该像照片编辑软件中的图层一样工作。在代码中我向layout1和layout2添加了不同的自定义 View 。将第二个自定义 View 添加到第二个布局后,调用 invalidate() 后不会调用第一个自定义 View 的 onDraw() 方法。

<FrameLayout
android:id="@+id/main_frameLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">

<LinearLayout
android:id="@+id/main_layout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" />

<LinearLayout
android:id="@+id/main_layout2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" />
</FrameLayout>

在两个自定义 View 中,我在孔屏幕尺寸上绘制位图并绘制一些线条。该绘图在两个自定义 View 中实现,例如:

@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
if (w > 0 && h > 0) {
this.bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
}
}

@Override
public void onDraw(Canvas canvas) {
canvas.drawBitmap(this.bitmap, 0, 0, new Paint());
drawSomeLines(canvas);
}

如果我只向一个布局添加一个自定义 View ,一切都可以正常工作。有人知道我的结构/代码有什么问题吗?

最佳答案

我自己解决了这个问题,也许这个解决方案会对任何人有所帮助。

问题是我将自定义 View 添加到不同的布局中。我删除了两个 LinearLayout,并将自定义 View 直接添加到 FrameLayout,并且工作正常。

关于java - 安卓设计: onDraw() not called after invalidate(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48708668/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com