Inverter a cor da tinta com base no plano de fundo

Estou escrevendo uma barra de progresso personalizada. Eu gostaria de criar um efeito semelhante ao

onde a cor do texto "50%" muda dinamicamente para branco enquanto a barra preta avança para a direita. Isso é possível usando soluções "simples"? Procurei PorterDuff, ColorFilters, xFermodes, nada parece funcionar. Alguma ideia? ATM, meu código fica assim:

    Rect r = new Rect(1, 1, m_width-1, m_height-1);
    canvas.drawRect(r, pWhiteFill);
    r = new Rect(1, 1, progressWidth, m_height-1);
    canvas.drawRect(r, pBlackFill);     
    canvas.drawText(String.valueOf(progress)+"%", m_width/2, m_height/2, pBlackTxtM);

Existe uma maneira de modificarpBlackTxtM pintar para mudar de cor com base no que está desenhado abaixo 'na tela'?

questionAnswers(1)

yourAnswerToTheQuestion