---这不是分页算法,而是页码显示的算法。
看截图:
这个是分好页之后,页码比较多的时候,可以用这个算法实现这种效果
转载请注明来源,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为负数 就取绝对值给end
if(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;
}
}