Изменить картинку, проводя
Мой ввод - это проанализированный JSON, содержащий множество URL-адресов изображений, я создал список из них: "urlPictureList". Я пытаюсь создать представление для Android, которое содержит 4 кадра изображения, каждый из которых должен показывать изображение, взятое из urlPictureList, и, проведя пальцем, изменить его на следующий URL в списке. проведя в противоположном направлении, вы вернетесь к предыдущему изображению. (возможно более одного пролистывания, и должно отображаться предыдущее изображение в списке.
В своей основной деятельности я использовал следующую функцию для сохранения данных:
public void sendMessage(View view) {
Intent intent = new Intent(this, act2 .class);
List<Song> songList = parseJson().second;
intent.putExtra("MainActivity", (Serializable) songList);
startActivity(intent);
}
и в моем классе act2 я нашел функцию, которая должна загружать изображения с URL:
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage;
public DownloadImageTask(ImageView bmImage) {
this.bmImage = bmImage;
}
protected Bitmap doInBackground(String... urls) {
String urldisplay = urls[0];
Bitmap mIcon11 = null;
try {
InputStream in = new java.net.URL(urldisplay).openStream();
mIcon11 = BitmapFactory.decodeStream(in);
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return mIcon11;
}
protected void onPostExecute(Bitmap result) {
bmImage.setImageBitmap(result);
}
}
Функция загрузки не работает, и я не знаю, что делать дальше. Моя первая проблема - как показать изображение на каждом кадре. Во-вторых, жест смахивания не работает для меня, может быть, я не должен использовать imageView?, я пытался найти его почти 1 неделю безуспешно. заранее спасибо
1 ответ
AsyncTasks не идеальны для большинства асинхронных решений. В эти дни есть вещи лучше, такие как Погрузчики и Услуги. Для вас я предлагаю вам использовать библиотеку для загрузки удаленных изображений, потому что вам нужно гораздо больше, чем это, чтобы обеспечить бесперебойную работу пользователя, такую как кэширование. Даже если вы решите эту проблему с помощью простого AsyncTask, у вас возникнет много проблем при изменении состояния вашего приложения во время загрузки образа (AsyncTaskLoaders решает эту проблему).
Все можно предотвратить, используя для этого специальную библиотеку, например, Пикассо.
http://square.github.io/picasso/
Если вы все еще хотите использовать простое решение AsyncTask. У вас есть код для запуска AsyncTask?
new DownloadImageTask().execute(url);
Для смахивания вы можете использовать ViewPager
, пример