0

私のアプリでは、サーバーからビデオと画像をストリーミングする必要があります。ビデオが利用できない場合は、画像を取得してフォト ギャラリーに表示する必要があります。この部分は成功しましたが、一度に 1 つの画像しか使用できませんでした。しかし、この方法は次の画像をロードするのに時間がかかるため遅いです。

私がしたいのは、4 つの URL (この例ではサーバーから取得する画像の総数は 4 です) を渡しますが、Onclicklistener. 任意の提案をお願いします。どうすればいいですか?ありがとう

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;
        }

}
4

1 に答える 1

0

遅延読み込みと呼ばれるものを使用して複数の画像を効率的に読み込む方法の例については、この質問を参照してください。

ListView での画像の遅延読み込み

于 2013-04-16T09:40:10.237 に答える