Skocz do zawartości
etet100

Paint.setTextSize - różnica między android 4 a 5

    Rekomendowane odpowiedzi

    Witam. W draw mojego obiektu dziedziczącego z View mam:

     

            super.draw(canvas);
    
            canvas.scale(10,10);
            Paint p = new Paint();
            p.setLinearText(true);
            p.setAntiAlias(true);
            p.setColor(Color.RED);
            int i;
            float s = 0;
            for (i=0; i<100; i++) {
                p.setTextSize(s);
                s += 0.3f;
                canvas.drawText("ABC123",1, i*5, p);
            }
            canvas.restore();

    i jeszcze

    setLayerType(View.LAYER_TYPE_SOFTWARE, null);

    Jak widać canvas mam powiększony 10 razy. I teraz rysuje teksty o rozmiarze rosnącym co 0.3f. Na androidach 4 (4.1, 4.4) nie ma problemu - każdy kolejny tekst jest odpowiednio większy i wszystko wygląda dobrze. Ale na 5.x jest już problem. Rozmiary o wartościach niecałkowitych powodują, że znaki się powiększają ale cały tekst nie rośnie na szerokość. Czyli teksty np 1.1, 1.3, 1.6, 1.9 są takie same na szerokość ale coraz większe znaki coraz bardziej na siebie nachodzą. Na screenach jakoś tam to widać. Są niestety zrobione przy różnych rozdzielczościach ekranów.

     

    Czy ktoś ma pomysł co jest nie tak ? To co wkleiłem to praktycznie cały kod. Zrobiłem specjalnie testową aplikacje żeby wykluczyć problemy w innych miejscach.

     

    Widać jeszcze problem dotyczący rozmiarów poniżej 1. Na androidach 4 jest ok a na 5 tekst jest mocno rozjechany na szerokość.

     

    Screenshot_1497523089.png

    Screenshot_1497523037.png

    Edytowane przez etet100

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Najwyraźniej zmieniony został sposób zaokrąglania tych rozmiarów. Żeby wyszło to co chciałem musiałem powiększyć tekst (np 10 razy) a potem pomniejszyć canvas tyle samo razy. Nie wiem jaki to ma wpływ na wydajność (pewnie spory) ale działa bardzo dobrze. 

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Ostatnio przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.

    x