前段时间写了个仿百度、google分页,现在和大家分享一下。大家有什么问题可以和我交流。
首先我们分析一下google的分页情况:(百度也是一样的,这里只写google的情况)
下面给出大家一段java代码,好让大家往下容易理解。
- // 当前页
- private int nowpage;
- // 索引的sum值 代表的是 google页面中最大显示页数
- private int sumindex = 20;
- // 开始的索引值
- private int startindex;
- // 结束的索引值
- private int endindex;
// 当前页 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;
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;
- }
- }
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=nowpage+sumindex/2-1; startindex=nowapge-sumindex/2;
注意:求和值后的endindex,如果endindex大于总页数
- this.endindex=this.countpage;
- this.startindex=this.countpage-sumindex/-1;
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=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;
- }
- }