我昨天花了一些時間與Android佈局掙扎(...或更好的自定義佈局)。對於一般用途來說,android提供的開箱即用的佈局綽綽有餘。但是當涉及到更復雜的用例時(讓我們以旋轉木馬的例子重疊放置在橢圓路徑上的圖像),我很快意識到了android API的侷限性和複雜性。這是我的方法:Android自定義佈局
使用開箱佈局是不是一種選擇(許多難以處理的問題處理),可以添加到一個容器圖形對象但需要(比如說例如ImageView的)是必要的,以便通過內置動畫輕鬆執行翻譯,旋轉等。
AbsoluteLayout似乎是最合理的佈局可用於此目的。它允許添加派生視圖對象並編寫自己的算法來定位它們。但是......它被棄用了。真遺憾!誰想要使用已棄用的API?
下一個最合理的做法是編寫自己的佈局子類Mystic ViewGroup ..這裏是所有東西都分崩離析(至少它對我來說)。這很複雜,誤導和棘手,儘可能爲自己編寫自定義佈局的擺動(我實際上是在幾年前做過的,而且我記得更簡單)。
然後(由絕望驅動)對View進行子分類,覆蓋onDraw方法並直接在Canvas上繪圖似乎是唯一直接的解決方案(儘管這讓我想起了java2D的日子......花了很長時間來實現高1%的項目),但是你放棄了你想要應用到畫布上繪製的圖形的動畫API中構建的方便。
的結論是,除非我錯過了一些東西,目前的Android架構是有點遠從其他一些UI技術如閃存或JavaFX的提供的編程範式(我可以很容易地實現上述的旋轉木馬在javafx和flash中)。 原因在於,在javafx中,Scene對象(與Android的View概念相當)默認提供絕對佈局。如果您願意,您可以應用其他開箱即用的佈局。但對於需要自定義佈局的場景,您無需執行任何操作。
我有點驚訝,這個選項在android中不可用,畢竟是其他ui技術解決的常見需求。我仍然想認爲在Android中有第五個選項,我沒有找到。 那裏有哪些專家可以提供有關該主題的一些信息?
謝謝。
好問題!繼承人我幾乎相同的問題:http://stackoverflow.com/questions/4953351/android-how-to-draw-a-letter-at-a-specific-point ...爲什麼有所有這些意見和動畫,如果你不能利用它們? – Mark 2011-02-10 05:07:15