Индикатор активности Android? - PullRequest
49 голосов
/ 17 февраля 2011

Как я могу показать индикатор активности в Android? Есть ли какой-нибудь Android Library данный метод? Если нет, пожалуйста, дайте мне знать методы, используемые для отображения индикатора активности в Android?.

Ответы [ 5 ]

90 голосов
/ 24 октября 2012

Наиболее прямым эквивалентом индикатора активности iOS в Android является ProgressBar, но он имеет неопределенное значение. Таким образом, вы можете перетащить вид в макет, и он предоставит вам вращающуюся анимацию.

<ProgressBar
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:id="@+id/ctrlActivityIndicator"
    android:indeterminateOnly="true"
    android:keepScreenOn="true"
     />

Вы можете использовать это, чтобы указать некоторую фоновую активность для пользователя.

55 голосов
/ 17 февраля 2011

сделать что-то подобное

ProgressDialog mDialog = new ProgressDialog(getApplicationContext());
            mDialog.setMessage("Please wait...");
            mDialog.setCancelable(false);
            mDialog.show();
19 голосов
/ 17 февраля 2011

Существует два других способа отображения индикатора активности без использования модального ProgressDialog.

Вы можете использовать ImageView в макете и применять к нему анимацию. Ссылка на сайт разработчика .

public void startAnimation() {
  // Create an animation
  RotateAnimation rotation = new RotateAnimation(
      0f,
      360f,
      Animation.RELATIVE_TO_SELF,
      0.5f,
      Animation.RELATIVE_TO_SELF,
      0.5f);
  rotation.setDuration(1200);
  rotation.setInterpolator(new LinearInterpolator());
  rotation.setRepeatMode(Animation.RESTART);
  rotation.setRepeatCount(Animation.INFINITE);

  // and apply it to your imageview
  findViewById(R.id.myActivityIndicator).startAnimation(rotation);
}

Или вы можете использовать xml-drawable для описания фонового изображения, которое будет иметь некоторую вращающуюся анимацию:

Сначала опишите drawable (например, /res/drawable/my-indicator.xml)

<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/spinner_black_76"
    android:pivotX="50%"
    android:pivotY="50%"
    android:framesCount="12"
    android:frameDuration="100" />

Затем установите его на фоне какого-либо вида

4 голосов
/ 29 ноября 2012
public class Mp3cutterActivity extends Activity {

    MP3Class mp3obj = null;
    TextView tv;
    MP3Class mp3classobj = null;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Context thiscontext = this.getApplicationContext();
        mp3classobj = new MP3Class(thiscontext);
        setContentView(R.layout.main);

        Button btn = (Button)findViewById(R.id.startbutton);
        tv = (TextView)findViewById(R.id.textview1);
        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                //show a wait indicator as well as the function that calls walkSdcard

                try {
                    new SearchSdCard(Mp3cutterActivity.this).execute();
                    // copyProtector.doCopyProtection();
                } catch (Exception e) {
                    System.out.println("in search SD card  " + e.getMessage());
                }
            }

            private void domp3stuff() {
                // TODO Auto-generated method stub
            }
        });
    }
}

class SearchSdCard extends AsyncTask<String, Void, Boolean> {

    Context context;    

    public ProgressDialog dialog;

    public SearchSdCard(Activity activity) {
        this.context = activity;
    }

    protected void onPreExecute() {
        dialog = new ProgressDialog(context);
        dialog.setMessage("wait for a moment...");
        dialog.show();
    }

    @Override
    protected Boolean doInBackground(String... params) {
        // TODO Auto-generated method stub
        boolean retval = true;
        mp3classobj.searchSdCard();
        return retval;
    }

    @Override
    protected void onPostExecute(Boolean result) {
        // TODO Auto-generated method stub
        if (dialog.isShowing()) {
            dialog.dismiss();
            tv.setText("mp3 cutter is an app which cuts down a chunk of memory \nfrom your sdcard by \ndeleting the .mp3 files and more \nyou were made a BAKRA :-)");
            if(!result){    
                tv.setText("error occured !!");
            }
        }
    }
    //refer below comment for the MP3class.java file details
}
0 голосов
/ 30 июля 2018

Индикатор активности - это ничто иное, как диалог прогресса.Вы можете создать программируемость. Доступно множество учебных пособий. Поиск, как создать диалоговое окно прогресса / ProgressBar

ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
                progressDialog.setMax(100);
                progressDialog.setMessage("Its loading....");
                progressDialog.setTitle("ProgressDialog bar example");
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
or
progressDialog.setProgressStyle(ProgressDialog.STYLE_CIRCULAR);

, или вы можете создать его с помощью xml, установить видимость visible , как только задача получитполный комплект видимость пропала

<ProgressBar
                android:id="@+id/loading_spinner"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="100dp"
                android:indeterminateTintMode="src_atop"
                android:indeterminateTint="@color/grey"
                android:layout_gravity="center" />
...