2017-04-26 12 views
0

我創建了一個非常大的佈局(大約2000行),其中包含大量的視圖和子佈局,通常具有加權度量。樹非常複雜,可以降至8層或更多層次的嵌套。 要創建不同的「透視圖」,應用程序會以編程方式設置一些視圖對View.GONE的可見性,特別是那些位於不希望顯示的視圖樹頭的視圖的不同時刻應用程序生命週期,並有時更改權重以調整視圖大小;因此,向用戶顯示的最終佈局每次不超過主佈局中的視圖和視圖樹的1/3。具有許多View.GONE視圖的大布局的性能

我不關心「切換」時間的性能,所以當用戶從一個角度切換到另一個時,我有足夠的時間來打開和關閉可見性,這不是問題。

取而代之的是,是否將如此多的視圖和視圖樹設置爲View.GONE會影響運行時的性能? GONE視圖對CPU和內存性能的影響是什麼,與顯示所有視圖的較小布局(可能以編程方式膨脹)相反?

+1

它會影響性能,特別是低規格的設備。如果您必須按照您的說法創建繁重佈局,請使用約束佈局。相對佈局更靈活。 –

+0

約束佈局可以稍微改進,但我認爲真正的問題可能是父視圖樹被設置爲GONE:它們如何處理,如死對象,還是仍然「活着」? –

+0

我認爲GONE佈局仍然會影響。你不能爲此做出不同的片段嗎? –

回答

0

實際上,在創建複雜佈局時必須使用約束佈局。

ConstraintLayout允許您使用平面視圖層次結構(無嵌套視圖組)創建大而複雜的佈局。它與RelativeLayout類似,所有視圖都根據兄弟視圖和父佈局之間的關係進行佈局,但它比RelativeLayout更靈活,並且更易於與Android Studio的佈局編輯器一起使用。

請找到網址的文檔:

https://developer.android.com/training/constraint-layout/index.html

+0

是的,正如我對Divyesh Patel所說的那樣,這是一個很好的建議,但真正的問題可能是父母被設置爲GONE的視圖樹:他們如何對待,如死對象,還是仍然「活着」? –

+0

是否有可能使隱形而不是在您的要求? – Rajasekhar

+0

不是,因爲可見視圖代替了不見的視圖。例如,在某些情況下,可能有4個視圖組織在一個十字架中,其他時間,6個視圖組織爲水平佈局 –

相關問題