EasyHero Ответов: 0

Как написать процент прогресса внутри индикатора прогресса


привет, у меня есть круговой индикатор выполнения, у которого есть большой палец, я бы хотел, чтобы процентный текст был написан внутри большого пальца.
Вот что я попробовал

Что я уже пробовал:

это обновляет значение прогресса (развертка большого пальца) на круглой полосе
private void updateProgress(int progress, bool fromUser)
{

    if (progress == INVALID_PROGRESS_VALUE)
    {
        return;
    }

    progress = (progress > mMax) ? mMax : progress;
    progress = (progress < 0) ? 0 : progress;
    mProgress = progress;

    if (mOnSeekArcChangeListener != null)
    {
        mOnSeekArcChangeListener.onProgressChanged(this, progress, fromUser);
    }

    mProgressSweep = (float)progress / mMax * mSweepAngle;

    updateThumbPosition();

    Invalidate();
}


это обновляет положение большого пальца.
private void updateThumbPosition()
        {
            int thumbAngle = (int)(mStartAngle + mProgressSweep + mRotation + 90);
            mThumbXPos = (int)(mArcRadius * Math.Cos(ToRadian(thumbAngle)));
            mThumbYPos = (int)(mArcRadius * Math.Sin(ToRadian(thumbAngle)));
        }


они прекрасно работают
вот в чем заключается моя проблема.
public void setProgressBar(int progress, Context context, SeekArc defkk)
        {
            Drawable d = ContextCompat.GetDrawable(context, Resource.Drawable.seek_arc_control_selector);
            Canvas c = new Canvas();
            Bitmap bitmap = Bitmap.CreateBitmap(d.IntrinsicWidth, d.IntrinsicHeight, Bitmap.Config.Argb8888);
            c.SetBitmap(bitmap);
            d.SetBounds(0, 0, d.IntrinsicWidth, d.IntrinsicHeight);
            d.Draw(c);
            //Bitmap bmp = bitmap.Copy(Bitmap.Config.Argb8888, true);
            string text = progress.ToString() + "%";
            Paint p = new Paint();
            p.SetTypeface(Typeface.CreateFromAsset(context.Assets, "fonts/Brandon_bld.otf"));
            p.TextSize = 18;
            p.Color = Color.White;

            int thumbAngle = (int)(mStartAngle + mProgressSweep + mRotation + 90);
            
            int width = (int)p.MeasureText(text);
            int yPos = (int)((c.Height / 2) - ((p.Descent() + p.Ascent()) / 2));
            c.DrawText(text, (bitmap.Width - width) / 2, yPos, p);
            defkk.SetThumb(new BitmapDrawable(Resources, bitmap));
        }


мне нужно вставить код в функцию выше в updateProgress. так что по мере обновления прогресса он вставляет текст.

0 Ответов