Я новичок в программировании на Android и недавно участвовал в разработке некоторых приложений. Это не было проблемой, пока я не столкнулся с образами. Я пытаюсь разработать простое приложение, похожее на электронную книгу, в которой отображаются изображения (JPEG/PNG), хранящиеся в папке с возможностью переноса.
Мой первый подход состоял в том, чтобы использовать виджет "Галерея", но с этим я не смог реализовать правильный масштаб. Поэтому я теперь использую простой Imageview для одновременного отображения одного растрового изображения и изменения или масштабирования растрового изображения при событиях касания. Для этого мне пришлось декодировать все растровые изображения в битмап-массиве во время запуска активности, чтобы я мог использовать их в любое время.
Мое приложение начинается нормально на моей вкладке Galaxy, но каждый телефон, за исключением того, что занимает около 3-5 секунд, начинается. Я просто хотел узнать, есть ли простой способ загрузить растровые изображения во время запуска. Простите меня, если мой вопрос уже задан, но я много раз искал stackoverflow и не мог найти конкретного ответа на мой вопрос. Вот мой код. Надеюсь, кто-нибудь может помочь.
package ....
imports ....
public class ImageViewFlipper extends Activity {
private ViewFlipper viewFlipper;
private Bitmap[] bMap= new Bitmap[15];
private TextView currentpage;
private ImageViewZoom iv;
private imagenum=3;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
bMap[0] =BitmapFactory.decodeResource(getResources(), R.drawable.page);
bMap[1] =BitmapFactory.decodeResource(getResources(), R.drawable.page1);
bMap[2] =BitmapFactory.decodeResource(getResources(), R.drawable.page10);
bMap[3] =BitmapFactory.decodeResource(getResources(), R.drawable.page11);
bMap[4] =BitmapFactory.decodeResource(getResources(), R.drawable.page12);
bMap[5] =BitmapFactory.decodeResource(getResources(), R.drawable.page13);
bMap[6] =BitmapFactory.decodeResource(getResources(), R.drawable.page14);
bMap[7] =BitmapFactory.decodeResource(getResources(), R.drawable.page2);
bMap[8] =BitmapFactory.decodeResource(getResources(), R.drawable.page3);
bMap[9] =BitmapFactory.decodeResource(getResources(), R.drawable.page4);
bMap[10] =BitmapFactory.decodeResource(getResources(), R.drawable.page5);
bMap[11] =BitmapFactory.decodeResource(getResources(), R.drawable.page6);
bMap[12] =BitmapFactory.decodeResource(getResources(), R.drawable.page7);
bMap[13] =BitmapFactory.decodeResource(getResources(), R.drawable.page8);
bMap[14] =BitmapFactory.decodeResource(getResources(), R.drawable.page9);
currentpage=(TextView)findViewById(R.id.textview);
iv = (ImageViewZoom) findViewById(R.id.zero);
iv.setImageBitmapReset( bMap[imagenum], 0, true );
viewFlipper = (ViewFlipper) findViewById(R.id.flipper);
......
значение imagenum изменяется в соответствии с методом onFling, ImageViewZoom является настраиваемым классом ImageView. Надеюсь, что этой информации достаточно.
Я бы предложил переместить всю загрузку битмапа в AsyncTask, который вы начинаете внутри onCreate. Создайте свою активность, чтобы отобразить что-то разумное, прежде чем загружать все изображения. AsyncTask может загружать все изображения и доставлять их в onPostExecute
, а также может доставлять каждый из них, когда он загружается с использованием onProgressUpdate
.
Почему бы не попробовать сначала загрузить 2 или 3 изображения, а затем загрузить другие изображения в фоновом режиме?
Вы также можете подумать о сервисе для загрузки изображения в фоновом режиме. http://developer.android.com/guide/topics/fundamentals/services.html