現在我們繼續這個新聞客戶端的開發,今天分享的是下拉重新整理的實現,我們都知道下拉重新整理是乙個應用很常見也很實用的功能。我這個應用是通過拉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...