翻转ViewPager?

时间:2013-03-29 18:00:01

标签: android android-viewpager

我正在我的应用程序中使用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;
    }
} 

1 个答案:

答案 0 :(得分:0)

我认为你应该将onTouchEvent设置为页面内的View,而不是整个viewpager。 在ImageViewPagerAdapter中,您有

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

创建视图时,我假设一个ImageView,将onTouchListener设置为它,以便您可以触摸该视图的引用。

对于翻转本身,请查看this example,这很清楚。

修改

这里是我从我制作的应用程序中粘贴的一个例子,我切断了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;

}