Resimlerle çalışmak
dikkatli olun. Çalışırken bir OutOfMemoryError
ile kolayca karşılaşabilirsiniz
büyük bit eşlemlere sahip
olabilir. Uygulamanızın iyi performans göstermesini sağlamak için bu en iyi uygulamalardan yararlanın:
en iyisi.
Yalnızca ihtiyacınız olan bit eşlemin boyutunu yükleyin
Çoğu akıllı telefon, büyük görüntü dosyaları oluşturan yüksek çözünürlüklü kameralara sahiptir. Eğer ekranda bir resim gösteriyorsanız videonun çözünürlüğünü veya resmi, yalnızca görüntü kapsayıcınızın boyutuna kadar yükleyin. İlgili içeriği oluşturmak için kullanılan sabit bir şekilde yüklenmesi, GPU önbelleklerini tüketebilir ve bu da kullanıcı arayüzü oluşturmaya yardımcı olur.
Resim boyutlarını yönetmek için:
- Resim dosyalarınızı mümkün olduğunca küçük olacak şekilde ölçeklendirin ( çıkış resmi) ekleyin.
- JPEG veya PNG yerine resimlerinizi WEBP biçimine dönüştürmeyi düşünün.
- Farklı ekran çözünürlükleri için daha küçük resimler sağlayın (3. İpucuna bakın),
- Resminizi size yardımcı olabilir. Bu, uygulamanızın yükleme performansının iyileştirilmesine dikkat edin.
Mümkün olduğunda bit eşlemler yerine vektörleri kullanın
Ekranda görsel olarak bir şeyi temsil ederken bunun mümkün olup olmadığına karar vermeniz gerekir. bir vektör olarak temsil edilip edilmeyeceğini belirtir. Bit eşlemler yerine vektör resimleri pikselleştirmeyeceğinden emin olabilirsiniz. Ancak her şey bir vektör olarak temsil edilebilir (fotoğraf makinesiyle çekilen resimler dönüştürülemez) bir vektöre dönüştürülür.
Farklı ekran boyutları için alternatif kaynaklar sağlama
Uygulamanızla birlikte resim gönderiyorsanız farklı boyutlarda feed'ler sunabilirsiniz. farklı cihaz çözünürlüklerine uygun öğeler kullanabilirsiniz. Bu şekilde indirme boyutunu küçültebilirsiniz ve uygulama yükleme süresi azaldıkça performansı artırırsınız. daha düşük çözünürlüklü bir cihazda kullanmanız gerekir. Paydaş analizine hazırlanırken farklı boyutlar için alternatif bit eşlemleri görmek istiyorsanız bunun alternatif bit eşlem dokümanlarına göz atın.
ImageBitmap
kullanırken çizimden önce prepareToDraw
işlevini çağırın
ImageBitmap
kullanırken dokuyu
GPU'yu kullanmaya başlamadan önce ImageBitmap#prepareToDraw()
işlevini çağırın. Bu
GPU'nun dokuyu hazırlamasına ve genel bir görüntü oluşturmada
ve görsellerdir. Çoğu resim yükleme kitaplığı bu optimizasyonu zaten yapar, ancak
ImageBitmap
sınıfıyla kendiniz çalışıyorsanız
unutmayın.
composable'ınıza Painter
yerine parametre olarak bir Int
DrawableRes
veya URL iletmeyi tercih edin
Resimler üzerinde çalışmanın karmaşık olması nedeniyle (örneğin,
işlevi (Bitmaps
) işlem yükü açısından pahalı olacaktırsa Painter
API
kararlı sınıf olarak işaretlenmediğini unutmayın. Kararsız sınıflar
gereksiz yeniden birleştirmelere neden olabilir. Çünkü derleyici,
veriler değişti.
Bu nedenle, parametre olarak bir URL veya çekilebilir kaynak kimliğinin iletilmesi tercih edilir.
kodunu Painter
iletmek yerine composable'a gönderebilirsiniz.
// Prefer this:
@Composable
fun MyImage(url: String) {
}
// Over this:
@Composable
fun MyImage(painter: Painter) {
}
Bir bit eşlemi, ihtiyaç duyduğunuzdan daha uzun bir süre bellekte depolamayın
Belleğe ne kadar çok bit eşlem yüklerseniz,
bellekte yer kalmadığını fark etmiş olabilirsiniz. Örneğin,
composable'ın hazır olduğunu düşünüyorsanız
hafızanın yeterli olduğundan emin olmak içinLazyColumn
LazyRow
bir miktar tasarruf edilir.
Büyük resimleri AAB/APK dosyanızla paketlemeyin
Uygulama indirme boyutunun büyük olmasının en önemli nedenlerinden biri, AAB veya APK dosyasında paketlenmiş olarak gelir. APK analiz edici aracını kullanarak gereken resim dosyalarından daha büyük paketlemediğinizden emin olun. Boyutları küçültün resimleri bir sunucuya yerleştirin ve yalnızca gerektiğinde indirmeyi düşünün.
Sizin için önerilenler
- Not: JavaScript kapalıyken bağlantı metni gösterilir
- ImageBitmap ve ImageVector {:#bitmap-vs-vector}
- Oluşturma'da kullanıcı arayüzü durumunu kaydet
- Jetpack Compose Aşamaları