Android實現(xiàn)listview滑動時漸隱漸現(xiàn)頂部欄實例代碼
我在開發(fā)的時候遇到了這樣的需求,就是在listview的滑動中,需要對頂部的欄目由透明慢慢的變?yōu)椴煌该鞯臓顟B(tài),就是以下的效果

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

