Android 将多个imageview添加到flipper并将图像从url加载到这些imageview

Android 将多个imageview添加到flipper并将图像从url加载到这些imageview,android,imageview,swipe,Android,Imageview,Swipe,我是android新手,曾尝试在imageview中对从url加载的图像实施滑动效果…我成功了,但现在我希望加载多个url,并且我可以通过在设备屏幕上滑动手指将其作为覆盖整个屏幕的单个图像来逐个查看。。。 我试了很多,但都没能实现。。 我不知道会使用一个以上的图像视图…一些用于循环和数组之类的!!! 只是无助的b'coz尝试了30多次 请有人帮帮忙……提前 这是我的代码: package com.conn; import android.R; import android.app.Activi

我是android新手,曾尝试在imageview中对从url加载的图像实施滑动效果…我成功了,但现在我希望加载多个url,并且我可以通过在设备屏幕上滑动手指将其作为覆盖整个屏幕的单个图像来逐个查看。。。 我试了很多,但都没能实现。。 我不知道会使用一个以上的图像视图…一些用于循环和数组之类的!!! 只是无助的b'coz尝试了30多次

请有人帮帮忙……提前

这是我的代码:

package com.conn;

import android.R;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.Log;
import android.view.GestureDetector;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.MotionEvent;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.webkit.WebView;
import android.widget.ImageView;
import android.widget.ViewFlipper;

public class swipe_touch extends Activity {
    private static final String LOGID = "CHECKTHISOUT";

    private static final int SWIPE_MIN_DISTANCE = 120;
    private static final int SWIPE_MAX_OFF_PATH = 250;
    private static final int SWIPE_THRESHOLD_VELOCITY = 200;
    private GestureDetector gestureDetector;
    View.OnTouchListener gestureListener;

    private Animation slideLeftIn;
    private Animation slideLeftOut;
    private Animation slideRightIn;
    private Animation slideRightOut;
    private ViewFlipper viewFlipper;

    String message = "Initial Message"; 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//        setContentView(R.layout.main);
      //Set up viewflipper
        viewFlipper = new ViewFlipper(this);  

        ImageView[] img = new ImageView[i];
        j_comm_func funs = new j_comm_func();//already made this class
        BitmapFactory.Options bmOptions;
        bmOptions = new BitmapFactory.Options();
        bmOptions.inSampleSize = 1;
        Bitmap bm = funs.LoadImage("http://65.175.77.34/newsnow/2462011/largest3/2462011-md-hr-1.jpg", bmOptions);
        img.setImageBitmap(bm);


        viewFlipper.addView(img);



        //set up animations
        slideLeftIn = AnimationUtils.loadAnimation(this, R.anim.slide_out_right);
        slideLeftOut = AnimationUtils.loadAnimation(this, R.anim.slide_in_left);
        slideRightIn = AnimationUtils.loadAnimation(this, R.anim.slide_in_left);
        slideRightOut = AnimationUtils.loadAnimation(this, R.anim.slide_out_right);


        //put up a brownie as a starter
        setContentView(viewFlipper);

        gestureDetector = new GestureDetector(new MyGestureDetector());
    }

    public class MyGestureDetector extends SimpleOnGestureListener {
        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
            try {
                if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
                    return false;
                // right to left swipe
                if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
                    Log.v(LOGID,"right to left swipe detected");
                    viewFlipper.setInAnimation(slideLeftIn);
                    viewFlipper.setOutAnimation(slideLeftOut);
                    viewFlipper.showNext();
                    setContentView(viewFlipper);

                } // left to right swipe 
                else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
                    Log.v(LOGID,"left to right swipe detected");                    
                    viewFlipper.setInAnimation(slideRightIn);
                    viewFlipper.setOutAnimation(slideRightOut);
                    viewFlipper.showPrevious();
                    setContentView(viewFlipper);

                }
            } catch (Exception e) {
                // nothing
            }
            return false;
        }
    }

    // This doesn't work
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (gestureDetector.onTouchEvent(event)){
            Log.v(LOGID,"screen touched");
            return true;
        }
        else{
            return false;
        }
    }
}

嗯。。。您的onTouchEvent方法不起作用,因为所有触摸事件都由ViewFlipper使用(从文档到此活动的方法:

当触摸屏事件未被其下的任何视图处理时调用。这对于处理发生在窗口边界之外的触摸事件(没有视图接收该事件)非常有用。 )

要实现您想要的功能,请查看以下内容:

在您的情况下,您应该这样做:

img.setOnTouchListener(new DragableViewTouchListener());
public boolean dispatchTouchEvent(MotionEvent event) {
if(needZoom(event)) {
   doZoom();
   // the event was handled. Do not propagate it to prevent handling it in ViewFlipper.
   return true;
} else {
   // propagate the event (to ViewFlipper)
   super.dispatchTouchEvent(event);
}
要添加缩放功能,您可以执行许多操作…我建议您执行以下操作:

  • 创建ImageView的扩展:ZoomableImageVIew
  • 重写dispatchTouchEvent方法,如下所示:

    img.setOnTouchListener(new DragableViewTouchListener());
    
    public boolean dispatchTouchEvent(MotionEvent event) {
    if(needZoom(event)) {
       doZoom();
       // the event was handled. Do not propagate it to prevent handling it in ViewFlipper.
       return true;
    } else {
       // propagate the event (to ViewFlipper)
       super.dispatchTouchEvent(event);
    }
    
    }


  • 祝你好运

    嗯。。。您的onTouchEvent方法不起作用,因为所有触摸事件都由ViewFlipper使用(从文档到此活动的方法:

    当触摸屏事件未被其下的任何视图处理时调用。这对于处理发生在窗口边界之外的触摸事件(没有视图接收该事件)非常有用。 )

    要实现您想要的功能,请查看以下内容:

    在您的情况下,您应该这样做:

    img.setOnTouchListener(new DragableViewTouchListener());
    
    public boolean dispatchTouchEvent(MotionEvent event) {
    if(needZoom(event)) {
       doZoom();
       // the event was handled. Do not propagate it to prevent handling it in ViewFlipper.
       return true;
    } else {
       // propagate the event (to ViewFlipper)
       super.dispatchTouchEvent(event);
    }
    
    要添加缩放功能,您可以执行许多操作…我建议您执行以下操作:

  • 创建ImageView的扩展:ZoomableImageVIew
  • 重写dispatchTouchEvent方法,如下所示:

    img.setOnTouchListener(new DragableViewTouchListener());
    
    public boolean dispatchTouchEvent(MotionEvent event) {
    if(needZoom(event)) {
       doZoom();
       // the event was handled. Do not propagate it to prevent handling it in ViewFlipper.
       return true;
    } else {
       // propagate the event (to ViewFlipper)
       super.dispatchTouchEvent(event);
    }
    
    }

  • 祝你好运