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

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

Вот мой код ниже. Любая помощь будет оценена.

import okan.apps.tabbar.R;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.animation.AnimationUtils;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ViewSwitcher.ViewFactory;

 public class Activities extends Activity implements ViewFactory {

ImageSwitcher imageSwitcher ;

Integer[] imageList = {
        R.drawable.gallery,
        R.drawable.menu,
        R.drawable.promotion,
        R.drawable.info,
        R.drawable.activities       
};

int curIndex=0;
int downX,upX;

@Override
public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);  
     setContentView(R.layout.activities_main);

     imageSwitcher = (ImageSwitcher) findViewById(R.id.imageSwitcher);
     imageSwitcher.setFactory(this);
     imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_in));
     imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_out));

     imageSwitcher.setImageResource(imageList[curIndex]);
     imageSwitcher.setOnTouchListener(new OnTouchListener() {
     public boolean onTouch(View v, MotionEvent event) {

         if (event.getAction() == MotionEvent.ACTION_DOWN) {
             downX = (int) event.getX(); 
             Log.i("event.getX()", " downX " + downX);
             return true;
         } 

         else if (event.getAction() == MotionEvent.ACTION_UP) {
             upX = (int) event.getX(); 
             Log.i("event.getX()", " upX " + downX);
             if (upX - downX > 100) {

                 //curIndex  current image index in array viewed by user
                 curIndex--;
                 if (curIndex < 0) {
                     curIndex = imageList.length-1;
                 }

                 imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(Activities.this,R.anim.slide_in_left));
                 imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(Activities.this,R.anim.slide_out_right));

                 imageSwitcher.setImageResource(imageList[curIndex]);
                 //GalleryActivity.this.setTitle(curIndex);
             } 

             else if (downX - upX > -100) {

                 curIndex++;
                 if (curIndex > 4) {
                     curIndex = 0;
                 }

                 imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(Activities.this,R.anim.slide_in_right));
                 imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(Activities.this,R.anim.slide_out_left));

                 imageSwitcher.setImageResource(imageList[curIndex]);
                 //GalleryActivity.this.setTitle(curIndex);
             }
                 return true;
             }
             return false;
         }
     });
}
public View makeView() {
    ImageView i = new ImageView(this);  
    i.setScaleType(ImageView.ScaleType.FIT_CENTER);
    return i;
}
}

1 ответ

Решение

Используйте что-то вроде https://github.com/nostra13/Android-Universal-Image-Loader. Или вы можете проверить код в https://github.com/cyrilmottier/GreenDroid. Лично мне понравился первый, так как он был ориентирован только на загрузку изображений.

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