为了解决这个问题。可以自定义viewpager,然后在里面监听首饰,自定义点击事件

package com.hpuvoice.view;import android.content.Context;
import android.graphics.PointF;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.MotionEvent;public class MyViewPager extends ViewPager implements OnGestureListener {/** 手势滑动处理类 **/private GestureDetector mDetector;/** 触摸时按下的点 **/PointF downP = new PointF();/** 触摸时当前的点 **/PointF curP = new PointF();OnSingleTouchListener onSingleTouchListener;public MyViewPager(Context context, AttributeSet attrs) {super(context, attrs);GestureDetector detector = new GestureDetector(context, this);mDetector = detector;}public GestureDetector getGestureDetector() {return mDetector;}@Overridepublic boolean onTouchEvent(MotionEvent arg0) {curP.x = arg0.getX();curP.y = arg0.getY();getParent().requestDisallowInterceptTouchEvent(true);if (arg0.getAction() == MotionEvent.ACTION_DOWN) {downP.x = arg0.getX();downP.y = arg0.getY();}if (arg0.getAction() == MotionEvent.ACTION_MOVE) {// 此句代码是为了通知他的父ViewPager现在进行的是本控件的操作,不要对我的操作进行干扰getParent().requestDisallowInterceptTouchEvent(true);}if (arg0.getAction() == MotionEvent.ACTION_UP) {// 在up时判断是否按下和松手的坐标为一个点// 如果是一个点,将执行点击事件,这是我自己写的点击事件,而不是onclickif ((downP.x == curP.x) && (downP.y == curP.y)) {onSingleTouch();return true;}}return super.onTouchEvent(arg0);}@Overridepublic void setOnPageChangeListener(OnPageChangeListener listener) {super.setOnPageChangeListener(listener);}/*** 单击   */public void onSingleTouch() {if (onSingleTouchListener != null) {onSingleTouchListener.onSingleTouch();}}/***    * 创建点击事件接口    *   */public interface OnSingleTouchListener {public void onSingleTouch();}public void setOnSingleTouchListener(OnSingleTouchListener onSingleTouchListener) {this.onSingleTouchListener = onSingleTouchListener;}@Overridepublic boolean onDown(MotionEvent e) {return false;}@Overridepublic void onShowPress(MotionEvent e) {}@Overridepublic boolean onSingleTapUp(MotionEvent e) {return false;}@Overridepublic boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,float distanceY) {return false;}@Overridepublic void onLongPress(MotionEvent e) {}@Overridepublic boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,float velocityY) {return false;}}

  然后在使用该viewpager的类中,进行一系列监听,使用,同事本案例是为了展示首页轮播图的效果,其中另外一个点就是首页轮播图动态添加小圆点。并且实现轮播效果。

package com.hpuvoice.fragment;import java.util.ArrayList;
import java.util.HashMap;
import java.util.Timer;
import java.util.TimerTask;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.edaixi.activity.CityListActivity;
import com.edaixi.activity.LoginActivity;
import com.edaixi.activity.MainActivity;
import com.edaixi.activity.PlaceorderActivity;
import com.edaixi.activity.R;
import com.edaixi.activity.WebActivity;
import com.edaixi.appdata.Kclassdata;
import com.edaixi.appdata.KeepingData;
import com.edaixi.bean.Bannerlistbean;
import com.edaixi.bean.InappUrlbean;
import com.edaixi.bean.PostCommonBean;
import com.edaixi.listadpter.Myfuncadpter;
import com.edaixi.utils.Common;
import com.edaixi.utils.DensityUtil;
import com.edaixi.utils.NetUtil;
import com.edaixi.utils.SaveUtils;
import com.edaixi.view.MySpringRing;
import com.edaixi.view.MyViewPager.OnSingleTouchListener;
import com.google.gson.Gson;
import com.lidroid.xutils.BitmapUtils;public class HomeFragment extends BaseFragment implements OnClickListener {private static final int GETBANNERFAILD = 2;private static final int GETBANNERSUCCED = 3;private static final int GETFUNCTIONBTNSUCCED = 4;private static final int GETFUNCTIONBTNFAILD = 5;boolean RequstFlag = false;private View view;private Button main_order_btn;private HashMap<String, String> parms;private SaveUtils saveUtils;private String address = "";private GridView main_grid;private Myfuncadpter adapter;private com.edaixi.view.MyViewPager myview_pager;private ImageView anim_trousers;private ImageView anim_womencloth;private ImageView anim_clothsmall;private ImageView imageView_title;private ArrayList<Bannerlistbean> funditonlist;private JSONObject str;private TitleAdapter title;private Animation tosmallanimation;private ImageView anim_sleeveshort;private ArrayList<Bannerlistbean> banerlistbak;private LinearLayout pager_bottom;private int Animorder;private MySpringRing cricleView;private ImageView point;private static TextView loction_text;private int currentPosition = 0;private boolean is_Loop_Flag = true;;@SuppressLint("HandlerLeak")private Handler handler = new Handler() {private Gson gson = new Gson();@Overridepublic void handleMessage(Message msg) {myview_pager.setCurrentItem(currentPosition);currentPosition++;if ((banerlistbak.size() > 0)&& (currentPosition > banerlistbak.size() - 1)) {currentPosition = (currentPosition % banerlistbak.size());}if (is_Loop_Flag) {handler.sendEmptyMessageDelayed(0, 3000);}try {switch (msg.what) {case GETBANNERSUCCED:PostCommonBean jsonCommonBean = gson.fromJson((String) msg.obj, PostCommonBean.class);if (jsonCommonBean.isRet()) {String data = jsonCommonBean.getData();banerlistbak = null;banerlistbak = new ArrayList<Bannerlistbean>();paserbaner(data, banerlistbak);myview_pager.setCurrentItem(0);currentPosition = Integer.MAX_VALUE / 2- (Integer.MAX_VALUE / 2 % banerlistbak.size());addBannerPoint();TitleAdapter titlebak = new TitleAdapter(banerlistbak);myview_pager.setAdapter(titlebak);titlebak.notifyDataSetChanged();}break;case GETBANNERFAILD:break;case GETFUNCTIONBTNSUCCED:RequstFlag = true;PostCommonBean CommonBean = gson.fromJson((String) msg.obj,PostCommonBean.class);if (CommonBean.isRet()) {String data = CommonBean.getData();paserbaner(data, funditonlist);adapter.notifyDataSetChanged();}break;case GETFUNCTIONBTNFAILD:break;}super.handleMessage(msg);} catch (Exception e) {e.printStackTrace();}}};@SuppressLint("HandlerLeak")@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {view = (LinearLayout) inflater.inflate(R.layout.fragment_home,container, false);main_order_btn = (Button) view.findViewById(R.id.main_order_btn);main_grid = (GridView) view.findViewById(R.id.main_grid);myview_pager = (com.edaixi.view.MyViewPager) view.findViewById(R.id.myview_pager);cricleView = (MySpringRing) view.findViewById(R.id.myring_circle);cricleView.startAnim();pager_bottom = (LinearLayout) view.findViewById(R.id.pager_bottom);anim_trousers = (ImageView) view.findViewById(R.id.anim_trousers);anim_womencloth = (ImageView) view.findViewById(R.id.anim_womencloth);anim_clothsmall = (ImageView) view.findViewById(R.id.anim_clothsmall);anim_sleeveshort = (ImageView) view.findViewById(R.id.anim_sleeveshort);loction_text = (TextView) view.findViewById(R.id.loction_text);loction_text.setOnClickListener(this);myview_pager.setCurrentItem(currentPosition);myview_pager.setOnPageChangeListener(new OnPageChangeListener() {@Overridepublic void onPageSelected(int position) {currentPosition = position;if (pager_bottom.getChildCount() > 0) {for (int i = 0; i < banerlistbak.size(); i++) {pager_bottom.getChildAt(i).setBackgroundResource(getImageResIDs()[0]);}pager_bottom.getChildAt(position).setBackgroundResource(getImageResIDs()[1]);}}@Overridepublic void onPageScrollStateChanged(int arg0) {}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {}});myview_pager.setOnSingleTouchListener(new OnSingleTouchListener() {@Overridepublic void onSingleTouch() {Intent intent = new Intent();if (banerlistbak.get(myview_pager.getCurrentItem()).getUrl_type().equals("web")) {intent.putExtra("bannerlistbean",banerlistbak.get(myview_pager.getCurrentItem()));intent.setClass(getActivity(), WebActivity.class);startActivity(intent);} else if (banerlistbak.get(myview_pager.getCurrentItem()).getUrl_type().equals("in_app")) {if (!saveUtils.getBoolSP(KeepingData.LOGINED)) {intent.setClass(getActivity(), LoginActivity.class);} else {Gson gson = new Gson();InappUrlbean inappurlbean = gson.fromJson(banerlistbak.get(myview_pager.getCurrentItem()).getUrl(),InappUrlbean.class);intent.setClass(getActivity(), Kclassdata.getRechageclsss(inappurlbean.getKlass()));}startActivity(intent);}}});initView();handler.sendEmptyMessageDelayed(0, 3000);return view;}private void startanim() {tosmallanimation = (Animation) AnimationUtils.loadAnimation(getActivity(), R.anim.main_btn_scal_big);main_order_btn.startAnimation(tosmallanimation);}public static TextView getloctionview() {return loction_text;}private void get_func_button_list() {parms.clear();parms.put("width",String.valueOf(DensityUtil.getWidthInPx(getActivity())));parms.put("height",String.valueOf(DensityUtil.getHeightInPx(getActivity())));if (saveUtils.getStrSP(KeepingData.User_City_Id) != null) {parms.put("city_id", saveUtils.getStrSP(KeepingData.User_City_Id));} else {parms.put("city_id", "1");}((MainActivity) getActivity()).getdate(parms,Common.GET_FUNC_BUTTON_LIST, handler, GETFUNCTIONBTNSUCCED,GETFUNCTIONBTNFAILD, false, true, false);}private void get_banner_list() {parms.clear();parms.put("width",String.valueOf(DensityUtil.getWidthInPx(getActivity())));parms.put("height",String.valueOf(DensityUtil.getHeightInPx(getActivity())));if (saveUtils.getStrSP(KeepingData.User_City_Id) != null) {parms.put("city_id", saveUtils.getStrSP(KeepingData.User_City_Id));} else {parms.put("city_id", "1");}((MainActivity) getActivity()).getdate(parms, Common.GET_BANNER_LIST,handler, GETBANNERSUCCED, GETBANNERFAILD, true, true, false);}private void initView() {banerlistbak = new ArrayList<Bannerlistbean>();funditonlist = new ArrayList<Bannerlistbean>();saveUtils = new SaveUtils(this.getActivity());parms = new HashMap<String, String>();get_banner_list();title = new TitleAdapter(banerlistbak);myview_pager.setAdapter(title);adapter = new Myfuncadpter(getActivity(), funditonlist);main_grid.setAdapter(adapter);get_func_button_list();Animation toleftanim = (Animation) AnimationUtils.loadAnimation(getActivity(), R.anim.toleft_translaneannim);final Animation torightanim = (Animation) AnimationUtils.loadAnimation(getActivity(), R.anim.toright_translateanim);final Animation torightanim1 = (Animation) AnimationUtils.loadAnimation(getActivity(), R.anim.toleft_translation);final Animation toleftanim1 = (Animation) AnimationUtils.loadAnimation(getActivity(), R.anim.long_short_anim);AnimationListener animationListener = new AnimationListener() {@Overridepublic void onAnimationStart(Animation animation) {}@Overridepublic void onAnimationRepeat(Animation animation) {}@Overridepublic void onAnimationEnd(Animation animation) {Animorder++;switch (Animorder) {case 1:anim_womencloth.startAnimation(torightanim);break;case 2:anim_clothsmall.startAnimation(torightanim1);break;case 3:anim_sleeveshort.startAnimation(toleftanim1);break;default:break;}}};anim_trousers.setVisibility(View.VISIBLE);anim_womencloth.setVisibility(View.VISIBLE);anim_clothsmall.setVisibility(View.VISIBLE);anim_sleeveshort.setVisibility(View.VISIBLE);anim_trousers.startAnimation(toleftanim);toleftanim.setAnimationListener(animationListener);torightanim.setAnimationListener(animationListener);torightanim1.setAnimationListener(animationListener);toleftanim1.setAnimationListener(animationListener);main_order_btn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {startanim();tosmallanimation.setAnimationListener(new AnimationListener() {@Overridepublic void onAnimationStart(Animation animation) {}@Overridepublic void onAnimationRepeat(Animation animation) {}@Overridepublic void onAnimationEnd(Animation animation) {if (!saveUtils.getBoolSP(KeepingData.LOGINED)) {startActivity(new Intent(getActivity(),LoginActivity.class));return;};Intent intent = new Intent(getActivity(),PlaceorderActivity.class);intent.putExtra("from", "fromMain");intent.putExtra(KeepingData.ADDRESS_DATA, address);startActivity(intent);}});}});loction_text.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(getActivity(),CityListActivity.class);startActivityForResult(intent, getActivity().RESULT_FIRST_USER);}});}@Overridepublic void setUserVisibleHint(boolean isVisibleToUser) {super.setUserVisibleHint(isVisibleToUser);if (isVisibleToUser) {is_Loop_Flag = true;handler.sendEmptyMessageDelayed(0, 3000);if (NetUtil.getNetworkState(getActivity())) {if ((funditonlist != null) && !RequstFlag) {Timer timer = new Timer();timer.schedule(new TimerTask() {@Overridepublic void run() {getActivity().runOnUiThread(new Runnable() {@Overridepublic void run() {get_banner_list();get_func_button_list();}});}}, 500);}}} else {is_Loop_Flag = false;}}private int[] getImageResIDs() {return new int[] { R.drawable.splash_dot_default,R.drawable.splash_dot_current };}private class TitleAdapter extends PagerAdapter {private ArrayList<Bannerlistbean> mbannerlist;public TitleAdapter(ArrayList<Bannerlistbean> bannerlist) {super();mbannerlist = bannerlist;}@Overridepublic int getCount() {int size = mbannerlist.size() == 0 ? 2 : mbannerlist.size();// if (mbannerlist.size() > 0) {// return size;// } else {// return 2;// }return 3;}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {return arg0 == arg1;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {((ViewPager) container).removeView((View) object);}@Overridepublic Object instantiateItem(ViewGroup container, final int position) {View view = View.inflate(getActivity(), R.layout.bander_title, null);imageView_title = (ImageView) view.findViewById(R.id.iv_bander_title);imageView_title.setScaleType(ScaleType.CENTER_CROP);imageView_title.setImageResource(R.drawable.banner_default);if (mbannerlist.size() == 0) {container.addView(view, 0);return view;} else {BitmapUtils utils = new BitmapUtils(getActivity());utils.display(imageView_title, mbannerlist.get(position).getImage_url());container.addView(view, position);return view;}}}/** 动态添加轮播图小圆点 **/protected void addBannerPoint() {for (int i = 0; i < banerlistbak.size(); i++) {point = new ImageView(getActivity());point.setBackgroundResource(R.drawable.splash_dot_current);LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);params.gravity = Gravity.CENTER;point.setLayoutParams(params);point.setVisibility(View.VISIBLE);if (i == 0) {point.setEnabled(true);} else {point.setEnabled(false);}pager_bottom.addView(point);}}/** 解析banner结果方法 **/protected void paserbaner(String json, ArrayList<Bannerlistbean> bannerlist) {JSONArray jsonArray;bannerlist.clear();try {jsonArray = new JSONArray(json);for (int i = 0; i < jsonArray.length(); i++) {str = (JSONObject) jsonArray.opt(i);Bannerlistbean bannerlistbean = new Bannerlistbean();bannerlistbean.setImage_url(str.getString("image_url"));bannerlistbean.setUrl_type(str.getString("url_type"));bannerlistbean.setUrl(str.getString("url"));bannerlistbean.setTitle(str.getString("title"));if (str.getString("title").equals("按袋计费")) {saveUtils.saveStrSP(KeepingData.An_Dai_Ji_Fei_Url,str.getString("url"));} else if (str.getString("title").equals("按件计费")) {saveUtils.saveStrSP(KeepingData.An_Jian_Ji_Fei_Url,str.getString("url"));}bannerlist.add(bannerlistbean);}} catch (JSONException e) {e.printStackTrace();}}/** 回调用户选中城市结果方法 **/@Overridepublic void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (saveUtils.getStrSP(KeepingData.User_City) != "") {loction_text.setText(saveUtils.getStrSP(KeepingData.User_City));get_banner_list();get_func_button_list();}}/** dp px 转换工具方法 **/private int dp2px(int dp) {return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp,getResources().getDisplayMetrics());}
}

  布局就省略了。

Android viewpager 嵌套 viewpager滑动 点击事件冲突解决方案相关推荐

  1. Android Listview中Button按钮点击事件冲突解决办法

    今天做项目时,ListView中含有了Button组件,心里一早就知道肯定会有冲突,因为以前就遇到过,并解决过,可惜当时没有记录下来. 今天在做的时候,继续被这个问题郁闷了一把,后来解决后,赶紧来记录 ...

  2. ViewPager嵌套ViewPager后子ViewPager滑动不正常问题

    ViewPager嵌套ViewPager后,滑动事件没法在子ViewPager里面响应. 解决办法是自定义子ViewPager. package com.lwj.app.customview;impo ...

  3. 关于ViewPager嵌套ViewPager左右滑动冲突解决方法

    情况如下,TabLayout+ViewPager+Fragment,其中一个Fragment里面又嵌套了一层TabLayout+ViewPager+Fragment,运行的时候出现了两个情况. 1.子 ...

  4. android vue.js点击反应慢,解决vue 界面在苹果手机上滑动点击事件等卡顿问题

    用vue编写项目接近尾声,需要集成到移动端中,在webstorm上界面,运行效果都很完美,但是在苹果手机上各种问题都出现了,原生项目一向滑动流畅,事件响应迅速,可是苹果手机打开这个项目有两个问题, ( ...

  5. viewpager嵌套viewpager

    viewpager嵌套viewpager 要求:外层不可以滑动,内层可以滑动 实现:重写外层的viewpager的2个方法即可 public class NoScrollViewPager exten ...

  6. Android 动态添加标签及其点击事件

    在做Android开发的时候,会遇到动态添加标签让用户选择的功能,所以自己写了个例子,运行效果图如下. 标签可以左右滑动进行选择,点击的时候,会弹出toast提示选择或者取消选择了哪个标签.通过动态添 ...

  7. android通知栏的点击事件,Android监听消息通知栏点击事件

    Android监听消息通知栏点击事件 使用BroadCastReceiver 1 新建一个NotificationClickReceiver 类,并且在清单文件中注册!! public class N ...

  8. vue移动端点击事件延迟_解决Vue 界面在苹果手机上滑动点击事件等卡顿问题_莺语_前端开发者...

    用 (1).滑动页面卡顿, (2).点击事件响应缓慢,百度才发现在苹果手机上有300ms的延迟. 一.滑动页面卡顿 //页面布局 页面内容 在对应的组件的最外层div上加上这样的样式: .conten ...

  9. iOS UITapGestureRecognizer手势和UIButton 以及UITabelView点击事件冲突

    一:在同一个view上加载,UITapGestureRecognizer手势,UIButton 行为,UITabelView点击事件冲突: 二:解决方式: 在UITapGesttureRecogniz ...

最新文章

  1. elementary OS 6 评测!
  2. 面试大法——算法、Python、机器学习等笔试面经资源 | 干货收藏
  3. add函数 pytorch_Pytorch学习记录-Pytorch可视化使用tensorboardX
  4. MyEclipse设置像visual studio一样的智能提示
  5. btoa java,JavaScript用btoa和atob来编码解码Base64
  6. 利用Caffe训练模型(solver、deploy、train_val)+python使用已训练模型
  7. python学习day_04_字典
  8. android界面设计中用的字体,APP界面设计必备!最全UI设计字体规范
  9. php最新猜骰子,最新微信猜骰子游戏源码(免公众号版+H5)
  10. 如何理解泊松分布(Poisson Distribution)
  11. 陀螺仪、加速度计与MPU6050的关系
  12. reporting service odbc mysql_Reporting Services
  13. NR modulation 4-AM
  14. 密码学课程设计之DES对称加密
  15. 树形结构的处理——组合模式(四)
  16. 京颐医疗云产品总监柏鹏:云转型布局未来,我们是如何应对医疗云的挑战与机遇...
  17. 客户端架构(C/S架构和B/S架构)
  18. 张瑞敏管理名言160句
  19. HTML经典布局之圣杯布局详解
  20. proxifier 注册码

热门文章

  1. 测试员35岁以后找不到工作?问完了几千人后,我们得到了答案......
  2. c语言 获取可用内存大小,C语言实现获取内存信息并输出的实例
  3. mysql 日期分隔符_sql中的日期处理
  4. 矩阵横向输出_Python3算法之八:矩阵螺旋遍历
  5. build tut framework on ubuntu
  6. Hierarchical voxel block hashing for effiecient integration of depth images
  7. charcoal editor installation
  8. AI学习笔记(五)坐标变换与视觉测量
  9. php cookie注销,注销后未设置php cookie
  10. ehcache缓存原理_Mybatis-09-缓存