为了账号安全,请及时绑定邮箱和手机立即绑定

字体颜色变不了

切换字体颜色的代码
private int evaluate(float progress, int startValue, int endValue) {
    int startA = (startValue >> 24) & 0xff;
    int startR = (startValue >> 16) & 0xff;
    int startG = (startValue >> 8) & 0xff;
    int startB = startValue & 0xff;

    int endA = (endValue >> 24) & 0xff;
    int endR = (endValue >> 16) & 0xff;
    int endG = (endValue >> 8) & 0xff;
    int endB = endValue & 0xff;

    return (int)((startA + (int) progress * (endA - startA))) << 24 |
            (int)((startR + (int) progress * (endR - startR))) << 16 |
            (int)((startG + (int) progress * (endG - startG))) << 8 |
            (int) ((startB + (int) progress * (endB - startB)));
}

https://img1.sycdn.imooc.com//5cbe64ea0001f96a09210532.jpg


https://img1.sycdn.imooc.com//5cbe652d00012cf010050505.jpg

if (positionOffset > 0) {
    TabView left = mTabs.get(position);
    TabView right = mTabs.get(position + 1);
    left.setProgress((1 - positionOffset));
    right.setProgress(positionOffset);
}


https://img1.sycdn.imooc.com//5cbe659a0001b76608641152.jpg

正在回答

2 回答

private int evaluate(float fraction, int startValue, int endValue) {
    int startInt = (Integer) startValue;
    float startA = ((startInt >> 24) & 0xff) / 255.0f;
    float startR = ((startInt >> 16) & 0xff) / 255.0f;
    float startG = ((startInt >>  8) & 0xff) / 255.0f;
    float startB = ( startInt        & 0xff) / 255.0f;

    int endInt = (Integer) endValue;
    float endA = ((endInt >> 24) & 0xff) / 255.0f;
    float endR = ((endInt >> 16) & 0xff) / 255.0f;
    float endG = ((endInt >>  8) & 0xff) / 255.0f;
    float endB = ( endInt        & 0xff) / 255.0f;

    // convert from sRGB to linear
    startR = (float) Math.pow(startR, 2.2);
    startG = (float) Math.pow(startG, 2.2);
    startB = (float) Math.pow(startB, 2.2);

    endR = (float) Math.pow(endR, 2.2);
    endG = (float) Math.pow(endG, 2.2);
    endB = (float) Math.pow(endB, 2.2);

    // compute the interpolated color in linear space
    float a = startA + fraction * (endA - startA);
    float r = startR + fraction * (endR - startR);
    float g = startG + fraction * (endG - startG);
    float b = startB + fraction * (endB - startB);

    // convert back to sRGB in the [0..255] range
    a = a * 255.0f;
    r = (float) Math.pow(r, 1.0 / 2.2) * 255.0f;
    g = (float) Math.pow(g, 1.0 / 2.2) * 255.0f;
    b = (float) Math.pow(b, 1.0 / 2.2) * 255.0f;

    return Math.round(a) << 24 | Math.round(r) << 16 | Math.round(g) << 8 | Math.round(b);
}


1 回复 有任何疑惑可以回复我~

没有看出来哪里有问题

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

字体颜色变不了

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信