仿百度、google分頁的實現
前段時間寫了個仿百度、google分頁,現在和大家分享一下。大家有什麼問題可以和我交流。
首先我們分析一下google的分頁情況:(百度也是一樣的,這裏只寫google的情況)
下面給出大家一段java代碼,好讓大家往下容易理解。
// 當前頁
private int nowpage;
// 索引的sum值 代表的是 google頁面中最大顯示頁數
private int sumindex = 20;
// 開始的索引值
private int startindex;
// 結束的索引值
private int endindex;
當前頁是1 顯示的是: 1 2 3 4 5 6 7 8 9 10
當前頁是2 起始值1 未頁 11
當前頁是3 起始值1 未頁 12
當前頁是4 起始值1 未頁 13
以此類推:...
從上圖得知:
當前頁小於等於11時 起始頁爲1 末頁=當前頁+9
startindex=1;
endindex=nowpage+9;
注意:
求和值後的endindex 如果endindex大於總頁數。 那麼: this.endindex=this.countpage;
實現方式如下:
if (this.nowpage <= sumindex/2+1) {
this.startindex = 1;
this.endindex = this.nowpage + sumindex/2-1
//當結束的索引值>總頁數
if(this.endindex>this.countpage){
this.endindex=this.countpage;
}
}
當前頁大於11時:
當前頁是12 起始值是2 未頁 21
當前頁是13 起始值是3 未頁 22
當前頁是14 起始值是4 未頁 23
從上圖得知 當前頁大於11時
1.當前頁與尾頁的差少9 開始索引與當前頁 差10
endindex=nowpage+sumindex/2-1;
startindex=nowapge-sumindex/2;
注意:求和值後的endindex,如果endindex大於總頁數
this.endindex=this.countpage;
this.startindex=this.countpage-sumindex/-1;
實現代碼如下:
if(this.nowpage>sumindex/2+1){
this.startindex=this.nowpage-sumindex/2; this.endindex=this.nowpage+sumindex/2-1; //當結束的索引值>總頁數
//當結束的索引值>索引的sum值 代表的是 google頁面中最大顯示頁數
if(this.endindex>this.countpage&&this.endindex>this.sumindex){ this.endindex=this.countpage; this.startindex=this.countpage-sumindex-1; }
//當結束的索引值<索引的sum值 代表的是 google頁面中最大顯示頁數
if(this.endindex<this.sumindex){
this.startindex = 1;
this.endindex = this.countpage;
}
}
整合後的代碼如下:
// 計算索引位置
if (this.nowpage <= sumindex/2+1) {
this.startindex = 1;
this.endindex = this.nowpage + sumindex/2-1;
//當結束的索引值>總頁數
if(this.endindex>this.countpage){
this.endindex=this.countpage;
}
}else if(this.nowpage>sumindex/2+1){
this.startindex=this.nowpage-sumindex/2;
this.endindex=this.nowpage+sumindex/2-1;
//當結束的索引值>總頁數
//當結束的索引值>索引的sum值 代表的是 google頁面中最大顯示頁數
if
(this.endindex>this.countpage&&this.endindex>this.sumindex){
this.endindex=this.countpage;
this.startindex=this.countpage-sumindex-1;
}
//當結束的索引值<索引的sum值 代表的是 google頁面中最大顯示頁數
if(this.endindex<this.sumindex){
this.startindex = 1;
this.endindex = this.countpage;
}
}
備註:
別的代碼沒貼,如需要大家可以給我留言