最近在进行混合开发过程中,用viewpager+fragment的方式在基本框架,在里面fragment中包含webview,而在webview中存在一个横屏轮播的控件,导致在执行webview轮播滑动时,会触发viewpager的滑动,导致webview的轮播失效,经过一番对该问题的搜索和实践,最后将问题解决。该方法需要网页与Android两端配合使用。

解决的方法:

首先需要在网页端写js接口,获取轮播控件的宽高以及相对于原点的位置,获取轮播宽高的坐标的实际也比较重要,需要在页面刚加载获取一次,现在轮播控件的宽高,并且调起写好的js调Android的方法,同时也需要Android端定义好对应的接口,并且在上下滑动的时候也需要去计算现在轮播控件的宽高,并且给Android端发送过去。

由于我主要开发的Android端,所以不知道网页端js的代码,如有需要自行查找:

window.onload = function(){ ... } window.onscroll = function(){ ... }

在Android端的主要代码:

首先需要定义一个类来接收js接口返回的坐标值

public class PagerDesc {    private int top;    private int left;    private int right;    private int bottom;    //get set方法    public PagerDesc(int top, int left, int right, int bottom) {        this.top = top;        this.bottom = bottom;    }}
定义js接口,用 PagerDesc类来接收返回的原点坐标和宽高值


当解决完以上的内容,接下来是根据Android的机制来进行在webview的onTouch事件进行处理

详细代码:

webView.setOnTouchListener(new View.OnTouchListener() {                @Override                public boolean onTouch(View v, MotionEvent event) {                    //获取y轴坐标                    float y = event.getRawY();                    switch (event.getAction()) {                        case MotionEvent.ACTION_DOWN:                            if (null != mPagerDesc) {                                int top = mPagerDesc.getTop();                                int bottom = top + (mPagerDesc.getBottom() - mPagerDesc.getTop());                                //将css像素转换为android设备像素并考虑通知栏高度                                DisplayMetrics metric = context.getResources().getDisplayMetrics();                                top = (int) (top * metric.density) + ScreenUtil.getStatusBarHeight(getActivity());                                bottom = (int) (bottom * metric.density) + ScreenUtil.getStatusBarHeight(getActivity());                                //如果触摸点的坐标在轮播区域内,则由webview来处理事件,否则由viewpager来处理                                if (y > top&& y
这样基本就可以了。



更多相关文章

  1. 如何美化android程序:自定义ListView背景
  2. 使EditText不自动获取焦点(Android中系统输入法不主动弹出)
  3. Android上实现仿IOS弹性ScrollView
  4. 一个方便集成的 Android(安卓)右滑返回上级 控件
  5. Android(安卓)GridLayout 动态添加子控件 + 平均分配空间
  6. Android(安卓)IPC系列--序列化机制
  7. Android番外篇——XML layout与CSS 转载
  8. Android接口回调,最简单的理解方式
  9. Android基础控件之基本属性

随机推荐

  1. CSS:媒体查询-复习
  2. CSS:表格的常用样式-复习
  3. CSS:定位与定位元素-复习
  4. 淘宝首页框架
  5. 如何在Linux系统上刷抖音
  6. [android]Mac OS环境下真机调试的环境配
  7. Android(安卓)Retrofit 2.0(二)使用教程OkH
  8. 如何让Android字体自适应屏幕分辨率
  9. Android
  10. android Java BASE64编码和解码二:图片的