微信顶部导航栏字体颜色

如题所述

底部主要分为图标的渐变,字体颜色的渐变。
图标的颜色的渐变:主要是通过canvas绘制两个不同的图片,控制其图片的alpha透明度,来达到图标的渐变。
字体颜色:字体颜色就很好说了,Animator动画框架应该很熟悉了,在Animator框架中,有一个TypeEven是来计算十六进制色值的,我们可以通过Animator来控制颜色的渐变。

通过代码来说明:
图标:底部一共是有八个图标,一个空白状态,一个是带颜色的状态。
关键代码:
bitmapPaint.setAlpha(255 - currentAlpha );
canvas.drawBitmap(normalBitmap, srcRect , dstRect , bitmapPaint);
bitmapPaint.setAlpha(currentAlpha );
canvas.drawBitmap(pitchBitmap, srcRect , dstRect , bitmapPaint);

没错,就是两个图片同时画,一个画的透明度高 一个低。 不知道微信真正的实现方式是啥样的。哈哈……

再说文字的实现:
既然都把图片给画出来了,就顺带把文字也给画了吧,很简单的代码:
if (text != null ) {
textPaint.setColor(textColor);
canvas.drawText(text, textX, textY, textPaint);
}

多简单。然而字体颜色的变化那,就是通过textColor的变化,在每次绘制的时候,动画改变
Animator,属性动画,Android4.0之后的属性动画是很强大的,任何的动画都可以很方便的做出来。
通过colorAnimator来控制色值的渐变,关键点: colorAnimator.setEvaluator(new ArgbEvaluator());
要告诉Animator这个是色值的渐变,要通过TypeEventor来控制变化。
动画执行之后,不要急着去start,这里面是没有start的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-01-03
{
"window":{
"navigationBarBackgroundColor": "#ffffff",
"navigationBarTextStyle": "black",
"navigationBarTitleText": "微信接口功能演示",
"backgroundColor": "#eeeeee",
"backgroundTextStyle": "light"
}本回答被网友采纳
相似回答