Android: рисовать текст в центре изображения - PullRequest
0 голосов
/ 17 июня 2019

Я хотел бы нарисовать текст на растровом изображении, в центре растрового изображения. Коды следующие:

Код:

public static ImageView getBallwithText(Activity act, String isSpecial, String text, String textColor, int maxWidth, int maxHeight)
    {
        Bitmap jungle01 = null;
        Bitmap jungle02 = null;

        if (isSpecial.equals("special"))
                {
                    jungle02= BitmapFactory.decodeResource(act.getResources(), Constants.ball_template_1[1]).copy(Bitmap.Config.ARGB_8888, true);
                }
                else
                {
                    jungle01= BitmapFactory.decodeResource(act.getResources(), Constants.ball_template_1[0]).copy(Bitmap.Config.ARGB_8888, true);
                }

        Paint paint = new Paint();
        paint.setStyle(Paint.Style.FILL);
        paint.setColor(act.getResources().getColor(android.R.color.white)); 
        paint.setTextSize((maxHeight/3));

        Canvas cc;
        if (isSpecial.equals("special"))
        {
            cc = new Canvas(jungle02);
            cc.drawText(""+text, jungle02.getHeight()/2, jungle02.getHeight()/2, paint);
        }
        else
        {
            cc = new Canvas(jungle01);
            cc.drawText(""+text, jungle01.getHeight()/2, jungle01.getHeight()/2, paint);
        }

        ImageView iv = new ImageView(act);
        LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(maxWidth, maxHeight);
        iv.setLayoutParams(layoutParams);
        iv.setBackgroundColor(Color.TRANSPARENT);
        if (isSpecial.equals("special"))
        {
            iv.setImageBitmap(jungle02);
        }
        else
        {
            iv.setImageBitmap(jungle01);
        }

        iv.setScaleType(ImageView.ScaleType.FIT_XY);
        iv.setMaxHeight(maxHeight);
        iv.setMaxWidth(maxWidth);
        return iv;
    }

Вопрос:

Текст не находится в центре созданного ImageView. Он был расположен в правом верхнем углу. Как сделать текст по центру вместо этого? Спасибо.

1 Ответ

0 голосов
/ 20 июня 2019

это сделало бы текст посередине:

cc = new Canvas(jungle02);
int xPos = (cc.getWidth() / 2);
int yPos = (int) ((cc.getHeight() / 2) - ((paint.descent() + paint.ascent()) / 2)) ;
cc.drawText(""+text, xPos, yPos, paint);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...