Изменить картинку, проводя

Мой ввод - это проанализированный 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, пример

Другие вопросы по тегам