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 设置为页面内的 View,而不是整个 viewpager。在 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 回答