1

我的 xml 中有以下布局结构:

<FrameLayout  xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/mainlayout"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent">

    <MyEntireView
            android:id="@+id/map"
            android:layout_width="fill_parent" 
            android:layout_height="fill_parent">
    </MyEntireView>

    <FrameLayout
            android:id="@+id/focusedlayout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom">

           <MyDetailedView
              android:id="@+id/focus"
              android:layout_width="fill_parent" 
              android:layout_height="fill_parent">
           </MyDetailedView>
    </FrameLayout>
</FrameLayout>

MyEntireView是一个地图(一个可绘制的)并MyDetailedView在其顶部弹出onTouch()并且仅包含整个地图的某一部分(也是可绘制的),它更详细地显示了用户在整个地图上触摸的区域MyEntireView

MyDetailedView显示时——即它的setVisibility(View.VISIBLE)——顶部会出现一些透明形状(还有一些位图)并定期重绘(例如,1 秒间隔)。这些形状是作为 的子项动态添加的,@+id/focusedlayout因为它们的数量总是不同的,并且它们的位置与详细的地图图片相关。

问题是每次更新都会被处理多次。每次更新一个形状,然后调用 MyEntireView's onDraw(),调用 MyDetailedView's onDraw(),然后再次调用这两个。只有在此之后,形状本身才会失效。

结果,此行为使形状闪烁,因为MyDetailedView重绘和隐藏形状大约 10 毫秒。

我可能忽略了一些简单的逻辑,但是如果有一种方法可以强制 ViewGroup 的一个视图无效(),我真的无法理解。

或者也许有一个替代结构/布局可以用来满足我的目的?

非常感谢!

PS 整个代码放在这里相当大,但我愿意根据要求插入任何部分

4

0 回答 0