1

アプリケーションでViewpagerを使用しています.ユーザーが左または右にスワイプすると、次または前の画像が表示されます-基本的には(画像の)スライドショーのようなアプリです..

ユーザーがアプリをタップすると、ViewPager でビューを反転したい..すべてのビューの背後にあるビュー - ユーザーは、タップしたときにビューを反転できる必要があります。

これがコードです。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);        

    .... <some code> ....

    viewPager = (ViewPager) findViewById(R.id.main_viewpager);

    ImagePagerAdapter adapter = new ImagePagerAdapter();
    viewPager.setAdapter(adapter);

    PageListener pageListener = new PageListener();
    viewPager.setOnPageChangeListener((OnPageChangeListener) pageListener);

    final GestureDetector tapGestureDetector = new GestureDetector(this, new TapGestureListener());

    viewPager.setOnTouchListener(new OnTouchListener() {
         public boolean onTouch(View v, MotionEvent event) {
              tapGestureDetector.onTouchEvent(event);
              return false;
         }
    });
}

private class TapGestureListener extends GestureDetector.SimpleOnGestureListener{
    @Override
    public boolean onSingleTapConfirmed(MotionEvent e) {

    // HERE I CAPTURED SINGLE TAP.. HOW DO I CHANGE THE VIEW OF VIEWPAGER?  
            return false;
    }
} 
4

1 に答える 1

0

ビューページャー全体ではなく、ページ内のビューに onTouchEvent を設定する必要があると思います。ImageViewPagerAdapter には、

@Override
public Object instantiateItem(ViewGroup container, final int position) {

ビューを作成するときは、ImageView を想定し、onTouchListener をそれに設定して、タッチできるビューへの参照を取得します。

反転自体については、この例を見てください。非常に明確です。

編集:

これは、私が作成したアプリからコピーして貼り付けた例です。onclicklistener 内の実際のコードは非常に長く、関連性がなかったため、切り取っています。istantiateItem() 内でリスナーをアタッチするビューを作成するため、このメソッドを使用しました。

@Override
public Object instantiateItem(ViewGroup container, final int position) {
    Context context = MainActivity.this;
    Log.e("InstantiateItem",Integer.toString(position));
      ImageView imageView = new ImageView(context);

      imageView.setImageResource(mImages[position]);

      imageView.setOnClickListener(new OnClickListener() {
          public void onClick(View v) {
             // do some stuf when clicked...to see if it works you could try
             Log.e("Click on image",Integer.toString(position));
          }
      });
      ((ViewPager) container).addView(imageView, 0);

      return imageView;

}
于 2013-03-29T18:32:18.740 に答える