Android實(shí)現(xiàn)listview滑動(dòng)時(shí)漸隱漸現(xiàn)頂部欄實(shí)例代碼
我在開發(fā)的時(shí)候遇到了這樣的需求,就是在listview的滑動(dòng)中,需要對(duì)頂部的欄目由透明慢慢的變?yōu)椴煌该鞯臓顟B(tài),就是以下的效果
最先開始的時(shí)候想的很簡(jiǎn)單,無非就是監(jiān)聽listview的滑動(dòng)距離,然后根據(jù)距離算出透明度的比值,就可以了,但是事實(shí)上呢也的確是這樣做的
只是在獲取listview的滑動(dòng)距離上可能沒法直接獲取,需要?jiǎng)討B(tài)的去計(jì)算
下面貼出全部代碼吧,不想碼字了,最近感冒了,腦袋暈乎乎的,還疼,代碼更直觀一些
private void initListener() { lvList.setOnScrollChangeListener(new View.OnScrollChangeListener() { @Override public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) { } }); lvList.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { // Logger.myLog("firstVisibleItem=" + firstVisibleItem + "visibleItemCount=" + visibleItemCount + "totalItemCount=" + totalItemCount); Logger.myLog(getScroolY()+"top=" + gettop()); tvText.setAlpha(getAlphaFloat(getScroolY())); } }); } /** * 獲取漸變透明值 * @param dis * @return */ public float getAlphaFloat(int dis){ int step = 5000; if(dis == 0){ return 0.0f; } if(dis < step){ return (float)(dis * (1.0/step)); }else{ return 1.0f; } } /** * 獲取上滑的距離 * @return distance */ public int getScroolY(){ View c = lvList.getChildAt(0); if(null == c){ return 0; } int firstVisiblePosition = lvList.getFirstVisiblePosition(); int top = c.getTop(); /** * 聲明一下,這里測(cè)試得到的top值始終是listview條目中顯示的第一條距離頂部的距離, * 而這個(gè)在坐標(biāo)中的表示是一個(gè)負(fù)數(shù),所以需要對(duì)其取一個(gè)絕對(duì)值 */ return firstVisiblePosition * c.getHeight() + Math.abs(top); } /** * 獲取首條距離頂部的高度 * @return distance top */ private int gettop(){ View c = lvList.getChildAt(0); if(null == c){ return 0; } return c.getTop(); }
以上所述是小編給大家介紹的Android實(shí)現(xiàn)listview滑動(dòng)時(shí)漸隱漸現(xiàn)頂部欄實(shí)例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Android Socket 線程連接openwrt與arduino單片機(jī)串口雙向通信的實(shí)例解析
這篇文章主要介紹了Android Socket 線程連接openwrt與arduino單片機(jī)串口雙向通信的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-11-11Android應(yīng)用關(guān)閉的情況以及識(shí)別方法詳解
對(duì)于現(xiàn)在的安卓手機(jī)而言,很多功能都是在逐步完善的,這篇文章主要給大家介紹了關(guān)于Android應(yīng)用關(guān)閉的情況以及識(shí)別的相關(guān)資料,文章通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06Android開發(fā)教程之shape和selector的結(jié)合使用
shape和selector是Android UI設(shè)計(jì)中經(jīng)常用到的,比如我們要自定義一個(gè)圓角Button,點(diǎn)擊Button有些效果的變化,就要用到shape和selector,接下來通過本文給大家介紹Android開發(fā)教程之shape和selector的結(jié)合使用,感興趣的朋友一起學(xué)習(xí)吧2016-01-01詳解Android中Activity的啟動(dòng)模式及應(yīng)用場(chǎng)景
今天給大家介紹下安卓開發(fā)中不得不涉及的Activity啟動(dòng)模式及應(yīng)用場(chǎng)景,Activity一共有四種啟動(dòng)模式,分別是Standard模式、SingleTop模式、SingleTask模式以及SingleInstance模式,,需要的朋友可以參考下2023-09-09基于Android中Webview使用自定義的javascript進(jìn)行回調(diào)的問題詳解
本篇文章對(duì)Android中Webview使用自定義的javascript進(jìn)行回調(diào)的問題進(jìn)行了詳細(xì)的分析介紹。需要的朋友參考下2013-05-05Android填坑系列:在小米系列等機(jī)型上放開定位權(quán)限后的定位請(qǐng)求彈框示例
本文詳細(xì)介紹了在小米系列等機(jī)型上放開定位權(quán)限后的定位請(qǐng)求彈框示例,例如在應(yīng)用軟件中提示顯示定位服務(wù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2016-11-11RecyclerView實(shí)現(xiàn)側(cè)滑拖拽功能
這篇文章主要為大家詳細(xì)介紹了RecyclerView實(shí)現(xiàn)側(cè)滑拖拽功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07Android開發(fā)之圖形圖像與動(dòng)畫(一)Paint和Canvas類學(xué)習(xí)
Paint類代表畫筆,用來描述圖形的顏色和風(fēng)格,如線寬,顏色,透明度和填充效果等信息;Canvas類代表畫布,通過該類提供的構(gòu)造方法,可以繪制各種圖形;感興趣的朋友可以了解下啊,希望本文對(duì)你有所幫助2013-01-01Android開發(fā)中通過手機(jī)號(hào)+短信驗(yàn)證碼登錄的實(shí)例代碼
最近在開發(fā)一個(gè)android的項(xiàng)目,需要通過獲取手機(jī)驗(yàn)證碼來完成登錄功能,接下來通過實(shí)例代碼給大家分享手機(jī)號(hào)+短信驗(yàn)證碼登錄的實(shí)現(xiàn)方法,需要的的朋友參考下吧2017-05-05