2011-10-25 42 views
2

我遇到越來越多具有不規則佈局的Android設備,特別是在HDPI部分。具有不規則佈局的Android HDPI設備

問題是,即使我只在我的xml佈局中使用DIP值,我的更復雜的佈局也不能正確縮放。因爲我使用TransformAnimation代碼中的float值,所以動畫特別成問題。

例如,我將有一個240dpi手機與3.7英寸的屏幕,android安卓標準分辨率。我可以爲此設備製作HDPI和大型佈局,並使它們完美適合所有設計和美學。

然後我有一個4.2英寸的手機,但其垂直分辨率仍然低於XHDPI或XLARGE。如果您問設備DPI是什麼,它也會報告240dpi。不幸的是,由於實際上不同的寬高比,實際上不同的屏幕尺寸和實際上不同的分辨率,我的佈局不能正確縮放。也沒有辦法做一個單獨的佈局文件夾,因爲設備THINKS它是一個layout-large和hdpi,因爲它只是報告它錯了。 (EVO,其他幾款「長」手機)閱讀Android文檔,似乎可以使用layout-long-large和其他類型的組合,但手機本身仍然認爲它只是佈局大。 long限定符在報告有關其自身信息的設備中工作。

人們如何處理與Android框架,而不是在代碼中執行此操作。這對我來說將是一件非常乏味的工作,如果硬件錯誤地報告了有關自身的所有信息,我對如何動態地做這件事有疑問。

Insight深表讚賞。

回答

0

我對這個問題的解決方法是依賴RelativeLayout的定位越來越多。

0

解決此問題的一種方法是,每次應用程序啓動時,都會將其useragent發送到服務器。然後,服務器確定要使用的正確圖像,並將該信息發送給使用該信息顯示該圖像的客戶端。其他移動平臺就是這種情況,儘管Android解決了這個問題,但您似乎遇到了問題。試試看。

還有你考慮使用9路徑圖像?

+0

我已經考慮過了,但9-patch圖片在這裏有什麼優勢? – CQM

1

你的目標框架是什麼?我想,除非API目標是9或以上,否則該設備不會將其自身報告爲xhdpi。

+1

我試圖升級到清單中的API目標10,在報告更改中沒有任何影響。 xlarge屏幕至少960dp x 720dp。這款手機(包括EVO 4g,Evo 3d等)都是960 x 540 DP。它是一個4英寸以上的屏幕,使用'getResources()。getDisplayMetrics()。densityDpi'函數報告爲240dpi,因此當它明顯不同時,它響應layout-large和drawable-hdpi。 Google T-Mobile G2是一款3.7英寸240dpi屏幕,800x480屏幕,響應佈局大和可繪製的hdpi。硬編碼解決方案很糟糕,因爲很可能會出現另一種非標準設備 – CQM