Saya menjalankan Ubuntu 16.04. Dan di Android Studio ketika saya mencoba menjalankan aplikasi saya di emulator saya mendapatkan kesalahan berikut:
PENGECUALIAN FATAL: Proses utama: dll ... nama proyek di sini, PID: 2528 java.lang.RuntimeException: Canvas: mencoba menggambar bitmap (216090000bytes) terlalu besar. di android.view.DisplayListCanvas.throwIfCannotDraw (DisplayListCanvas.java:260) di android.graphics.Canvas.drawBitmap (Canvas.java:1415) di android.graphics.drawable.BitmapDrawable.draw (BitmapDrawable.java:528) di android. widget.ImageView.onDraw (ImageView.java:1316) di android.view.View.draw (View.java:17185) di android.view.View.updateDisplayListIfDirty (View.java:16167) di android.view.View.draw (View.java:16951) di android.view.ViewGroup.drawChild (ViewGroup.java:3727) di android.view.ViewGroup.dispatchDraw (ViewGroup.java:
Saya memang harus melalui beberapa rintangan untuk membuat emulator saya berfungsi, namun perlu membuat sym-link sehingga saya dapat menjalankan emulator di AMD. Tidak yakin apakah ini bagian dari masalah. Dan untuk kehidupan saya, saya tidak mengerti mengapa ia terus melakukan ini. Di grup saya, ada orang lain yang meniru proyek dengan baik di ponsel dan SDK yang sama.
BitmapOption.inSampleSize
?Jawaban:
Pindahkan gambar Anda dalam (hi-res) ditarik ke ditarik-xxhdpi . Namun dalam pengembangan aplikasi, Anda tidak perlu menggunakan gambar berukuran besar. Ini akan meningkatkan ukuran file APK Anda.
sumber
Solusinya adalah memindahkan gambar dari
drawable/
folder kedrawable-xxhdpi/
folder, seperti yang telah disebutkan orang lain.Tetapi penting juga untuk memahami mengapa saran yang agak aneh ini benar-benar membantu:
Alasannya adalah bahwa
drawable/
folder tersebut ada dari versi awal android dan setara dengandrawable-mdpi
. Saat gambar yang hanya ada didrawable/
folder digunakan padaxxhdpi
perangkat, gambar yang berpotensi sudah besar ditingkatkan skalanya dengan faktor 3, yang kemudian dalam beberapa kasus dapat menyebabkan jejak memori gambar meledak.sumber
drawable/
direktori jika saya memiliki aset didrawable-x
direktori lain ?Saya memiliki masalah yang sama. Jika Anda mencoba mengupload gambar yang terlalu besar di beberapa perangkat beresolusi rendah, aplikasi akan runtuh. Anda dapat membuat beberapa gambar dengan ukuran berbeda (hdpi, xxdpi, dan lainnya) atau cukup gunakan pustaka eksternal untuk memuat gambar yang menyelesaikan masalah dengan cepat dan efisien. Saya menggunakan perpustakaan Glide (Anda dapat menggunakan perpustakaan lain seperti Picasso).
panel_IMG_back = (ImageView) findViewById(R.id.panel_IMG_back); Glide .with(this) .load(MyViewUtils.getImage(R.drawable.wallpaper) .into(panel_IMG_back);
sumber
Ternyata masalahnya adalah gambar utama yang kami gunakan di aplikasi kami saat itu. Ukuran gambar sebenarnya terlalu besar, jadi kami mengompresnya. Kemudian itu bekerja seperti pesona, tidak ada penurunan kualitas dan aplikasi berjalan dengan baik di emulator.
sumber
Saya juga mengalami masalah ini ketika mencoba menambahkan layar splash ke aplikasi android melalui launch_backgrgound.xml. masalahnya adalah resolusinya. itu terlalu tinggi sehingga jejak memori gambar meledak dan menyebabkan aplikasi macet maka alasan untuk kesalahan ini. jadi ubah ukuran gambar Anda menggunakan situs bernama pembuat gambar nativescript sehingga saya mendapatkan ldpi, mdpi, dan yang lainnya dan itu berfungsi dengan baik untuk saya.
sumber
Untuk kesalahan ini seperti orang lain mengatakan gambar besar (1800px X 900px) yang ada di direktori drawable, saya mengedit gambar dan memperkecil ukurannya secara proporsional menggunakan photoshop dan berhasil ... !!
sumber
jika Anda menggunakan Picasso, ubah ke Glide seperti ini.
Hapus picasso
Picasso.get().load(Uri.parse("url")).into(imageView)
Ubah Glide
Glide.with(context).load("url").into(imageView)
Meluncur yang lebih efisien daripada gambar Picasso ke bitmap besar
sumber
Saya baru saja membuat direktori drawable-xhdpi (Anda dapat mengubahnya sesuai kebutuhan Anda) dan menyalin menempel semua gambar ke direktori itu.
sumber
Solusi ini berhasil untuk saya.
Tambahkan baris ini di tag aplikasi Manifest Anda
android:largeHeap="true" android:hardwareAccelerated="false"
sumber
Jika Anda tidak ingin gambar Anda diubah ukurannya, Anda dapat memindahkannya ke file
res/drawable-nodpi/
folder.Info selengkapnya: https://developer.android.com/training/multiscreen/screendensities#DensityConsiderations
sumber
Dalam kasus saya, saya harus menghapus platform android dan menambahkannya lagi. Sesuatu macet dan menyalin semua kode saya ke aplikasi lain bekerja seperti pesona - karenanya ide saya untuk membersihkan build untuk android dengan menghapus platform.
cordova platform remove android cordova platform add android
Saya rasa itu semacam pembersihan yang harus Anda lakukan dari waktu ke waktu :-(
sumber
Ini bisa menjadi masalah dengan Glide. Gunakan ini saat Anda mencoba memuat ke banyak gambar dan beberapa di antaranya sangat besar:
Glide.load("your image path") .transform( new MultiTransformation<>( new CenterCrop(), new RoundedCorners( holder.imgCompanyLogo.getResources() .getDimensionPixelSize(R.dimen._2sdp) ) ) ) .error(R.drawable.ic_nfs_default) .into(holder.imgCompanyLogo); }
sumber
Coba gunakan aset xml atau vektor daripada jpg atau png.
Alasannya cukup jelas pada nama pengecualian itu sendiri, yaitu resolusi sumber daya terlalu besar untuk dirender.
Anda dapat png ke xml menggunakan alat online seperti https://svg2vector.com/ ATAU menambahkan gambar Anda ke folder drawable-xxhdpi.
sumber