在数据列表页,点击图片,放大显示的功能,放大显示的页面是个ViewPager,显示后,点击viewPager区域外的空白区域可关闭页面。点击ViewPager页面不做响应。
该viewPager设置为宽为match_parent,最大高度为300dp的区域。
关键代码:
@Override
public boolean dispatchTouchEvent(MotionEvent event){
if(event.getAction() == MotionEvent.ACTION_DOWN){
View view = mViewPager;
if(!inRangeOfView(view,event)){
click();
}
}
return super.dispatchTouchEvent(event);
}
//判断是否在控件区域内
private boolean inRangeOfView(View view,MotionEvent event){
int[] location = new int[2];
view.getLocationOnScreen(location);
int x = location[0];
int y = location[1];
if(event.getX() < x || event.getX() > (x + view.getWidth()) || event.getY() < y || event.getY() > (y + view.getHeight())){
return false;
}
return true;
}
//关闭页面
public void click(){
// Intent mIntent = new Intent();
// 设置结果,并进行传送
// this.setResult(3, mIntent);
System.gc();
ImageLoader.getInstance().clearMemoryCache();
finish();
overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
}
效果:点击中间宽为全屏,高为300dp的ViewPager区域,无响应,点击该区域上方或下方,关闭页面。
下面附上点击页面任意位置关闭页面,ViewPager的翻页功能不受影响的代码:
@Override public boolean dispatchTouchEvent(MotionEvent event){ if(event.getAction() == MotionEvent.ACTION_DOWN){ downX = event.getX(); downY = event.getY(); LogUtil.d(TAG,"ACTION_DOWN==========downX===="+downX+",downY="+downY); }else if(event.getAction() == MotionEvent.ACTION_UP){ upX = event.getX(); upY = event.getY(); LogUtil.d(TAG,"ACTION_UP==========upX===="+upX+",upY="+upY); if(Math.abs(upX-downX)<100){ click(); } } return super.dispatchTouchEvent(event); }