Intereting Posts

Android, как сделать слайд экрана?

Я создаю очень базовую галерею на Android, она показывает последнее изображение в папке камеры, и пользователь может скользить влево, чтобы увидеть предыдущий.

Я закончил реализацию с помощью viewpager и pagerAdapter, используя sampleSize для масштабирования изображений. Моя проблема в том, что реализация нигде не эффективна, как приложение галереи по умолчанию, каждый раз, когда вы перемещаете изображение, вам нужно подождать около 200 мс для следующей загрузки. Поэтому в основном моя идея о том, как ее реализовать, не работает.

Как я могу сделать это эффективно и, если возможно, с реализацией, которая позволяет масштабировать и удалять позже?


Это выглядит многообещающе, но я не знаю, как реализовать его с файлами вместо чертежей http://www.androidviews.net/2012/11/photoview/


РЕДАКТИРОВАТЬ:

Мне удалось немного улучшить скорость, используя photoview (взломанный просмотрщик), однако для преобразования файлов в растровые изображения или чертежи требуется слишком много.

Я пробовал эти два метода, предложенные dilix и iDroid Explorer:

// Method A Drawable d = Drawable.createFromPath(imagePath); imageView.setImageDrawable(d); // Method B Bitmap myBitmap = BitmapFactory.decodeFile(imagePath); imageView.setImageBitmap(myBitmap); 

Но обе создают ошибку Bitmap too large to be uploaded into a texture . Мне нужно как можно быстрее получить изображение в ImageView и как-то обойти эту ошибку, и, возможно, я получу приличную скорость. Сейчас я масштабирую изображения и преобразовываю их в drawable, но это не очень эффективно.

Solutions Collecting From Web of "Android, как сделать слайд экрана?"

Проверьте этот удивительный веб-сайт: http://www.androidviews.net/ и, возможно, это то, что вы хотите: http://www.androidviews.net/2012/11/photoview/

Он имеет прокрутку страницы, масштабирование и панорамирование по мере необходимости. Я использовал его в своем проекте с некоторыми изменениями и ленивой загрузкой изображений. Он работает именно так, как вам нужно.

См. Официальную документацию для отличного примера, который позволит вам эффективно использовать растровые изображения с помощью viewpager. Вы должны использовать кеш изображений, которые уже были загружены, и изображения должны быть загружены за пределы потока пользовательского интерфейса. Вы также хотите масштабировать изображение до минимального размера, необходимого для вашего дисплея (как правило, двухзначных – обратите внимание, что изображение не всегда будет масштабироваться до того, что вы его просите!). ViewPager также загружает изображения в фоновом режиме, чтобы подготовиться к следующему Slide, который задается с помощью метода setOffScreenPageLimit (по умолчанию, как правило, хорошо, я думаю, что это 2.)

https://developer.android.com/training/displaying-bitmaps/index.html

Я не уверен, было ли у вас правильное решение или нет. Но если вы хотите продолжить свою собственную реализацию с помощью данной ссылки, тогда:

 http://www.androidviews.net/2012/11/photoview/ //this link is given in your question 

И вы можете увидеть это SO для того, как преобразовать путь файла в drawable. Теперь вы получаете возможность рисовать свой указанный файл и реализовывать по ссылке, которую вы указали.

Я думаю, что ссылка будет работать хорошо.

Не стесняйтесь комментировать.

1)

Это выглядит многообещающе, но я не знаю, как реализовать его с файлами вместо чертежей http://www.androidviews.net/2012/11/photoview/

Вы должны хранить не список чертежей в своем адаптере, а ссылки на файлы на вашей SD-карте, а затем загружать их.

2) Но я могу представить, что файл вместо drawables не будет настолько эффективным, потому что для загрузки из файлов вам нужно проанализировать его с SD-карты.

Я думаю, вы можете сэкономить время, одновременно загрузив несколько изображений в свою память (сжатый), и когда вы развернете свой образ, у вас уже будет изображение и память, а во время игры вы можете начать загрузку другого изображения в память.

При переходе по галерее вы можете не загружать изображения и загружать их после почти остановки.

Это основная проблема: потребление памяти и производительность.

ОБНОВИТЬ

Я думаю, что лучше, чем исследовать это самостоятельно, будет изучаться существующий код галереи google: https://github.com/CyanogenMod/android_packages_apps_Gallery

Как я заметил – они хранят кеш (почти как я сказал о загрузке нескольких растровых изображений) и сохраняют только измененные изображения – кажется, эффективны.