Android 分頁Title欄滑塊效果--ActionBar(模擬網易 騰訊等動態效果)
首先我們看幾張客戶端試圖:
前兩個是網易的,後兩個是騰訊的,(注意看上部title分頁,當你點擊不僅實現了分頁,而且背景bar會跟著滑動,這個叫aciotnbar,sdk3.0以後就有了,)看著比一般單存改變背景的效果好看多了.
代碼片段:
用於描繪.
- @Override
- protected void onDraw(Canvas canvas) {
- super.onDraw(canvas);
- canvas.drawColor(Color.WHITE);
- paint.setColor(Color.RED);
- // 如果當前curRectF=null,也就是第一次訪問,則默認為draw第一個bar
- if (curRectF == null)
- curRectF = new RectF(tv1.getLeft() + space_x, tv1.getTop()
- - space_y, tv1.getRight() - space_x, tv1.getBottom()
- + space_y);
- // 第一次方位tarRectF=null,默認為draw
- if (tarRectF == null)
- tarRectF = new RectF(tv1.getLeft() + space_x, tv1.getTop()
- - space_y, tv1.getRight() - space_x, tv1.getBottom()
- + space_y);
- // 這個時候需要不停的更新
- if (Math.abs(curRectF.left - tarRectF.left) < step) {
- curRectF.left = tarRectF.left;
- curRectF.right = tarRectF.right;
- }
- if (curRectF.left > tarRectF.left) {
- curRectF.left -= step;
- curRectF.right -= step;
- invalidate();// 繼續刷新,從而實現滑動效果,每次step32.
- } else if (curRectF.left < tarRectF.left) {
- curRectF.left += step;
- curRectF.right += step;
- invalidate();
- }
- canvas.drawRoundRect(curRectF, 5, 5, paint);
- }
用於監聽點擊bar事件.
- @Override
- public void onClick(View v) {
- tarRectF.left = v.getLeft() + space_x;
- tarRectF.right = v.getRight() - space_x;
- tarRectF.top = v.getTop() - space_y;
- tarRectF.bottom = v.getBottom() + space_y;
- invalidate();// 刷新
- }