web-dev-qa-db-ja.com

ProgressDialogスピニングサークル

追加のフレームなしで、このようなProgressDialogを実装します。 Pic

しかし、私はこれを取得しています。どうすれば変更できますか?

enter image description here

ProgressDialogのコードは次のとおりです。前もって感謝します

private ProgressDialog mProgressDialog;
   ............
   mProgressDialog = new ProgressDialog(activity);
   mProgressDialog.setIndeterminate(false);
   mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
   ............
    public class ProgressTask extends AsyncTask <Fragment,Void,Fragment>{
            @Override
            protected void onPreExecute(){
                mProgressDialog.show();
            }

            @Override
            protected Fragment doInBackground(Fragment... arg0) {   
                    //my stuff is here
            }

            @Override
            protected void onPostExecute(Fragment result) {
                   mProgressDialog.dismiss();
            }
        }
55
Andrew Rahimov

レイアウトでProgressDialogからProgressBarに変更するだけです:

res/layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@+id/container">

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="match_parent" >
        //Your content here
     </LinearLayout>

        <ProgressBar
            Android:id="@+id/progressBar"
            style="?android:attr/progressBarStyleLarge"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_centerHorizontal="true"
            Android:layout_centerVertical="true"
            Android:visibility="gone"
            Android:indeterminateDrawable="@drawable/progress" >
        </ProgressBar>
</RelativeLayout>

src/yourPackage/YourActivity.Java

public class YourActivity extends Activity{

private ProgressBar bar;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout);
    bar = (ProgressBar) this.findViewById(R.id.progressBar);
    new ProgressTask().execute();
}
private class ProgressTask extends AsyncTask <Void,Void,Void>{
    @Override
    protected void onPreExecute(){
        bar.setVisibility(View.VISIBLE);
    }

    @Override
    protected Void doInBackground(Void... arg0) {   
           //my stuff is here
    }

    @Override
    protected void onPostExecute(Void result) {
          bar.setVisibility(View.GONE);
    }
}
}

drawable/progress.xmlこれは、デフォルトの色を変更するために使用するカスタムProgressBarです。

<?xml version="1.0" encoding="utf-8"?>

<!-- 
    Duration = 1 means that one rotation will be done in 1 second. leave it.
    If you want to speed up the rotation, increase duration value. 
    in example 1080 shows three times faster revolution. 
    make the value multiply of 360, or the ring animates clunky 
-->
<rotate xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:fromDegrees="0"
    Android:pivotX="50%"
    Android:pivotY="50%"
    Android:duration="1"
    Android:toDegrees="360" >

    <shape
        Android:innerRadiusRatio="3"
        Android:shape="ring"
        Android:thicknessRatio="8"
        Android:useLevel="false" >
        <size
            Android:height="48dip"
            Android:width="48dip" />

        <gradient
            Android:centerColor="@color/color_preloader_center"
            Android:centerY="0.50"
            Android:endColor="@color/color_preloader_end"
            Android:startColor="@color/color_preloader_start"
            Android:type="sweep"
            Android:useLevel="false" />
    </shape>

</rotate>
135
JackTurky

このXMLを配置して、ホイールのみを表示します。

<ProgressBar
    Android:indeterminate="true"
    Android:id="@+id/marker_progress"
    style="?android:attr/progressBarStyle"
    Android:layout_height="50dp" />
16
shym

私はView.INVISIBLEとView.VISIBLEを使用していましたが、ProgressBarは常に表示されずにゆっくり点滅し、View.GONEとView.VISIBLEに切り替わり、完全に動作します

2
jp093121