欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android下拉刷新與輪播圖滑動(dòng)沖突解決方案

 更新時(shí)間:2017年02月07日 16:56:33   作者:Funzion  
這篇文章主要介紹了Android實(shí)現(xiàn)下拉刷新與輪播圖沖突解決方案,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。隨小編過來(lái)看看吧

最近在開發(fā)中遇到了這樣一個(gè)問題,在下拉刷新組件中包含了一個(gè)輪播圖組件,當(dāng)左右滑動(dòng)的圖片時(shí)很容易觸發(fā)下拉刷新,如下圖所示:

如圖中紅色箭頭所示方向切換輪播圖,很容易觸發(fā)下拉刷新。網(wǎng)上查了很多方法,發(fā)現(xiàn)都不能很好的解決,于是自己研究了下。

我選用的第三方控件

1.下拉刷新我選用的是chanven的CommonPullToRefresh(系統(tǒng)自帶的SwipeRefreshLayout也應(yīng)該是一樣的道理);

2.輪播圖選用的是daimajia的AndroidImageSlider(用ViewPager也是一樣的道理)。具體界面自行腦補(bǔ)哈。

解決方案

我們仔細(xì)分析一下,我們要解決的實(shí)際上就是控件的事件攔截問題。現(xiàn)在的情況是外層的控件已經(jīng)攔截了斜著滑動(dòng)的事件,那么我們只要讓外層的控件把這個(gè)事件分發(fā)下去就可以了【在dispatchTouchEvent(MotionEvent ev)方法中處理】,那么問題來(lái)了,怎么判斷斜著的事件。網(wǎng)上有很多方案,但都不是很完美。我想到了一種,跟大家分享一下,先看圖:

方案分析

1.圖一中x=y,作為臨界條件,這時(shí)α剛好等于45°;

2.圖二中x<y,α>45°,這時(shí)我們判斷為上下移動(dòng);

3.圖三中x>y,α<45°,這時(shí)我們判斷為左右移動(dòng)。

那么我們只要判斷tan(α)與tan(45)的關(guān)系就能判斷是左右還是上下移動(dòng)。我們寫一個(gè)類繼承PtrClassicFrameLayout,下面是關(guān)鍵代碼:

public class SubPtrClassicFrameLayout extends PtrClassicFrameLayout {

  private float mDownX;
  private float mDownY;

  public SubPtrClassicFrameLayout(Context context) {
    super(context);
  }

  public SubPtrClassicFrameLayout(Context context, AttributeSet attrs) {
    super(context, attrs);
  }

  public SubPtrClassicFrameLayout(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
  }

  @Override
  public boolean dispatchTouchEvent(MotionEvent ev) {
    switch (ev.getAction()) {
      case MotionEvent.ACTION_DOWN:
        mDownX = ev.getX();
        mDownY = ev.getRawY();
        break;
      case MotionEvent.ACTION_MOVE:
        float moveX = ev.getX();
        float moveY = ev.getRawY();
        float diffX = Math.abs(moveX - mDownX);
        float diffY = Math.abs(moveY - mDownY);
        boolean isHorizon = Math.tan(diffY / diffX) < Math.tan(45.0);
        if (isHorizon) {
          return dispatchTouchEventSupper(ev);
        }
        break;
    }
    return super.dispatchTouchEvent(ev);
  }

}

我們可以看到,其實(shí)很簡(jiǎn)單,關(guān)鍵就是判斷當(dāng)前位置相對(duì)于初始位置的滑動(dòng)方向。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Material Design系列之自定義Behavior支持所有View

    Material Design系列之自定義Behavior支持所有View

    這篇文章主要為大家詳細(xì)介紹了Material Design系列之自定義Behavior支持所有View,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Android存儲(chǔ)字符串?dāng)?shù)據(jù)到txt文件

    Android存儲(chǔ)字符串?dāng)?shù)據(jù)到txt文件

    這篇文章主要為大家詳細(xì)介紹了Android存儲(chǔ)字符串?dāng)?shù)據(jù)到txt文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • Android實(shí)現(xiàn)左滑刪除控件

    Android實(shí)現(xiàn)左滑刪除控件

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)左滑刪除控件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • Android仿ViVO X6 極速閃充動(dòng)畫效果

    Android仿ViVO X6 極速閃充動(dòng)畫效果

    這篇文章主要介紹了Android仿ViVO X6 極速閃充動(dòng)畫效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-07-07
  • Android布局耗時(shí)監(jiān)測(cè)的三種實(shí)現(xiàn)方式

    Android布局耗時(shí)監(jiān)測(cè)的三種實(shí)現(xiàn)方式

    在Android應(yīng)用開發(fā)中,性能優(yōu)化是一個(gè)至關(guān)重要的方面,為了更好地監(jiān)測(cè)布局渲染的耗時(shí),我們需要一種可靠的實(shí)現(xiàn)方案,本文將介紹三種針對(duì)Android布局耗時(shí)監(jiān)測(cè)的實(shí)現(xiàn)方案,幫助開發(fā)者及時(shí)發(fā)現(xiàn)并解決布局性能問題,需要的朋友可以參考下
    2024-03-03
  • 避免 Android中Context引起的內(nèi)存泄露

    避免 Android中Context引起的內(nèi)存泄露

    本文主要介紹Android中Context引起的內(nèi)存泄露的問題,這里對(duì)Context的知識(shí)做了詳細(xì)講解,說(shuō)明如何避免內(nèi)存泄漏的問題,有興趣的小伙伴可以參考下
    2016-08-08
  • Android UI中TextView的使用方法

    Android UI中TextView的使用方法

    這篇文章主要介紹了Android UI中TextView的使用方法的相關(guān)資料,希望通過本文大家能掌握TextView的使用方法,需要的朋友可以參考下
    2017-09-09
  • Android優(yōu)化查詢加載大數(shù)量的本地相冊(cè)圖片

    Android優(yōu)化查詢加載大數(shù)量的本地相冊(cè)圖片

    本文介紹了Android優(yōu)化查詢加載大數(shù)量的本地相冊(cè)圖片,可以方便的照片的查詢,,感興趣的小伙伴們可以參考一下。
    2016-10-10
  • Android控制界面刷新技巧匯總

    Android控制界面刷新技巧匯總

    這篇文章主要為大家詳細(xì)介紹了Android控制界面刷新的小技巧,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • AndroidQ分區(qū)存儲(chǔ)權(quán)限變更及適配的實(shí)現(xiàn)

    AndroidQ分區(qū)存儲(chǔ)權(quán)限變更及適配的實(shí)現(xiàn)

    這篇文章主要介紹了AndroidQ分區(qū)存儲(chǔ)權(quán)限變更及適配的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06

最新評(píng)論