神奇的listView實(shí)現(xiàn)自動(dòng)顯示隱藏布局Android代碼
借助View的OnTouchListener接口來(lái)監(jiān)聽(tīng)listView的滑動(dòng),通過(guò)比較與上次坐標(biāo)的大小,判斷滑動(dòng)方向,并通過(guò)滑動(dòng)方向來(lái)判斷是否需顯示或者隱藏對(duì)應(yīng)的布局,并且?guī)в袆?dòng)畫(huà)效果。
1.自動(dòng)顯示隱藏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)為的最低滑動(dòng)距離
判斷滑動(dòng)事件
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向下滑動(dòng) else if(mFirstY-mCurrentY>mTouchSlop) direction=1; //listView向上滑動(dòng) 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; } }); }
屬性動(dòng)畫(huà)
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(); }
//上面為位移還有透明度屬性動(dòng)畫(huà)
使用的時(shí)候theme要用NoActionBar的,不然會(huì)引起沖突。同時(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) 布局要用相對(duì)布局,讓我們自定義的布局懸浮在listView上方。
(2)避免第一個(gè)Item被myView遮擋,給listView增加一個(gè)HeaderView,此時(shí)需要測(cè)量myView的高度,要用下面這種方法,把任務(wù)post到UI線程中,不然執(zhí)行會(huì)出錯(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一樣
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- android 通過(guò)向viewpage中添加listview來(lái)完成滑動(dòng)效果(類(lèi)似于qq滑動(dòng)界面)
- android Listview模擬聊天界面
- Android 新聞界面模擬ListView和ViewPager的應(yīng)用
- Android ListView自定義Adapter實(shí)現(xiàn)仿QQ界面
- Android App界面的ListView布局實(shí)戰(zhàn)演練
- Android中使用Expandablelistview實(shí)現(xiàn)微信通訊錄界面
- android動(dòng)態(tài)布局之動(dòng)態(tài)加入TextView和ListView的方法
- Android ListView添加頭布局和腳布局實(shí)例詳解
- Android實(shí)現(xiàn)的ListView分組布局改進(jìn)示例
- Android開(kāi)發(fā)之ListView的簡(jiǎn)單用法及定制ListView界面操作示例
相關(guān)文章
Android右滑返回上一個(gè)界面的實(shí)現(xiàn)方法
這篇文章主要介紹了Android右滑返回上一個(gè)界面的實(shí)現(xiàn)方法的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下2017-10-10Android drawable微技巧,你不知道的drawable細(xì)節(jié)
今天小編就為大家分享一篇關(guān)于Android drawable微技巧,你不知道的drawable細(xì)節(jié),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10Android仿微信調(diào)用第三方地圖應(yīng)用導(dǎo)航(高德、百度、騰訊)
這篇文章主要介紹了Android仿微信調(diào)用第三方地圖應(yīng)用導(dǎo)航,包括高德、百度、騰訊地圖,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10Android自定義scrollView實(shí)現(xiàn)頂部圖片下拉放大
這篇文章主要為大家詳細(xì)介紹了Android自定義scrollView實(shí)現(xiàn)頂部圖片下拉放大,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12Android開(kāi)發(fā)筆記之:用Enum(枚舉類(lèi)型)取代整數(shù)集的應(yīng)用詳解
本篇文章是對(duì)Android中用Enum(枚舉類(lèi)型)取代整數(shù)集的應(yīng)用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05Android編程實(shí)現(xiàn)網(wǎng)絡(luò)圖片查看器和網(wǎng)頁(yè)源碼查看器實(shí)例
這篇文章主要介紹了Android編程實(shí)現(xiàn)網(wǎng)絡(luò)圖片查看器和網(wǎng)頁(yè)源碼查看器,結(jié)合實(shí)例形式分析了Android針對(duì)網(wǎng)絡(luò)圖片及網(wǎng)頁(yè)的相關(guān)操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-01-01