---這不是分頁演算法,而是頁碼顯示的演算法。
看:
這個是分好頁之後,頁碼比較多的時候,可以用這個演算法實現這種效果
轉載請註明來源,by-潘敬
代碼:
package com.domain;public class PageCode {int pageCount = 0; // 頁碼數量int showCount = 0; // 顯示數量int begin = 0; // 開始位置int end = 0; // 結束位置int index=0;// 索引public PageCode() {}/** * 傳入顯示的頁碼數量和每頁顯示的數量和當前頁的索引 * @param pageCount * @param showCount * @param index */public PageCode(int pageCount, int showCount, int index) {super();this.pageCount = pageCount;this.showCount = showCount;this.index = index>pageCount?pageCount:index;System.out.println("index:"+this.index);//進行計算int number=showCount/2;int last=number%2;if(last!=0){this.begin=this.index-number;this.end=this.index+number;}else{this.begin=this.index-number-1;this.end=this.index+number;}//計算啟示和結束的值 不允許負數和超出//如果begin為負數 就取絕對值給endif(begin<0){end+=Math.abs(begin);begin=end-showCount;}//如果end大於總頁數 就等於總頁數if(end>pageCount){end=pageCount;}//頁碼從1開始begin+=1;//保留第一頁和最後一頁begin+=1;end=end+1<pageCount?end+1:pageCount-1;}public int getPageCount() {return pageCount;}public void setPageCount(int pageCount) {this.pageCount = pageCount;}public int getShowCount() {return showCount;}public void setShowCount(int showCount) {this.showCount = showCount;}public int getBegin() {return begin;}public void setBegin(int begin) {this.begin = begin;}public int getEnd() {return end;}public void setEnd(int end) {this.end = end;}public int getIndex() {return index;}public void setIndex(int index) {this.index = index;}}