2012-06-15 24 views
0

我想創建的View辯的另一個​​頂層一個層次是,大致爲:如何將SurfaceView放入視圖的分層結構中?

的FrameLayout {
    SurfaceView
   查看
   查看
    SurfaceView
   查看
    SurfaceView
}

我希望每個SurfaceView的繪圖事件出現在層次結構中的正確位置。例如,頂面應顯示在所有內容的前面。底部的一個應該出現在一切之後。

不幸的是,我可以使每個表面出現在所有使用setZOrderOnTop(true)的表面前,並且我可以使每個表面出現在底部,而不是這樣做,但是我不能讓它出現在中間。如何做到這一點?

+0

您不必使用FrameLayout,您可以在onCreate中使用addContentView()。我懷疑Android會有如此多的觀點表現出色。所有可以用一個或兩個視圖完成。 – Lumis

+0

我有一系列的按鈕關閉到一邊,所以實際上我不能使用活動的根'FrameLayout',但由於它是一個'FrameLayout'這就引發了這個問題。我的應用程序絕對要求我生成一個分層圖形,在相對靜態元素之間快速更改元素,因此我必須在「視圖」中實現複雜的自定義繪圖或使用圖層(最終自定義繪圖最終將執行相同的處理)。 –

+0

由於只有一個視圖可以進行觸摸輸入,並且用戶只能看到一個表面,所以一切都取決於圖形的層次。使用畫布的單個自定義視圖可以完成這項工作。雖然有時在正常的android視圖下,但有一個放置了動畫背景的自定義視圖。所以我看不到任何應用程序如何需要兩個以上的真實圖層......我很好奇你在做什麼...... – Lumis

回答

0

FrameLayout旨在屏蔽屏幕上的區域以顯示單個項目。通常,應該使用FrameLayout來保存單個子視圖,因爲以可擴展到不同屏幕尺寸的方式組織子視圖可能很困難,而這些子視圖之間沒有兒童重疊。

我建議您改用LinearLayoutRelativeLayout

+0

我想你已經誤解了:我希望所有的圖層重疊。事實上,我希望他們在字面上佔據同一個矩形的不同層次;此外,這是工作得很好,除了'SurfaceView'元素要麼在後面,要麼在前面(我希望其中的一個在中間)。 –

0

在撰寫本文時,這似乎是不可能的。

+0

您是否嘗試過頂級SurfaceViews的getHolder()。setFormat(PixelFormat.TRANSLUCENT)?我只是在做一個相機覆蓋... – Lumis

+0

讓它覆蓋是不是問題 - 問題是讓不透明的像素顯示*在頂部的元素下面,但*上面的*底部的。 –