覆盖缩放 swipetorefresh - Android

Posted

技术标签:

【中文标题】覆盖缩放 swipetorefresh - Android【英文标题】:Override zoom over swipetorefresh - Android 【发布时间】:2016-06-27 17:17:52 【问题描述】:

好的,所以如果我滚动了一点并且滑动刷新变得可见,并且如果我尝试用两根手指缩放它只会进一步向下刷新。我想要实现的是,如果用户尝试缩放,则滑动刷新将被缩放选项覆盖。这是一些代码。

这是 webView 的简单缩放控件。

    myWebView.getSettings().setLoadWithOverviewMode(true);
    myWebView.getSettings().setUseWideViewPort(true);
    myWebView.getSettings().setBuiltInZoomControls(true);
    myWebView.getSettings().setDisplayZoomControls(false);

这里来自 SwipeToRefresh:

    mySwipeRefreshLayout.setOnRefreshListener(
         new SwipeRefreshLayout.OnRefreshListener() 
              @Override
              public void onRefresh() 
                   myWebView.reload();
                   
         );

我有mySwipeRefreshLayout.setRefreshing(true);mySwipeRefreshLayout.setRefreshing(false);,这取决于我想在哪里使用它们。有什么建议吗?

【问题讨论】:

【参考方案1】:

我遇到了同样的问题,我用下一个成功解决了:

创建从 SwipeRefreshLayout 扩展的新类

public class SwipeToRefresh extends SwipeRefreshLayout 

private static final float REFRESH_RATE = 10f;
private float mDownX, mDownY, scaleX, scaleY;

public SwipeToRefresh(Context context) 
    super(context);


public SwipeToRefresh(Context context, AttributeSet attrs) 
    super(context, attrs);


@Override
public boolean onInterceptTouchEvent(MotionEvent ev) 
    switch (ev.getAction()) 
        case MotionEvent.ACTION_DOWN:
            mDownX = ev.getX();
            mDownY = ev.getY();
            break;
        case MotionEvent.ACTION_MOVE:
            return doRefresh(ev);
        case MotionEvent.ACTION_UP:
            return doRefresh(ev);
    
    return super.onInterceptTouchEvent(ev);


private boolean doRefresh(MotionEvent ev) 
    scaleX = Math.abs(ev.getX() - mDownX);
    scaleY = Math.abs(ev.getY() - mDownY);
    if (scaleY / scaleX > REFRESH_RATE) 
        return super.onInterceptTouchEvent(ev);
     else 
        return false;
    

活动中

  SwipeToRefresh mSwipeRefreshLayout = (SwipeToRefresh) findViewById(R.id.my_refresh_layout);
    mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() 
        @Override
        public void onRefresh() 
            // Refresh WebView
        
    );

不要忘记在布局中更改类名

<com.example.package.SwipeToRefresh
        android:id="@+id/my_refresh_layout"
        android:layout_
        android:layout_>

        <WebView
            android:id="@+id/webView"
            android:layout_
            android:layout_
            android:layout_alignParentStart="true" />

    </com.example.package.SwipeToRefresh>

祝你好运!

【讨论】:

这是一个很大的改进,但捏缩放并不会覆盖滑动刷新。如果圆圈在屏幕上并且您尝试缩放它只是向上或向下移动。.跨度> 好主意。谢谢:)

以上是关于覆盖缩放 swipetorefresh - Android的主要内容,如果未能解决你的问题,请参考以下文章

使用 kml 文件时,Google 地图缩放被覆盖

可以使用带有覆盖 div 的 iscroll 捏合/缩放吗?

设置地图缩放以覆盖所有标记;确保以特定标记为中心

如何自动缩放mapView以显示覆盖

防止覆盖在缩放时消失 - MKMapView & MKOverlay

JavaFx 缩放和平移覆盖固定比例标签的图像