2015-02-05 65 views
9

我在繪圖目錄中有一個960x1440大小的圖像文件。 當應用開始,圖像不加載爲背景,在logcat中我看到:位圖太大而無法上傳到紋理中

位圖太大,爲什麼說2880x4320被上傳到紋理(2880x4320,最大= 4096×4096)

如果圖像是960x1440?

位圖是通過XML加載:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 

    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/launcher_bg" 
    android:orientation="vertical" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin"> 
+0

請提供一些示例代碼,在其中加載紋理。 – 2015-02-05 14:23:59

+0

你檢查了所有可繪製的文件夾,如果沒有一個大文件在他們?你的應用程序沒有背景圖片嗎?什麼樣的圖像文件,PNG,JPG? – 2015-02-05 14:28:12

+0

我只有1.0文件的所有分辨率(在drawable)1.02 MB和960x1440尺寸...是的,該應用程序運行沒有BG圖像...但不是在所有設備上,目前只有在Nexus 5 – andreasperelli 2015-02-05 14:30:31

回答

44

/drawable/文件夾而沒有任何規格的圖像被認爲是「默認」,即對於1DP = 1像素即mpdi,則因爲該裝置你實際上運行的是xxhdpi,圖像在運行時被放大。

原始圖像可能是960x1440,但是從mdpixxhdpi轉換爲3倍的大小,所以你960x1440變爲(3×960)×(3 * 1440)= 2880x4320,其過大的紋理到適用於硬件加速視圖。

所以要解決這個問題其實很簡單,你有兩個選擇:

  1. 圖像移動到/drawable-nodpi/這是簡單,降低了.apk文件大小,但低端設備可能會努力地加載這麼大的圖像。
  2. 在所有密度上創建縮放圖像mdpi,hdpi,xhdpi,xxhdpi,以避免運行時過度縮放並在較舊的設備上擁有較小的圖像。
+0

實際上沒有2.現在非常簡單,這要感謝Android Drawable Importer插件 – Antek 2017-05-23 12:44:28

相關問題