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