Penggunaan asas beberapa kotak dialog biasa yang lain


Pengenalan kepada bahagian ini:

Dalam bahagian terakhir kita telah mempelajari kelas induk Dialog: AlertDialog, dan dalam bahagian ini kita akan mempelajari beberapa yang biasa digunakan Kegunaan asas Dialog, ia adalah: ProgressDialog (kotak dialog bar kemajuan), DatePickerDialog (Kotak dialog pemilihan tarikh) dan TimePickerDialog (kotak dialog pemilihan masa)~, tanpa berlengah lagi, mari mulakan bahagian ini~


1. Penggunaan asas ProgressDialog (kotak dialog bar kemajuan)

Terdapat dua cara untuk mencipta kotak dialog bar kemajuan:

  • 1 Panggil terus kaedah statik show() yang disediakan oleh ProgressDialog untuk dipaparkan
  • 2 Cipta ProgressDialog, kemudian tetapkan parameter kotak dialog, dan akhirnya show() keluar

Contoh kod :

Menjalankan pemaparan:

1.gif

Kod pelaksanaan utama:

Aktiviti Utama .java:

kelas awam MainActivity memanjangkan AppCompatActivity melaksanakan View.OnClickListener{

Butang peribadi btn_one;
Butang peribadi btn_two;
Butang peribadi btn_Dialog>;<🎜 = null 🎜> private ProgressDialog pd2 = null;
private int statik akhir MAXVALUE = 100;
private int progressStart = 0;
private int add = 0;
private Context mContext = null;


//Tentukan Pengendali untuk mengemas kini kemajuan Kerana antara muka hanya boleh dikemas kini oleh utas utama, Pengendali mesti digunakan untuk menghantar maklumat
Tangan Pengendali akhir = Pengendali baharu()
{<🎜. > @ Override
public void handleMessage(Message msg) {
//Di sini, jika kod mesej yang diterima ialah 123
if(msg.what == 123)
{
                               // Lihat bar kemajuan Nilai semasa
pd2.setProgress(progressStart);
}
//Jika nilai semasa lebih besar daripada atau sama dengan nilai maksimum bar kemajuan, panggil kaedah dismiss() untuk menutup kotak dialog
jika(progressStart >= MAXVALUE)
                                                                                                                                 🎜> dilindungi void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity(R.layout) ;
mContext = MainActivity.this;
bindViews();
}

private void bindViews() {
btn_one = (Button) findViewById(R.id.btn_one);
btn_two = (Button) findViewBy Id(R. id .btn_two);
btn_three = (Button) findViewById(R.id.btn_three);
btn_one.setOnClickListener(this);
btn_two.setOnClick_Listener(OnClickListener(OnClickListener) ini ) ;
}


@Override
public void onClick(View v) {
suis (v.getId()){
case R.id.btn_one:
                 //Parameter di sini ialah, konteks, tajuk, kandungan, sama ada untuk menunjukkan kemajuan, sama ada ia boleh ditutup dengan butang batal Selepas...",false,true);
break;
case R.id.btn_two:
pd1 = new ProgressDialog(mContext);
//Tetapkan tajuk, kandungan dan sama ada mahu menggunakannya mengikut turutan Butang Batal dimatikan dan sama ada untuk memaparkan kemajuan
pd1. setTitle("Perisian sedang dikemas kini");
pd1.setMessage("Perisian sedang dikemas kini, sila tunggu...");
pd1.setCancelable( true);
//Berikut ialah gaya menetapkan bar kemajuan. HORIZONTAL ialah bar kemajuan mendatar dan SPINNER ialah bar kemajuan bulat
pd1.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pd1.setIndeterminate(true);//Panggil kaedah show() untuk memaparkan ProgressDialog
pd1.show();
break;
case R.id.btn_three:
// Sifat permulaan
progressStart = 0;
           tambah = 0; pd2.setMax(MAXVALUE);
pd2.setTitle("Bacaan fail ");
pd2.setMessage("Fail sedang dimuatkan, sila tunggu...");
//Bar kemajuan tidak boleh ditutup dengan menekan butang batal
pd2.setCancelable(false) ;
             pd2.setProgressStyle (ProgressDialog.STYLE_HORIZONTAL);
              pd2.setIndeterminate(false);               pd2.                      Benang baharu()
                     > public void run()
{
while(progressStart < MAXVALUE)
Ya, anda boleh menulis
mengikut keperluan progressStart = 2 * usetime();
Hantar kod maklumat ke Handle untuk membuat antara muka kemas kini
hand.sendemptymessage (123);
}
}
} .mula (); 🎜>
//Tetapkan kaedah yang memakan masa di sini:
private int usetime() {
tambah++;
cuba{
Thread.sleep(100);
}tangkap ( InterruptedException e) {
e.printStackTrace();
}
kembalikan tambah;
}
}

Kod ini agak mudah dan kami telah pun mengetahui tentang Kemajuan sebelum ini, jadi saya tidak akan menerangkan butiran di sini~


2.DatePickerDialog (kotak dialog pemilihan tarikh) dan TimePickerDialog (masa kotak dialog pilihan) Kotak)

