LoginSignup
19
20

More than 5 years have passed since last update.

ぱぱっと自作ローディングダイアログ

Last updated at Posted at 2015-02-03

完成予定のダイアログ

こんな感じです!
Screenshot_2015-02-03-14-59-35.png

ActivityからDialogのインスタンスを取得出来るクラスを作成

public class Loading {
    // Dialogを返す
    public static Dialog getDialog(Activity activity){
        Dialog dialog = new Dialog(activity);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
        dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        dialog.setContentView(R.layout.simple_progress);
        return dialog;
    }
}

R.layout.simple_progressの中身(res/layout/simple_progress.xml)
ProgressBarを使い、くるくる回るやつを表示
※このくるくるのデザインは、OSや指定しているテーマに依存します。

<?xml version="1.0" encoding="utf-8"?>
<ProgressBar xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/simple_progress_bar"
    android:layout_width="128dp"
    android:layout_height="128dp"
    android:layout_gravity="center"
    android:background="@drawable/simple_progress_frame"
    android:gravity="center" >

</ProgressBar>

@drawable/simple_progress_frameの中身(res/drawable/simple_progress_frame)
Shapeを使いダイアログの四隅の角丸を指定

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#80808080"/>
    <corners android:radius="16dp"/>
    <padding android:left="4dp" android:top="4dp" android:right="4dp" android:bottom="4dp" />
    <stroke android:width="0dp" android:color="#a0808080" />
</shape>

Activityからの呼び出し

public class MainActivity extends FragmentActivity {    
    private Dialog mDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
        mDialog = Loading.getDialog(MainActivity.this);
        mDialog.show();
    }

    @Override
    protected void onPause(){
        super.onPause();
        if(mDialog != null && mDialog.isShowing()){
            mDialog.dismiss();
        }
    }
}

これで色んなActivityから呼べるようになります!!
mDialog.dismiss();を忘れずにー

19
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
20