指令匯B新聞客戶端開發(三) 下拉重新整理

2021-09-22 23:54:44 字數 2135 閱讀 4163

現在我們繼續這個新聞客戶端的開發,今天分享的是下拉重新整理的實現,我們都知道下拉重新整理是乙個應用很常見也很實用的功能。我這個應用是通過拉listview來實現重新整理的,先看一張重新整理的原理圖

從圖中可知,手指移動的距離就是dy。

重新整理分為三種狀態:下拉重新整理、正在重新整理、鬆開重新整理;

定義這三種狀態為:

private static final int state_pull_refresh = 0;// 下拉重新整理

private static final int state_release_refresh = 1;// 鬆開重新整理

private static final int state_refreshing = 2;// 正在重新整理

接下來開始寫我們的**了

初始化頭布局:

private void initheaderview()
初始化腳布局

* 初始化腳布局

*/private void initfooterview()

初始化箭頭的動畫:

/**

* 初始化箭頭動畫

*/private void initarrowanim()

接下來是實現觸控的方法及偏移量的計算:

@override

public boolean ontouchevent(motionevent ev)

if (mcurrrentstate == state_refreshing)

int endy = (int) ev.getrawy();

int dy = endy - starty;// 移動偏移量

if (dy > 0 && getfirstvisibleposition() == 0) else if (padding < 0 && mcurrrentstate != state_pull_refresh)

return true;

}break;

case motionevent.action_up:

starty = -1;// 重置

if (mcurrrentstate == state_release_refresh) else if (mcurrrentstate == state_pull_refresh)

break;

default:

break;

} return super.ontouchevent(ev);

}

重新整理下拉控制項的布局:

private void refreshstate() 

break;

default:

break;

} }

重新整理完成之後我們需要收起這個下拉重新整理的按鈕,額,好吧,總的來說比較複雜了:

/*

* 收起下拉重新整理的控制項

*/public void onrefreshcomplete(boolean success) else

} }

/**

* 獲取當前時間

*/public string getcurrenttime()

private boolean isloadingmore;

@override

public void onscrollstatechanged(abslistview view, int scrollstate)

}} }

在新聞詳情頁裡面要設定一下下拉重新整理監聽:

// 設定下拉重新整理監聽

lvlist.setonrefreshlistener(new onrefreshlistener()

@override

public void onloadmore() else

}});

這裡重新整理功能基本上實現了,這裡只寫出了關鍵**。

指令匯B新聞客戶端開發(三) 下拉重新整理

現在我們繼續這個新聞客戶端的開發,今天分享的是下拉重新整理的實現,我們都知道下拉重新整理是乙個應用很常見也很實用的功能。我這個應用是通過拉listview來實現重新整理的,先看一張重新整理的原理圖 從圖中可知,手指移動的距離就是dy。重新整理分為三種狀態 下拉重新整理 正在重新整理 鬆開重新整理 定...

指令匯B新聞客戶端開發(一) 新手引導頁開發

首先做開發的時候應該有乙個閃屏頁面和新手引導頁,我相信閃屏頁面大家應該都會了,那麼先看到新手引導頁了。我們可以看到這其實是乙個viewpager,我們也可以看到這是3個引導頁,那麼首先來看一下布局檔案 然後我們需要在清單檔案中註冊這個活動 接下來是主介面了 初始化引導頁的小圓點 for int i ...

thrift下C 伺服器和客戶端開發

我用的是c 所以我舉乙個c 的例子,簡單說一下thrift的使用入門。例子描述是這樣的 我們將學生資訊 學號,姓名,性別,年齡 由客戶端傳送到服務端。實現這個例子,我們大致要做以下幾部分事情 1 書寫.thrift檔案 2 生成cpp檔案 3 編寫客戶端 4 編譯cpp檔案並執行 1 書寫.thri...