Biar saya jelaskan sesuatu dahulu: Date/TimePickerDialog hanya untuk pengguna memilih tarikh dan masa Untuk masa sistem sistem android, Tarikh tidak mempunyai kesan Google belum mengumumkan API untuk tetapan tarikh dan masa sistem. Jika anda ingin menetapkannya dalam aplikasi, anda perlu menyusun semula kod sumber sistem android, yang sangat menyusahkan!

Kaedah pembinaan kedua-duanya adalah sangat serupa: DatePickerDialog(Context; DatePickerDialog.OnDateSetListener() listener; tahun; bulan; hari)
TimePickerDialog ( Konteks; TimePickerDialog.OnTimeSetListener() pendengar; jam, minit, sama ada menggunakan jam 24 jam)

Contoh kod:

Berjalan rendering

2.gif

Kod pelaksanaan utama

MainActivity.java

kelas awam MainActivity melanjutkan AppCompatActivity melaksanakan View.OnClickListener{

    pribadi Button btn_date;
    private Button Button;

    private Button btn_date;
    private Button>; bt private Button> "";


    @Override
    dilindungi void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
             set                     set  Paparan Pandangan Kandungan s();
    }

    private void bindViews() {
        btn_date = (Button) findViewById(R.id.btn_date);
        btn_time = (🎜Bit.btn_time) = (🎜Bt.btn_time) = (🎜Bt.btn >
btn_date.setOnClickListener(this);
        btn_time.setOnClickListener(this);
    }

    @Override
     public                       <       public "";
         suis (v.getId()){
            kes R.id.btn_date:
                Kalendar cale1 = Calendar getInstance >                          . Dialog(MainActivity.this,new DatePickerDialog.OnDateSetListener() {
                    @Override
                     public void onDateSet (DatePicker view, int year, int monthOfYear,                                      int dayOfMonth) {
                         //这里获取到的月份需要加上1哦>~<                        hasil += "你选择的是"+tahun+"年"+(monthOfYear+1)+"月"+dayOfMonth+"日";
                                                                                                                                                 . ); , calendar.year), cale1.get (kalendar.month)
, cale1.get (kalendar.day_of_month)). );
                rehat;
            kes R.id.btn_time:
                Kalendar kalendar2 =                                                                                                                                                                              . PickerDialog(MainActivity.this, timePickerDialog.OnTimeSetListener() {
                     @ Override
                     public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                                                                                                                                                                                                           hasil += "您选择的时间是:"+hourOfDay+"时"+minit+"分" ;
                        Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show();
}
                           , cale2.get(Calendar.HOUR_OF_DAY),  cale2.get((Calendar.MINUTE), true).show();       🎜>}<🎜 kodnya sangat ringkas ><🎜 jadi saya tidak akan menerangkannya~


3 Muat turun kod:
DialogDemo.zip

DialogDemo1.zip


Ringkasan daripada bahagian ini:

Baiklah, bahagian ini memperkenalkan tiga Dialog yang biasa digunakan Berbanding dengan versi 4.x sebelumnya, kawalan asli 5.0 ini. Ia jelas lebih cantik~ Itu sahaja, terima kasih~