仿百度、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;
}
}
备注:
别的代码没贴,如需要大家可以给我留言