自定義進度條動畫(背景跟隨變化)

2021-07-12 05:06:08 字數 2231 閱讀 4903

公司有乙個這樣的需求:

需求描述如下:長按右面的接受按鈕,左側的進度向右增加,進度條覆蓋的地方跟沒覆蓋前的顏色是不一樣的,比如進度條覆蓋前的文字是黑色,覆蓋後的文字是白色。釋放按鈕進度條會回滾。

一開始想用屬性動畫來解決,不料沒成功,我是用屬性動畫做不出來,有高手希望指點一下。

我這裡是用自定義view來實現,主要思路如下:

1:在draw方法畫兩份除了顏色都一樣的檢視,乙份是覆蓋進度條的,乙份是沒覆蓋進度條的

2:根據進度條的位置,通過切割畫布來決定畫布的哪一部分顯示有進度條的檢視,另一部分顯示沒有進度條的部分。

這邊沒有美工,實現簡單的效果如下:

看懂思路後具體的**很簡單(有興趣的可以在上面的基礎改一下,文子間距,背景什麼的弄好看點):

package com.example.chttest;

import android.content.context;

import android.graphics.bitmap;

import android.graphics.bitmap.config;

import android.graphics.bitmapfactory;

import android.graphics.canvas;

import android.graphics.color;

import android.graphics.colormatrix;

import android.graphics.colormatrixcolorfilter;

import android.graphics.paint;

import android.graphics.paint.fontmetrics;

import android.graphics.paint.style;

import android.graphics.path;

import android.util.attributeset;

import android.util.log;

import android.view.keyevent;

import android.view.motionevent;

import android.view.view;

/** * @author haitao

*/public class myprogressboard extends view

public myprogressboard(context context, attributeset attrs, int defstyleattr)

public myprogressboard(context context, attributeset attrs)

}private runnable runbale = new runnable()

} catch (exception e)

}else

try

} catch (exception e) }}

} };

private runnable mlongclick = new runnable()

}; @override

protected void ondraw(final canvas cv)

/***//**

* 去色,返回灰度

* @param bmporiginal 傳入的

* @return 去色後的

*/public static bitmap tograyscale(bitmap bmporiginal)

@override

public boolean dispatchtouchevent(motionevent event)

break;

case motionevent.action_up:

isdown = false;

removecallbacks(mlongclick);

break;

default:

break;

} return super.dispatchtouchevent(event);}}

自定義進度條

自定義進度條 1 繪製底色 灰色 2 繪製進度 藍色 3 繪製最大的進度 純藍色 rectf rf new rectf 0,0,mwidth,mheight 繪製圓角矩形,背景色為畫筆顏色 mpaint.setcolor color.rgb 220,220,220 canvas.drawroundr...

自定義圓形進度條,繪製進度條

inte ce hmprogressview property nonatomic,weak uilabel label end implementation hmprogressview self drawrect self.bounds 重新繪製 在view上做乙個重繪的標記,當下次螢幕重新整理...

自定義 ProgressBar 進度條 自定義樣式

今天學習給progressbar換個樣式,先看效果圖 c h,e d8 z f j x 原理 在xml檔案中分別定義進度條背景 第一進度顏色 第二進度顏色,然後在progressbar的android progressdrawable屬性應用即可。6 j a7 c h b k h q y g s d...