Androidでアクティビティインジケーターを表示するにはどうすればよいですか? Android Library given method?がある場合、ない場合は、Androidでアクティビティインジケータを表示するために使用される技術を教えてください。
このようなことをする
ProgressDialog mDialog = new ProgressDialog(getApplicationContext());
mDialog.setMessage("Please wait...");
mDialog.setCancelable(false);
mDialog.show();
AndroidのiOSアクティビティインジケーターに最も直接相当するものはProgressBarですが、不定に設定されています。ビューをレイアウトにドロップすると、回転するアニメーションが提供されます。
<ProgressBar
Android:layout_height="wrap_content"
Android:layout_width="wrap_content"
Android:id="@+id/ctrlActivityIndicator"
Android:indeterminateOnly="true"
Android:keepScreenOn="true"
/>
これを使用して、ユーザーに何らかのバックグラウンドアクティビティを示すことができます。
モーダル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" />
次に、いくつかのビューの背景に設定します
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
}
アクティビティインジケータは何もありませんが、進行状況ダイアログとして知られています。プログラマビリティを作成できます。多数のチュートリアルが利用可能です。進捗ダイアログ/ 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" />