亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android 滑動(dòng)攔截實(shí)例代碼解析

 更新時(shí)間:2016年12月09日 09:53:21   作者:蘋果樹上的女孩  
本文給大家分享一段實(shí)例代碼解析android 滑動(dòng)攔截功能的實(shí)現(xiàn)方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下

廢話不多說了,直接給大家貼代碼了,具體代碼如下所示:

 package demo.hq.com.fby;
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.widget.LinearLayout;
/**
 * Created by huqing on 2016/12/7.
 * 思路:
 * 分內(nèi)外部攔截
 * 在父布局中,onInterceptTouchEvent先判斷是否攔截滑動(dòng),true 攔截 直接進(jìn)入父布局的onTouch方法 ;false 進(jìn)入子布局的onTouch方法
 */
public class MyParentView extends LinearLayout
{
  /**
   * 每向下Move移動(dòng)的距離
   */
  private int mMove;
  /**
   * 落下點(diǎn)的位置
   */
  private int yDown;
  /**
   * 移動(dòng)點(diǎn)的位置
   */
  private int yMove;
  /**
   * 一共向下挪動(dòng)的距離
   */
  private int downDistance = 0;
  public MyParentView(Context context, AttributeSet attrs)
  {
    super(context, attrs);
  }
  boolean intercept = false;
  /**
   * 外部攔截,
   * 如果是向下滑動(dòng) 則為true,交給該控件處理,向上false就交給子控件處理吧
   * 所以向上的事件 子控件都能獲取到的
   *
   * @param ev
   * @return
   */
  @Override
  public boolean onInterceptTouchEvent(MotionEvent ev)
  {
    switch (ev.getAction())
    {
      case MotionEvent.ACTION_DOWN:
        yDown =(int) ev.getY();
        break;
      case MotionEvent.ACTION_MOVE:
        yMove = (int) ev.getY();
        if (yMove > yDown)
        {
          intercept = true;
          Log.d("hqq", "攔截~~~~~~~~~~~~~~~~~~");
        }
        else if (yMove < yDown)
        {
          intercept = false;
          Log.d("hqq", "不攔截~~~~~~~~~~~~~~~~~~");
        }
        break;
      case MotionEvent.ACTION_UP:
        break;
    }
    //true 攔截,進(jìn)入該控件的onTouchEvent方法 false:進(jìn)入子控件的OnTouchEvent
    boolean returnInterCept = intercept;
    intercept = false;
    return returnInterCept;
  }
  @Override
  public boolean onTouchEvent(MotionEvent event)
  {
    Log.e("hq", "father onTouch");
    int y = (int) event.getY();
    switch (event.getAction())
    {
      case MotionEvent.ACTION_DOWN:
        yDown = y;
        break;
      case MotionEvent.ACTION_MOVE:
        if (downDistance>=250){
        }else {
          yMove = y;
          if (yMove - yDown > 0)
          {
            mMove = yMove - yDown;
            downDistance += mMove;
            if (downDistance>=250){
              layout(getLeft(),downDistance, getRight(), getHeight() + downDistance);
            }else {
              layout(getLeft(), getTop() + mMove, getRight(), getBottom() + mMove);
            }
          }
        }
        break;
      case MotionEvent.ACTION_UP:
        layout(getLeft(), getTop() - downDistance, getRight(), getBottom() - downDistance);
        downDistance = 0;
        break;
    }
    return true;//    return super.onTouchEvent(event);
  }
}
package demo.hq.com.fby;
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.widget.ScrollView;
/**
 * Created by huqing on 2016/12/7.
 */
