1

我将两个图像存储在一个数组中,图像会出现,但我想要实现的是,当用户向右滑动屏幕时,第二个图像会出现,而当向左滑动回第一个图像时。我对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;
    }

});

4

2 回答 2

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

于 2012-12-05T13:34:25.457 回答