2016-11-28 17 views
7

Tôi đang chạy Ubuntu 16.04. Và trên Android Studio khi tôi cố gắng để chạy ứng dụng trên trình giả lập tôi nhận được lỗi sau:Android Studio Canvas: vẽ bitmap quá lớn

FATAL EXCEPTION: main Process: project name here, PID: 2528 java.lang.RuntimeException: Canvas: trying to draw too large(216090000bytes) bitmap. at android.view.DisplayListCanvas.throwIfCannotDraw(DisplayListCanvas.java:260) at android.graphics.Canvas.drawBitmap(Canvas.java:1415) at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:528) at android.widget.ImageView.onDraw(ImageView.java:1316) at android.view.View.draw(View.java:17185) at android.view.View.updateDisplayListIfDirty(View.java:16167) at android.view.View.draw(View.java:16951) at android.view.ViewGroup.drawChild(ViewGroup.java:3727) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3513) at android.view.View.updateDisplayListIfDirty(View.java:16162) at android.view.View.draw(View.java:16951) at android.view.ViewGroup.drawChild(ViewGroup.java:3727) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3513) at
etc...

tôi đã phải chạy qua một số hoops để có được giả lập của tôi làm việc tuy nhiên, cần thiết để tạo ra một sym-link để Tôi có thể chạy bộ mô phỏng trên AMD. Không chắc chắn nếu điều này là một phần của vấn đề. Và đối với cuộc sống của tôi, tôi không thể hiểu tại sao nó tiếp tục làm điều này. Trong nhóm của tôi có những người khác thi đua dự án tốt trên cùng một điện thoại giả lập và SDK.

SOLUTION

Hóa ra vấn đề là hình ảnh chính mà chúng tôi sử dụng trên ứng dụng của chúng tôi vào thời điểm đó. Kích thước thực của hình ảnh quá lớn nên chúng tôi đã nén nó. Sau đó, nó làm việc như một say mê, không mất chất lượng và các ứng dụng chạy tốt trên giả lập.

+0

bạn đã thử đọc bitmap ở kích thước nhỏ hơn bằng cách sử dụng 'BitmapOption.inSampleSize'? –

+0

lấy mẫu bitmap của bạn bằng cách sử dụng https://developer.android.com/training/displaying-bitmaps/load-bitmap.html –

+1

** trường hợp của tôi, di chuyển bitmap giật gân (hi-res) từ drawable sang drawable-xxhdpi là giải pháp. ** Tôi có cùng một vấn đề. Tôi đã không nghi ngờ màn hình giật gân của tôi là vấn đề, vì nó được hiển thị khi ứng dụng được bắt đầu, nhưng nó bật ra màn hình giật gân là vấn đề. Màn hình giật gân trong trường hợp của tôi có độ phân giải xxhdpi và được đặt nhầm vào thư mục drawable, thay vì draw-xxhdpi. Điều này làm cho Android giả sử màn hình giật gân có độ phân giải mdpi và chia tỷ lệ hình ảnh thành 3 * 3 lần kích thước cần thiết và cố gắng tạo bitmap. –

Trả lời

39

Di chuyển hình ảnh của bạn trong (hi-res) drawable đến drawable-xxhdpi. Nhưng trong phát triển ứng dụng, bạn không cần phải sử dụng cho hình ảnh lớn để tăng kích thước tệp APK của bạn.

+2

Cảm ơn! Điều đó hoạt động. – user2137020

+1

Đây phải là câu trả lời được chấp nhận –

+2

Cảm ơn, điều đó cũng đã hoạt động khi hình ảnh của tôi chỉ có kích thước 500 kb, nhưng độ phân giải quá cao. – ashishdhiman2007

1

Tắt vấn đề là hình ảnh chính mà chúng tôi đã sử dụng trên ứng dụng của mình vào thời điểm đó. Kích thước thực của hình ảnh quá lớn nên chúng tôi đã nén nó. Sau đó, nó làm việc như một say mê, không mất chất lượng và các ứng dụng chạy tốt trên giả lập.

3

Trường hợp của tôi, di chuyển bitmap giật gân (hi-res) từ drawable sang drawable-xxhdpi là giải pháp.

Tôi gặp vấn đề tương tự. Tôi đã không nghi ngờ màn hình giật gân của tôi là vấn đề, vì nó được hiển thị khi ứng dụng được bắt đầu, nhưng nó bật ra màn hình giật gân là vấn đề.

Màn hình giật gân trong trường hợp của tôi có độ phân giải xxhdpi và được đặt nhầm vào thư mục drawable, thay vì draw-xxhdpi. Điều này làm cho Android giả sử màn hình giật gân có độ phân giải mdpi và chia tỷ lệ hình ảnh thành 3 * 3 lần kích thước cần thiết và cố gắng tạo bitmap.

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