最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

神奇的listView實(shí)現(xiàn)自動顯示隱藏布局Android代碼

 更新時(shí)間:2016年09月17日 15:29:56   作者:妖久  
這篇文章主要介紹了神奇的listView實(shí)現(xiàn)自動顯示隱藏布局Android代碼實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

借助View的OnTouchListener接口來監(jiān)聽listView的滑動,通過比較與上次坐標(biāo)的大小,判斷滑動方向,并通過滑動方向來判斷是否需顯示或者隱藏對應(yīng)的布局,并且?guī)в袆赢嬓Ч?br />

1.自動顯示隱藏Toolbar

首先給listView增加一個(gè)HeaderView,避免第一個(gè)Item被Toolbar遮擋。 

View header=new View(this);
 header.setLayoutParams(new AbsListView.LayoutParams(
  AbsListView.LayoutParams.MATCH_PARENT,
  (int)getResources().getDimension(R.dimen.abc_action_bar_default_height_material)));
 mListView.addHeaderView(header);

//R.dimen.abc_action_bar_default_height_material為系統(tǒng)ActionBar的高度

定義一個(gè)mTouchSlop變量,獲取系統(tǒng)認(rèn)為的最低滑動距離

復(fù)制代碼 代碼如下:
mTouchSlop=ViewConfiguration.get(this).getScaledTouchSlop();//系統(tǒng)認(rèn)為的最低滑動距離
      

判斷滑動事件

bbsListView.setOnTouchListener(new OnTouchListener() {
   
   @Override
   public boolean onTouch(View v, MotionEvent event) {
     switch (event.getAction()) 
    {
    case MotionEvent.ACTION_DOWN:
     mFirstY=event.getY();
     break;
    case MotionEvent.ACTION_MOVE:
     mCurrentY=event.getY();
     if(mCurrentY-mFirstY>mTouchSlop)
      direction=0; //listView向下滑動
     else if(mFirstY-mCurrentY>mTouchSlop)
      direction=1; //listView向上滑動
     if(direction==1)
     {
      if(mShow)
      {
       toolbarAnim(1); //隱藏上方的view
       mShow=!mShow;
      }
     }
     else if(direction==0)
     {
      if(!mShow)
      {
       toolbarAnim(0); //展示上方的view
       mShow=!mShow;
      }
     }
    case MotionEvent.ACTION_UP:
     break;
    }
    return false;
   }
  });
 }

屬性動畫 

protected void toolbarAnim(int flag) 
 {
  
  
  if(set!=null && set.isRunning())
  {
   set.cancel();
  }
  if(flag==0)
  {
  

   mAnimator1=ObjectAnimator.ofFloat(mToolbar, 
     "translationY", linearView.getTranslationY(),0);
   mAnimator2=ObjectAnimator.ofFloat(mToolbar, "alpha", 0f,1f);
  }
  else if(flag==1)
  {
   
  
   mAnimator1=ObjectAnimator.ofFloat(mToolbar, 
     "translationY", linearView.getTranslationY(),-linearView.getHeight());
   mAnimator2=ObjectAnimator.ofFloat(mToolbar, "alpha", 1f,0f);
   
  }
  set=new AnimatorSet();
  set.playTogether(mAnimator1,mAnimator2);
  set.start();
  
}

//上面為位移還有透明度屬性動畫 

使用的時(shí)候theme要用NoActionBar的,不然會引起沖突。同時(shí)引入編譯

dependencies{
   compile fileTree(include:['*.jar'],dir:'libs')
   compile 'com.android.support:appcompat-v7:21.0.3'
 } 

2.當(dāng)要隱藏和顯示的組件不是toolbar,而是我們自定義的布局myView時(shí),需要注意一些點(diǎn),
(1) 布局要用相對布局,讓我們自定義的布局懸浮在listView上方。
(2)避免第一個(gè)Item被myView遮擋,給listView增加一個(gè)HeaderView,此時(shí)需要測量myView的高度,要用下面這種方法,把任務(wù)post到UI線程中,不然執(zhí)行會出錯(cuò)。 

