簡體   English   中英

如果圖像處於drawable-xxhdpi,則部分顯示

[英]Image displayed partially if in drawable-xxhdpi

我正在使用此工廠通過ImageSwitcher顯示圖像:

    view_background.setFactory {
        val imageView = ImageView(this@MainActivity)
        imageView.scaleType = ImageView.ScaleType.CENTER_CROP
        imageView
    }

而且我在Nexus 5模擬器上正確顯示了2341x1246 PNG 2.55 MB圖片:

在此處輸入圖片說明

但是,如果我在Nexus 6上使用它,則會崩潰:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.llovagn.t4r, PID: 4693
    java.lang.RuntimeException: Canvas: trying to draw too large(142936136bytes) bitmap.

通過按照答案的建議將其放入drawable-xxhdpi ,現在在兩個設備上都看起來像這樣:

在此處輸入圖片說明

我不想要的東西(第一種方法是正確的方法)。 為什么以及如何解決這個問題?

2341x1246 PNG 2.55 MB

畫布: 試圖繪制太大的位圖( 142936136bytes

這似乎不是一個好方法。 減小圖像的尺寸,然后將圖像放在drawable目錄中。

這是因為您將圖片放在“ drawable- xxhdpi ”中。 看一下這里的尺寸。

但是,按照我的建議進行操作之后,請使用FIT_XY調整圖像大小:

imageView.scaleType = ImageView.ScaleType.FIT_XY

您的應用程序中不需要2.5 MB的圖像。 這樣的大小實在太多了。

為避免此錯誤,請嘗試使用盡可能小的圖像分辨率,而且圖像視圖也應該很小,您也可以在較大和高分辨率的設備上獲得OOM。 最好的方法是在背景視圖上使用png圖像,其中背景可以是純色或漸變。 通過這種方式,您可以使用較小的圖像,這些圖像可能不需要占據整個屏幕尺寸。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM