Invertir el color de la pintura según el fondo

Estoy escribiendo una barra de progreso personalizada. Me gustaría crear un efecto similar a

donde el color del texto "50%" cambia dinámicamente a blanco mientras la barra negra avanza hacia la derecha. ¿Es eso posible usar soluciones "simples"? Busqué PorterDuff, ColorFilters, xFermodes, nada parece funcionar. ¿Algunas ideas? ATM mi código se ve así:

    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);

¿Hay alguna forma de modificarpBlackTxtM pintar para cambiar el color en función de lo que se dibuja debajo 'en el lienzo'?

Respuestas a la pregunta(1)

Su respuesta a la pregunta