#android #performance #memory #imageview #rendering
#Android #Производительность #память #просмотр изображений #рендеринг
Вопрос:
Я хотел бы знать, что более эффективно с точки зрения рендеринга и потребления памяти?
Предположим, что всегда будет видно одно изображение. Что эффективнее иметь 3 изображения в макете и изменять их видимость или программно изменять ImageResource для 1 изображения?
Вот пример:
Случай №1
<!-- View case 1 -->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@ id/img1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/img_1" />
<ImageView
android:id="@ id/img2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/img_2" />
<ImageView
android:id="@ id/img3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/img_3" />
</LinearLayout>
// Implementation Case #1
fun showImg2() {
binding.img1.visibility = View.INVISIBLE
binding.img2.visibility = View.VISIBLE
binding.img3.visibility = View.INVISIBLE
}
Случай № 2
<!-- View case 2 -->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@ id/img1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/img_1" />
</LinearLayout>
// Implementation Case #2
fun showImg2() {
binding.img.setImageResource(R.drawable.img_2)
}
Что более эффективно с точки зрения рендеринга и потребления памяти?
Ответ №1:
Очевидно, что случай 2 более эффективен. Если вы конвертируете свои изображения в webp, это будет лучше, чем лучше.
Комментарии:
1. Отлично, не знал, что webp поддерживается в Android. Веб-сервисы CDN, такие как ImageKit, также могут быть полезны. Я бы оставил вопрос здесь, возможно, кто-то сделает некоторые измерения. Я считаю, что случай 1 лучше для процессора, но хуже для памяти, а случай 2 лучше для памяти, но хуже для процессора.