final View header=new View(this); //給listView增加一個(gè)headView,避免第一個(gè)item被遮擋 header.post(new Runnable() {
 public void run() {
     header.setLayoutParams(new AbsListView.LayoutParams(            AbsListView.LayoutParams.MATCH_PARENT, myView.getHeight()));
   }
  });

其他的與toolbar一樣

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

相關(guān)文章

  • Flutter實(shí)現(xiàn)手勢識別功能詳解方法

    Flutter實(shí)現(xiàn)手勢識別功能詳解方法

    在Flutter中使用GestureDetector可以來完成對手勢的識別,包括長按、滑動、雙擊等手勢,這篇文章主要介紹了Flutter實(shí)現(xiàn)手勢識別功能
    2022-11-11
  • Android 文件下載三種基本方式

    Android 文件下載三種基本方式

    這篇文章主要介紹了Android 文件下載三種基本方式,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-06-06
  • Android 全局異常捕獲實(shí)例詳解

    Android 全局異常捕獲實(shí)例詳解

    這篇文章主要介紹了 Android 全局異常捕獲實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Android異步消息機(jī)制詳解

    Android異步消息機(jī)制詳解

    這篇文章主要為大家詳細(xì)介紹了Android異步消息機(jī)制的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Android中的xml解析介紹

    Android中的xml解析介紹

    大家好,本篇文章主要講的是Android中的xml解析介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • Android無限循環(huán)RecyclerView的完美實(shí)現(xiàn)方案

    Android無限循環(huán)RecyclerView的完美實(shí)現(xiàn)方案

    這篇文章主要介紹了Android無限循環(huán)RecyclerView的完美實(shí)現(xiàn)方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 不可不知的Android strings.xml那些事

    不可不知的Android strings.xml那些事

    相信 strings.xml 已經(jīng)是大家在 Android 開發(fā)中最熟悉的文件之一了,但其實(shí)它也有很多需要注意的地方和一些小技巧,知道了這些可以讓你的 Android 應(yīng)用更加規(guī)范易用,大家來看看吧
    2016-08-08
  • Android基于繪制緩沖實(shí)現(xiàn)煙花效果

    Android基于繪制緩沖實(shí)現(xiàn)煙花效果

    這篇文章主要介紹了Android基于繪制緩沖實(shí)現(xiàn)煙花效果,文中通過代碼示例和圖文結(jié)合介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,感興趣的同學(xué)可以自己動手嘗試一下
    2024-03-03
  • Android?IdleHandler使用方法詳解

    Android?IdleHandler使用方法詳解

    這篇文章主要為大家介紹了Android?IdleHandler使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • android異步加載圖片并緩存到本地實(shí)現(xiàn)方法

    android異步加載圖片并緩存到本地實(shí)現(xiàn)方法

    圖片過多造成內(nèi)存溢出,這個(gè)是最不容易解決的,要想一些好的緩存策略,比如大圖片使用LRU緩存策略或懶加載緩存策略。今天首先介紹一下本地緩存圖片
    2013-01-01

最新評論

城市| 新和县| 贡山| 精河县| 麻江县| 航空| 双桥区| 开鲁县| 寿宁县| 三亚市| 邵武市| 门头沟区| 清涧县| 东乡族自治县| 浮山县| 定安县| 汉川市| 晴隆县| 汝南县| 米脂县| 德格县| 浙江省| 东乌珠穆沁旗| 江都市| 镇宁| 汉川市| 阜平县| 万源市| 邹平县| 竹山县| 平顺县| 安乡县| 新巴尔虎右旗| 辽阳县| 合水县| 嵊州市| 江孜县| 赣榆县| 调兵山市| 永胜县| 宽甸|