Показывать ProgressBar программно при входе пользователя - PullRequest
0 голосов
/ 25 апреля 2019

Я нашел этот класс на Программно центрировать ProgressBar в Android , который отображал бы программный индикатор прогресса, проблема в том, что это пример Xamarin Android Studio, и я пытаюсь преобразовать его в Xamarin для Visual Studio 2017. Это это код, который я успешно преобразовал с теми строками, для которых я не могу найти эквивалент Xamarin VS 2017.

using System.Text;

using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;

namespace OML_Android
{
    class ProgressBarHandler
    {
        private ProgressBar mProgressBar;
        private Context mContext;

        public ProgressBarHandler(Context context)
        {
            mContext = context;

            ViewGroup layout = (ViewGroup)((Activity)context).FindViewById(Android.Resource.Id.Content).RootView;

            mProgressBar = new ProgressBar(context, null, Android.Resource.Attribute.ProgressBarStyleLarge);

            // there is no setIndeterminate method for progressbar
            mProgressBar.setIndeterminate(true);

            // I cannot find an equivilent for LayoutParams
            RelativeLayout.LayoutParams params = RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MatchParent, RelativeLayout.LayoutParams.MatchParent);

            RelativeLayout rl = new RelativeLayout(context);

            // No equivalent for Gravity.CENTER
            rl.SetGravity(Gravity.CENTER);
            rl.AddView(mProgressBar);

            layout.AddView(rl, params);

            hide();
        }

        public void show()
        {
            mProgressBar.Visibility = Android.Views.ViewStates.Visible;
        }

        public void hide()
        {
            mProgressBar.Visibility = Android.Views.ViewStates.Invisible;
        }
    }
}

После того, как это преобразовано и работает, я хочу, чтобы оно перекрывало мое представление входа в систему до тех пор, пока представление не завершит обработку.

1 Ответ

0 голосов
/ 26 апреля 2019

Я помогаю вам преобразовать код Java в C #, там работает GIF.

enter image description here

Есть код.

    class ProgressBarHandler
{
    private ProgressBar mProgressBar;
    private Context mContext;

    public ProgressBarHandler(Context context)
    {
        mContext = context;

        ViewGroup layout = (ViewGroup)((Activity)context).FindViewById(Android.Resource.Id.Content).RootView;

        mProgressBar = new ProgressBar(context, null, Android.Resource.Attribute.ProgressBarStyleLarge);

        // there is no setIndeterminate method for progressbar
      //  mProgressBar.SetIndeterminate(true);
        mProgressBar.Indeterminate = true;
        // I cannot find an equivilent for LayoutParams
        RelativeLayout.LayoutParams layoutparams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MatchParent, RelativeLayout.LayoutParams.MatchParent);

        RelativeLayout rl = new RelativeLayout(context);

        // No equivalent for Gravity.CENTER
        rl.SetGravity(GravityFlags.Center   );
        rl.AddView(mProgressBar);

        layout.AddView(rl, layoutparams);

        hide();
    }

    public void show()
    {
        mProgressBar.Visibility = Android.Views.ViewStates.Visible;
    }

    public void hide()
    {
        mProgressBar.Visibility = Android.Views.ViewStates.Invisible;
    }
}

Вы можете использовать его напрямую, как следующий код в Activity.

var progress= new ProgressBarHandler(this);
progress.show();
...