向左和向右滑动android

时间:2012-12-05 13:30:29

标签: android android-layout android-imageview android-image ontouchlistener

我将两个图像存储在一个数组中,图像出现但我想要实现的是当用户向右滑动屏幕时第二个图像出现以及向左滑动回到第一个图像时。我对Android应用程序开发很新,一些帮助将非常感激。目前所发生的一切都是当用户点击图像时,它会转到第二张图像,就是这样。

我还添加了我的代码:

public class ScrollingQuran extends Activity {

private ImageView imgView;


private Integer[] Imgid = {

        R.drawable.page1, R.drawable.page2

};



@Override

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.qurangallery);


    imgView = (ImageView)findViewById(R.id.ImageView01);

    imgView.setImageResource(Imgid[0]);

    imgView.setOnTouchListener(new OnTouchListener()
    {

        public boolean onTouch(View v, MotionEvent event)
        {
        ImageView iv = (ImageView) v;
        if (event.getAction() == MotionEvent.AXIS_VSCROLL) {

            iv.setImageResource(R.drawable.page2);
            return true;
        } else if (event.getAction() == MotionEvent.AXIS_HSCROLL) {
            iv.setImageResource(R.drawable.page2);
            return true;
        }

        return false;
    }

});

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

我认为这段代码会对你有所帮助。这个transimg1是一个图像处理器

in_right = AnimationFactory.inFromRight();  
in_left = AnimationUtils.loadAnimation(this,android.R.anim.slide_in_left);  
out_right = AnimationUtils.loadAnimation(this,android.R.anim.slide_out_right);      
out_left = AnimationFactory.outToLeft();
gestureDetector1 = new GestureDetector(new MyGestureDetector1());
gestureListener1 = new View.OnTouchListener() {
    public boolean onTouch(View v, MotionEvent event) {
            return gestureDetector1.onTouchEvent(event);  
    }
};

transimg1.setOnTouchListener(gestureListener1);
class MyImageSwitcherFactory implements ViewFactory 
{
    public View makeView() 
    {

       ImageView imageView = new ImageView(getApplicationContext());
       imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
       imageView.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
       return imageView;

    }
}

public static class AnimationFactory 
{
       public static Animation inFromRight() 
        {
           Animation inFromLeft = new TranslateAnimation
           (
                   Animation.RELATIVE_TO_PARENT,1.0f,Animation.RELATIVE_TO_PARENT,0.0f,
                   Animation.RELATIVE_TO_PARENT,0.0f,Animation.RELATIVE_TO_PARENT,0.0f
           );
           inFromLeft.setDuration(250);
           inFromLeft.setInterpolator(new AccelerateInterpolator());
           return inFromLeft;
       }
       public static Animation outToLeft() 
       {
           Animation inFromLeft = new TranslateAnimation
           (
              Animation.RELATIVE_TO_PARENT,  0.0f, Animation.RELATIVE_TO_PARENT,  -1.0f,
              Animation.RELATIVE_TO_PARENT,  0.0f, Animation.RELATIVE_TO_PARENT,   0.0f
           );
           inFromLeft.setDuration(250);
           inFromLeft.setInterpolator(new AccelerateInterpolator());
           return inFromLeft;
       }
}class MyGestureDetector1 extends SimpleOnGestureListener {
    @Override
      public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) 
      {
          try 
          {

                if((e1.getX()-e2.getX()>SWIPE_MIN_DISTANCE)) 
                {
                    gif.setVisibility(View.INVISIBLE);
                }
                else if(e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE)
                {
                    gif.setVisibility(View.VISIBLE);
                    gif.start();
                }
          }
          catch(Exception e)
          {
              Toast.makeText(getApplicationContext(), e.toString() + " MyGestureDetector2 count=" + exccount , Toast.LENGTH_SHORT).show();
          }
          return false;
      }

    @Override
    public boolean onDown(MotionEvent arg0)
    {
        return true;
    }
}

以下是来自Dustin Graham的博客,其中包含更多示例:http://developingandroid.blogspot.in/2009/09/implementing-swipe-gesture.html