2012-04-19 11 views
0

私は画像ギャラリーとして使用され、かなりうまく動作するアクティビティを持っています。しかし、ドロアブルからの参照を持つ整数配列からイメージを読み込みます。そして、私がやりたいことは、インターネットから画像を取得し、内部メモリに保存してから、ギャラリーで使用することです。インターネットから画像を取得し、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; 
} 
} 

答えて

0

https://github.com/nostra13/Android-Universal-Image-Loaderなどを使用してください。またはhttps://github.com/cyrilmottier/GreenDroidのコードを確認できます。個人的には、イメージローディングにのみ焦点を当てていたので、最初のイメージが好きでした。

+0

これは私がやりたいことにとって非常に複雑です。基本的に、drawableから私のinterger配列への参照を与えるのではなく、内部メモリから画像pathesを与えるだけで十分です。私はそれの残りを処理することができます。 – osayilgan

+0

あなたが正しく理解できる場合、あなたのリソースにあるイメージとしてインターネットからダウンロードされたイメージを参照することはできません。したがって、int []配列を使用する代わりに、描画可能またはビットマップ配列を使用する必要があります。 setImageBitmapを使用して(または同様の方法で)画像ビューの画像を設定します。 – Siyamed

+0

URLコンテンツをイメージに変換するには、それらのライブラリコードやhttp://stackoverflow.com/questions/3090650/android-loading-an-image-from-the-web-with-asynctaskのようなものをチェックしてください。バックグラウンドスレッドでイメージをダウンロードし、メインスレッドでUI変更(setImageBitmap)を呼び出す必要があります。 – Siyamed

関連する問題