1

2つの画像を配列で保存しています。画像が表示されますが、ユーザーが画面を右にスワイプすると2番目の画像が表示され、左にスワイプすると最初の画像に戻ります。私はAndroidアプリの開発にまったく慣れていないので、助けていただければ幸いです。現時点で発生するのは、ユーザーが画像をクリックすると2番目の画像に移動してそれだけです。

コードも追加しました:

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

1

ViewPagerは、左右のスワイプ機能の実装にも役立つ場合があります。

http://mobile.tutsplus.com/tutorials/android/android-user-interface-design-horizo​​ntal-view-paging/

androidviewPagerの実装

http://developer.android.com/reference/android/support/v4/view/ViewPager.html

于 2012-12-05T15:42:56.357 に答える
0

私はこのコードがあなたを助けると思います。このtransimg1はimageswitcherです

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

ダスティングラハムのブログに他の例があります:http://developingandroid.blogspot.in/2009/09/implementing-swipe-gesture.html

于 2012-12-05T13:34:25.457 に答える