В моем приложении это выгодно, если я предварительно загружаю определенные изображения. Я делаю это правильно, в AsyncTask, как это написано в официальной документации. Но у меня есть проблема/вопрос о том, когда они должны быть установлены.XML vs. setImageDrawable/setImageBitmap
Я покажу фрагменты кода. Обратите внимание, что это упрощено (их интероперабельность лучше в моем реальном коде, он проверяет нули и т. Д.).
Давайте посмотрим, оригинальную (не поджато) версия первый:
<ImageView
android:id="@+id/imageViewMyGraphicalImageElement"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="centerCrop"
android:src="@drawable/my_graphical_element" >
</ImageView>
предварительно загруженная версия имеет следующий XML (обратите внимание, что атрибут SRC отсутствует):
<ImageView
android:id="@+id/imageViewMyGraphicalImageElement"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="centerCrop">
</ImageView>
И сниппает из кода натягом:
sBitmap = bitmapBitmapFactory.decodeResource(context.getResources(), R.drawable.my_graphical_element, options);
// 'sBitmap' is a Bitmap reference, while 'options' is BitmapFactory.Options
Наконец, место, где я поставил его:
setContentView(R.layout.main);
...
ImageView imageViewMyGraphicalImageElement= (ImageView) findViewById(R.id.imageViewMyGraphicalImageElement);
imageViewMyGraphicalImageElement.setImageBitmap(sBitmap);
Вопрос: Очевидно, что XML-решение знает об образе до setContentView (...) называется. Версия предварительной загрузки устанавливает изображение после, вызывающего вызов. Есть ли разница? Из-за этого можно пропустить некоторую автомасштабирование или другие вещи, выполняемые системой?
Я понимаю, но разница в моем коде является то, что конструктор ImageView (т.е. ** XML-решение **) вызывается до (или во время?) setContentView. В программном решении я вызываю setImageDrawable (или setImageBitmap - оба работали для меня) ** после ** setContentView(). Я знаю, что Android делает автомасштабирование и другие вещи с растровыми изображениями и макетом, поэтому мне просто интересно, какие из них пропущены из-за позднего вызова setImageDrawable/setImageBitmap. –
@Thomas Calc: Если вы проверите код, вы увидите, что все варианты 'setImage' сами делают _auto-scaling и другие вещи. Никакая функциональность не будет пропущена. –