2015-02-05 19 views
9

Tôi có trong thư mục drawable một tệp hình ảnh có kích thước 960x1440. Khi bắt đầu ứng dụng, hình ảnh không được tải làm nền và trong logcat tôi thấy:Bitmap quá lớn để được tải lên thành một hoạ tiết

Bitmap quá lớn để được tải lên thành một kết cấu (2880x4320, max = 4096x4096)

Tại sao nó nói 2880x4320 nếu hình ảnh là 960x1440?

Các bitmap được nạp qua 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

Vui lòng cung cấp một số mã mẫu, nơi bạn tải kết cấu. –

+0

bạn đã kiểm tra tất cả các thư mục có thể vẽ được của mình nếu không có tệp lớn trong chúng? Ứng dụng của bạn đang hoạt động mà không có hình nền? Loại tệp hình ảnh đó là gì, png, jpg? –

+0

Tôi chỉ có 1 tệp cho tất cả độ phân giải (có thể vẽ) là 1,02 mb và có kích thước 960x1440 ... có, ứng dụng chạy không có hình ảnh bg ... nhưng không có trên tất cả các thiết bị, chỉ trên Nexus 5 tại thời điểm – andreasperelli

Trả lời

44

một hình ảnh trong thư mục /drawable/ mà không cần bất kỳ đặc điểm kỹ thuật được coi là "mặc định", có nghĩa là cho 1dp = 1px đó là mpdi, sau đó vì thiết bị bạn đang thực sự chạy là xxhdpi mà hình ảnh được thu nhỏ trong thời gian chạy.

Hình ảnh gốc có thể là 960x1440, nhưng chuyển đổi từ mdpi thành xxhdpi có kích thước gấp 3 lần, vì vậy 960x1440 trở thành (3 * 960) x (3 * 1440) = 2880x4320, kết cấu quá lớn áp dụng cho chế độ xem tăng tốc phần cứng.

như vậy để khắc phục điều đó thực sự là khá đơn giản, bạn có hai lựa chọn:

  1. di chuyển hình ảnh của bạn để /drawable-nodpi/ đó là đơn giản, làm giảm kích thước .apk, nhưng các thiết bị cuối thấp hơn có thể đấu tranh để tải một hình ảnh lớn như vậy .
  2. tạo hình ảnh được chia tỷ lệ trên tất cả các mật độ mdpi, hdpi, xhdpi, xxhdpi để tránh thời gian chạy quá mức và có hình ảnh nhỏ hơn trên các thiết bị cũ hơn.
+0

thực sự không có 2. bây giờ là khá đơn giản, nhờ vào Android Drawable Importer plugin – Antek

Các vấn đề liên quan