所以我使用自定义PagerAdapter来表示带有4个图像的网格4x4。该PagerAdapter设置为自定义ViewPager(关闭交换)。现在的问题是,当我尝试在ImageView上调用getLocationOnScreen()
方法时,我得到一些奇怪的坐标(x = 1146,y = 457),这似乎不是好坐标(x坐标比实际更宽)屏幕?)。这是代码:
public Object instantiateItem(@NonNull ViewGroup container, int position) {
layoutInflater = LayoutInflater.from(mContext);
Object object = mObjectList.get(position);
View view = layoutInflater.inflate(R.layout.layout_card, container, false);
TextView tvTextView = view.findViewById(R.id.tvTextView);
ivImage1 = view.findViewById(R.id.ivSelectedImage1);
ivImage1.setOnTouchListener(new View.OnTouchListener() {
private GestureDetector gestureDetector = new GestureDetector(mContext, new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onDoubleTap(MotionEvent e) {
//Toast.makeText(mContext, "DOUBLE CLICK", Toast.LENGTH_SHORT).show();
ivImage1.getLocationOnScreen(ivLocation);
listener.performLikeAnimation(ivLocation, ivImage1.getWidth(), ivImage1.getHeight());
return super.onDoubleTap(e);
}
});
@Override
public boolean onTouch(View v, MotionEvent event) {
gestureDetector.onTouchEvent(event);
return true;
}
});
container.addView(view);
return view;
}
你能告诉我我做错了什么吗?我使用带有网格布局的RecyclerView进行了类似的实现,当我双击特定图像时,我能够获得良好的坐标。但是我不得不交换这个实现,因为我不能像ViewPager那样滚动它。主要目标是实现类似Tinder刷卡的功能,但只需单击水平按钮并单击按钮左侧功能。提前谢谢。