public class MyScrollView extends ScrollView
{
  public MyScrollView(Context context, AttributeSet attrs)
  {
    super(context, attrs);
  }
  @Override
  public boolean onTouchEvent(MotionEvent ev)
  {
    Log.e("hq","child onTouch----------------");
    switch (ev.getAction()){
      case MotionEvent.ACTION_DOWN:
        getParent().requestDisallowInterceptTouchEvent(true);
        break;
      case MotionEvent.ACTION_MOVE:
        if (getScrollY()==0){//ScrollView沒有滑動(dòng)時(shí) ,即滑動(dòng)高度沒變化的話就允許父控件攔截
          getParent().requestDisallowInterceptTouchEvent(false);
        }else {//禁止攔截
          getParent().requestDisallowInterceptTouchEvent(true);
        }
        break;
    }
    return super.onTouchEvent(ev);
  }
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
  android:id="@+id/activity_main"
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="@drawable/bg"
  tools:context="demo.hq.com.fby.MainActivity">
  <demo.hq.com.fby.MyParentView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#ffffff"
    android:orientation="vertical">
    <TextView
      android:layout_width="wrap_content"
      android:layout_height="100dp"
      android:text=" World!"/>
    <TextView
      android:layout_width="wrap_content"
      android:layout_height="100dp"
      android:text=" World!"/>
    <demo.hq.com.fby.MyScrollView android:layout_width="match_parent"
                   android:layout_height="wrap_content">
      <LinearLayout android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:orientation="vertical">
        <TextView
          android:layout_width="wrap_content"
          android:layout_height="200dp"
          android:text="Hello World!"/>
        <TextView
          android:layout_width="wrap_content"
          android:layout_height="200dp"
          android:text="Hello World!"/>
      </LinearLayout>
    </demo.hq.com.fby.MyScrollView>
  </demo.hq.com.fby.MyParentView>
</RelativeLayout>

以上所述是小編給大家介紹的Android 滑動(dòng)攔截實(shí)例代碼解析,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Android實(shí)現(xiàn)簡(jiǎn)單畫圖畫板

    Android實(shí)現(xiàn)簡(jiǎn)單畫圖畫板

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)簡(jiǎn)單畫圖畫板,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • Android 保存Fragment 切換狀態(tài)實(shí)例代碼

    Android 保存Fragment 切換狀態(tài)實(shí)例代碼

    本文主要介紹Android Fragment的應(yīng)用,這里給大家用實(shí)例代碼詳細(xì)介紹了Android Fragment 切換狀態(tài),有需要的小伙伴可以參考下
    2016-07-07
  • 快速了解Android Room使用細(xì)則

    快速了解Android Room使用細(xì)則

    這篇文章主要為大家介紹了快速了解Android Room使用細(xì)則,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • android 完全退出應(yīng)用程序?qū)崿F(xiàn)代碼

    android 完全退出應(yīng)用程序?qū)崿F(xiàn)代碼

    這篇文章主要介紹了在android中完全退出應(yīng)用的實(shí)現(xiàn)代碼,多種實(shí)現(xiàn)方法,大家可以根據(jù)需求選擇
    2013-06-06
  • 如何在Android studio 中使用單例模式

    如何在Android studio 中使用單例模式

    這篇文章主要介紹了如何在Android studio 中使用單例模式,幫助大家更好的理解和學(xué)習(xí)Android開發(fā),感興趣的朋友可以了解下
    2021-03-03
  • Flutter之?ListView組件使用示例詳解

    Flutter之?ListView組件使用示例詳解

    這篇文章主要為大家介紹了Flutter之?ListView組件使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • 如何在android中制作一個(gè)方向輪盤詳解

    如何在android中制作一個(gè)方向輪盤詳解

    這篇文章主要給大家介紹了關(guān)于如何在android中制作一個(gè)方向輪盤的相關(guān)資料,這個(gè)是在手游領(lǐng)域中很常見的用于控制方向的輪盤,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-09-09
  • flutter開發(fā)技巧自定頁(yè)面指示器PageIndicator詳解

    flutter開發(fā)技巧自定頁(yè)面指示器PageIndicator詳解

    這篇文章主要為大家介紹了flutter開發(fā)技巧自定頁(yè)面指示器PageIndicator詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • Android中二維碼的掃描和生成(使用zxing庫(kù))

    Android中二維碼的掃描和生成(使用zxing庫(kù))

    ZXing是一個(gè)開放源碼的,用Java實(shí)現(xiàn)的多種格式的1D/2D條碼圖像處理庫(kù),它包含了聯(lián)系到其他語(yǔ)言的端口,下面這篇文章主要給大家介紹了關(guān)于Android中二維碼掃描和生成的相關(guān)資料,主要使用的zxing庫(kù),需要的朋友可以參考下
    2022-09-09
  • Android實(shí)現(xiàn)九宮格手勢(shì)密碼

    Android實(shí)現(xiàn)九宮格手勢(shì)密碼

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)九宮格手勢(shì)密碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06

最新評(píng)論