Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Android 分页Title栏滑块效果--ActionBar(模拟网易 腾讯等动态效果)

Android 分页Title栏滑块效果--ActionBar(模拟网易 腾讯等动态效果) 首先我们看几张客户端试图:前两个是网易的,后两个是腾讯的,(注意看上部title分页,当你点击不仅实现了分页,而且背景bar会跟着滑动,这个叫aciotnbar,sdk3.0以后就有了,)看着比一般单存改变背景的效果好看多了.代码片段:用于描绘.
  1. @Override  
  2.     protected void onDraw(Canvas canvas) {  
  3.         super.onDraw(canvas);  
  4.         canvas.drawColor(Color.WHITE);  
  5.         paint.setColor(Color.RED);  
  6.         // 如果当前curRectF=null,也就是第一次访问,则默认为draw第一个bar   
  7.         if (curRectF == null)  
  8.             curRectF = new RectF(tv1.getLeft() + space_x, tv1.getTop()  
  9.                     - space_y, tv1.getRight() - space_x, tv1.getBottom()  
  10.                     + space_y);  
  11.         // 第一次方位tarRectF=null,默认为draw   
  12.         if (tarRectF == null)  
  13.             tarRectF = new RectF(tv1.getLeft() + space_x, tv1.getTop()  
  14.                     - space_y, tv1.getRight() - space_x, tv1.getBottom()  
  15.                     + space_y);  
  16.         // 这个时候需要不停的更新   
  17.         if (Math.abs(curRectF.left - tarRectF.left) < step) {  
  18.             curRectF.left = tarRectF.left;  
  19.             curRectF.right = tarRectF.right;  
  20.         }  
  21.         if (curRectF.left > tarRectF.left) {  
  22.             curRectF.left -= step;  
  23.             curRectF.right -= step;  
  24.             invalidate();// 继续刷新,从而实现滑动效果,每次step32.   
  25.         } else if (curRectF.left < tarRectF.left) {  
  26.             curRectF.left += step;  
  27.             curRectF.right += step;  
  28.             invalidate();  
  29.         }  
  30.         canvas.drawRoundRect(curRectF, 55, paint);  
  31.     }  
用于监听点击bar事件.
  1. @Override  
  2.     public void onClick(View v) {  
  3.         tarRectF.left = v.getLeft() + space_x;  
  4.         tarRectF.right = v.getRight() - space_x;  
  5.         tarRectF.top = v.getTop() - space_y;  
  6.         tarRectF.bottom = v.getBottom() + space_y;  
  7.         invalidate();// 刷新   
  8.     }