2013-04-16 1 views
0

내 앱에서는 서버에서 비디오 및 이미지를 스트리밍해야합니다. 비디오를 사용할 수없는 경우 이미지를 검색하여 사진 갤러리에 표시해야합니다. 나는이 부분을 성공적으로 수행했지만, 한 번에 하나의 이미지 만 사용했습니다. 이 방법은 다음 이미지를로드하는 데 오랜 시간이 걸리므로 속도가 느립니다.서버에서 여러 이미지를 가져 와서 하나씩 표시하는 방법

내가 원하는 것은 Onclicklistener을 사용하여 4 개의 URL (이 예에서는 서버에서 검색 할 총 이미지 수를 4로 지정)을 이미지 뷰에 하나씩 표시하는 것입니다. 제안 사항을 알려주십시오. 어떻게해야합니까? 감사합니다

public class Imageviewing extends Activity implements OnGestureListener{ 

    private static final String TAG = null; 
    ImageView imView; 
    String imageUrl="<myServerlink>"; 
    Random r= new Random(); 
    String urilink; 
    private GestureDetector myGesture ; 
    private static final int SWIPE_MIN_DISTANCE = 75; 
    private static final int SWIPE_MAX_OFF_PATH = 250; 
    private static final int SWIPE_THRESHOLD_VELOCITY = 200; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_imageviewing); 

     Intent intent = getIntent(); 
     // setContentView(R.layout.); 
     // String 

     urilink = intent.getExtras().getString("videouri"); 
     Log.e(TAG, urilink.toString()); 
     Button bt3= (Button)findViewById(R.id.get_imagebt); 
     bt3.setOnClickListener(getImgListener); 
     imView = (ImageView)findViewById(R.id.imview); 
     myGesture = new GestureDetector(this); 

    } 
    View.OnClickListener getImgListener = new View.OnClickListener() 
    { 

      @Override 
      public void onClick(View view) { 

       finish(); 
      } 

    }; 

    @Override 
    public boolean onTouchEvent(MotionEvent event){ 
     return myGesture.onTouchEvent(event); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.activity_imageviewing, menu); 
     return true; 
    } 

    Bitmap bmImg; 
     void downloadFile(String fileUrl){ 
       URL myFileUrl =null;   
       try { 
        myFileUrl= new URL(fileUrl); 
       } catch (MalformedURLException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
       try { 
        HttpURLConnection conn= (HttpURLConnection)myFileUrl.openConnection(); 
        conn.setDoInput(true); 
        conn.connect(); 
        InputStream is = conn.getInputStream(); 

        bmImg = BitmapFactory.decodeStream(is); 
        imView.setImageBitmap(bmImg); 
        Log.i("im url","Image to Imageview"); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
     } 

     @Override 
     public boolean onDown(MotionEvent arg0) { 
      // TODO Auto-generated method stub 
      return false; 
     } 
     @Override 
     public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 
       float velocityY) { 
      // TODO Auto-generated method stub 
      try { 
       //do not do anything if the swipe does not reach a certain length of distance 
       // if (Math.abs(e1.getY() - e2.getY()) &gt; SWIPE_MAX_OFF_PATH) 
        // return false; 
       if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) 
        return false; 

       // right to left swipe 
       //if(e1.getX() - e2.getX() &gt; SWIPE_MIN_DISTANCE &amp;&amp; Math.abs(velocityX) &gt; SWIPE_THRESHOLD_VELOCITY) { 

       if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE 
         && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
        int i = r.nextInt(5-1)+1; 
        downloadFile(imageUrl+urilink+"-"+i+".jpg"); 
        Log.i("im url",imageUrl+urilink+"-"+i+".jpg"); 
        return false; 

       } 
       /* // left to right swipe 
       else if (e2.getX() - e1.getX() &gt; SWIPE_MIN_DISTANCE &amp;&amp; Math.abs(velocityX) &gt; SWIPE_THRESHOLD_VELOCITY) { 
        ViewHistory(); 
       }*/ 
      } catch (Exception e) { 
       // nothing 
      } 
      return false; 

     } 
     @Override 
     public void onLongPress(MotionEvent arg0) { 
      // TODO Auto-generated method stub 

     } 
     @Override 
     public boolean onScroll(MotionEvent arg0, MotionEvent arg1, float arg2, 
       float arg3) { 
      // TODO Auto-generated method stub 
      return false; 
     } 
     @Override 
     public void onShowPress(MotionEvent arg0) { 
      // TODO Auto-generated method stub 

     } 
     @Override 
     public boolean onSingleTapUp(MotionEvent arg0) { 
      // TODO Auto-generated method stub 
      return false; 
     } 

} 

답변

0

게으른로드로 알려진 이미지를 사용하여 여러 이미지를 효율적으로로드하는 방법에 대한 예제는이 질문을 참조하십시오. 메모리에

Lazy load of images in ListView

+0

저장 이미지 당신이 getCacheDir에 이미지를 저장하려고한다, 나쁜 될 수 있습니다> http://developer.android.com/reference/android/content/Context.html#getCacheDir%28%29 – deadfish

관련 문제