P149 TimerでProgressDialogを操作する

Android開発に関するメモランダム

カテゴリー: Android Studio ではじめる Android プログラミング入門 第3版 Android Studio 2対応  閲覧数:351 配信日:2018-05-07 12:17


デモ内容


・java.util.Timerを利用して毎秒10ずつProgressDialogの値を増加
・最大値(100)になったら、ダイアログを終了

コード


▼MainActivity.java
package work.w4c.android0.androidtoast20180420;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

import java.util.Timer;
import java.util.TimerTask;

public class MainActivity extends AppCompatActivity {
   static final String MENU_ITEM = "menu item";

   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
   }

   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
       getMenuInflater().inflate(R.menu.menu_main, menu);
       menu.add(MENU_ITEM);
       return true;
   }

   @Override
   public boolean onOptionsItemSelected(MenuItem item) {
       if (MENU_ITEM.equals(item.getTitle())){
           //Toast toast = Toast.makeText(this,"Hello, Toast!!",
           //        Toast.LENGTH_LONG);
           //toast.show();

           //AlertDialog.Builder builder = new AlertDialog.Builder(this);
           //builder.setTitle("Message");
           //builder.setMessage("これがアラートダイアログの表示です。");
           //builder.show();

           /*
           final Activity activity = this;
           AlertDialog.Builder builder = new AlertDialog.Builder(this);
           builder.setTitle("Message");
           builder.setMessage("これがアラートダイアログの表示です。");
           builder.setPositiveButton("わかった",
                   new DialogInterface.OnClickListener() {
                       @Override
                       public void onClick(DialogInterface dialogInterface, int i) {
                           Toast toast = Toast.makeText(activity , "ダイアログを閉じました。",
                                   Toast.LENGTH_LONG);
                           toast.show();
                       }
                   });
           builder.setNegativeButton("キャンセル",
                   new DialogInterface.OnClickListener() {
                       @Override
                       public void onClick(DialogInterface dialogInterface, int i) {
                           Toast toast = Toast.makeText(activity , "キャンセルしました。",
                                   Toast.LENGTH_LONG);
                           toast.show();
                       }
                   });
           builder.show();
           */

           /*
           final Activity activity = this;
           AlertDialog.Builder builder = new AlertDialog.Builder(this);
           builder.setTitle("選択してください");
           final String[] items = {"ONE", "TWO", "THREE"};
           builder.setItems((CharSequence[])items,
                   new DialogInterface.OnClickListener() {
                       @Override
                       public void onClick(DialogInterface dialogInterface, int i) {
                           Toast toast = Toast.makeText(activity, items[i] + "を選択しました。",
                                   Toast.LENGTH_LONG);
                           toast.show();
                       }
                   });
           builder.show();
           */

           final Timer timer = new Timer();
           final ProgressDialog dlog = new ProgressDialog(this);
           dlog.setTitle("経過表示");
           dlog.setMax(100);
           dlog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
           dlog.setOnCancelListener(new DialogInterface.OnCancelListener() {
               @Override
               public void onCancel(DialogInterface dialogInterface) {
                   timer.cancel();
               }
           });
           dlog.show();
           TimerTask task = new TimerTask() {
               @Override
               public void run() {
                   dlog.incrementProgressBy(10);
                   if (dlog.getProgress() >= dlog.getMax()){
                       dlog.dismiss();
                       timer.cancel();
                   }
               }
           };
           timer.schedule(task,1000,1000);

       }
       return super.onOptionsItemSelected(item);
   }
}


週間人気ページランキング / 2-16 → 2-22
順位 ページタイトル抜粋 アクセス数
アクセスが、ありませんでした! 0
2025/2/23 1:01 更新
指定期間人気ページランキング / 1970-1-1 → 2025-2-22
順位 ページタイトル抜粋 アクセス数
アクセスが、ありませんでした! 0
2025/2/23 1:01 更新