仿百度、google分页的实现

       前段时间写了个仿百度、google分页,现在和大家分享一下。大家有什么问题可以和我交流。

    首先我们分析一下google的分页情况:(百度也是一样的,这里只写google的情况)

 

    下面给出大家一段java代码,好让大家往下容易理解。

Java代码 复制代码  收藏代码
  1. // 当前页   
  2. private int nowpage;   
  3. // 索引的sum值 代表的是 google页面中最大显示页数   
  4. private int sumindex = 20;   
  5. // 开始的索引值   
  6. private int startindex;   
  7. // 结束的索引值   
  8. 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

Java代码 复制代码  收藏代码
  1. startindex=1;   
  2. endindex=nowpage+9;  

startindex=1; endindex=nowpage+9;

 

 注意:

      求和值后的endindex 如果endindex大于总页数。 那么: this.endindex=this.countpage;

 

 实现方式如下:

Java代码 复制代码  收藏代码
  1. if (this.nowpage <= sumindex/2+1) {   
  2.     this.startindex = 1;   
  3.     this.endindex = this.nowpage + sumindex/2-1  
  4.                
  5.     //当结束的索引值>总页数   
  6.     if(this.endindex>this.countpage){   
  7.         this.endindex=this.countpage;   
  8.     }   
  9.                
  10. }  

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 

Java代码 复制代码  收藏代码
  1. endindex=nowpage+sumindex/2-1;   
  2. startindex=nowapge-sumindex/2;    

endindex=nowpage+sumindex/2-1; startindex=nowapge-sumindex/2;

 

   注意:求和值后的endindex,如果endindex大于总页数

Java代码 复制代码  收藏代码
  1. this.endindex=this.countpage;   
  2. this.startindex=this.countpage-sumindex/-1;  

this.endindex=this.countpage; this.startindex=this.countpage-sumindex/-1;

 

 实现代码如下:

Java代码 复制代码  收藏代码
  1. if(this.nowpage>sumindex/2+1){   
  2.     this.startindex=this.nowpage-sumindex/2;        this.endindex=this.nowpage+sumindex/2-1;        //当结束的索引值>总页数   
  3.     //当结束的索引值>索引的sum值 代表的是 google页面中最大显示页数   
  4.     if(this.endindex>this.countpage&&this.endindex>this.sumindex){    this.endindex=this.countpage;           this.startindex=this.countpage-sumindex-1;      }   
  5.     //当结束的索引值<索引的sum值 代表的是 google页面中最大显示页数   
  6.     if(this.endindex<this.sumindex){   
  7.             this.startindex = 1;   
  8.             this.endindex = this.countpage;   
  9.     }   
  10. }  

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; } }

 

 

 整合后的代码如下:

Java代码 复制代码  收藏代码
  1. // 计算索引位置   
  2. if (this.nowpage <= sumindex/2+1) {   
  3.     this.startindex = 1;   
  4.     this.endindex = this.nowpage + sumindex/2-1;   
  5.                
  6.     //当结束的索引值>总页数   
  7.     if(this.endindex>this.countpage){   
  8.         this.endindex=this.countpage;   
  9.     }   
  10. }else if(this.nowpage>sumindex/2+1){   
  11.     this.startindex=this.nowpage-sumindex/2;   
  12.             this.endindex=this.nowpage+sumindex/2-1;       
  13.     //当结束的索引值>总页数   
  14.     //当结束的索引值>索引的sum值 代表的是 google页面中最大显示页数   
  15.     if  
  16. (this.endindex>this.countpage&&this.endindex>this.sumindex){   
  17.                 this.endindex=this.countpage;   
  18.                 this.startindex=this.countpage-sumindex-1;   
  19.     }   
  20.     //当结束的索引值<索引的sum值 代表的是 google页面中最大显示页数   
  21.     if(this.endindex<this.sumindex){   
  22.     this.startindex = 1;   
  23.     this.endindex = this.countpage;   
  24.                 }   
  25. }  

猜你喜欢

转载自svsesunyuan.iteye.com/blog/1026040