web-dev-qa-db-ja.com

Android Activity Indicator?

Androidでアクティビティインジケーターを表示するにはどうすればよいですか? Android Library given method?がある場合、ない場合は、Androidでアクティビティインジケータを表示するために使用される技術を教えてください。

49
Sanal MS

このようなことをする

ProgressDialog mDialog = new ProgressDialog(getApplicationContext());
            mDialog.setMessage("Please wait...");
            mDialog.setCancelable(false);
            mDialog.show();
54
ingsaurabh

AndroidのiOSアクティビティインジケーターに最も直接相当するものはProgressBarですが、不定に設定されています。ビューをレイアウトにドロップすると、回転するアニメーションが提供されます。

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

これを使用して、ユーザーに何らかのバックグラウンドアクティビティを示すことができます。

91

モーダルProgressDialogを使用せずにアクティビティインジケーターを表示する方法は他にも2つあります。

レイアウトで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を使用して背景画像を記述することができます。これには回転アニメーションが含まれます。

最初にドロアブルを記述します(つまり/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" />

次に、いくつかのビューの背景に設定します

19
Olegas
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
}
4
sudatt

アクティビティインジケータは何もありませんが、進行状況ダイアログとして知られています。プログラマビリティを作成できます。多数のチュートリアルが利用可能です。進捗ダイアログ/ 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タスクが完了したらset visibility gone

<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" />