<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
對話方塊(Dialog)是Android系統在Activity或者其他元件執行過程中提供的一種提示機制。它可以幫助應用完成一些必要的提示功能,同時提供一些與使用者互動的功能。
對話方塊分為很多種,下面將一一介紹。
Android系統提供的對話方塊父類別為Dialog, 裡面並沒有實現對話方塊的具體型別,比如單選、多選、列表等對話方塊,僅提供一個框架和規範。系統為開發者提供了一個 多功能的對話方塊類AlertDialog, 裡面封裝了各種對話方塊的樣式,開發者只須提供相應的顯示資料和按鍵的響應監聽就可以。
提示對話方塊所使用的就是系統封裝好的對話方塊AlertDialog的範例物件。AlertDialog並不提供對外的構造方法,即不能直接通過AlertDialog的建構函式來生產一個AlertDialog。因為AlertDialog所有的構造方法都是protected的。所以為了獲取AlertDialog物件,系統提供了一個靜態內部類Builder讓我們使用,通過Builder可以建立AlertDialog物件。
(1)建立AlertDialog.Builder範例物件。
(2)通過Builder物件設定對話方塊的屬性。
(3)呼叫Builder物件的create()方法建立AlertDialog對話方塊
(4)呼叫AlertDialog的show()方法來顯示對話方塊
(5)呼叫AlertDialog的dimiss()方法銷燬對話方塊。
package com.example.learndialog; import android.content.DialogInterface; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button bt= (Button) findViewById(R.id.button); bt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { AlertDialog aldg; AlertDialog.Builder adBd=new AlertDialog.Builder(MainActivity.this); adBd.setTitle("我的提示框"); adBd.setIcon(R.drawable.p1); adBd.setMessage("確定要關閉本應用程式嗎?"); adBd.setPositiveButton("確定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { finish(); } }); adBd.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); aldg=adBd.create(); aldg.show(); } }); } }
執行結果:
單選對話方塊中的0代表預設選中第一個。
package com.example.learndialog; import android.content.DialogInterface; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MainActivity extends AppCompatActivity { int picWhich; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button bt = (Button) findViewById(R.id.button); bt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final String[] starr = new String[]{"教師", "經理", "律師", "公務員"}; AlertDialog adlg; adlg = new AlertDialog.Builder(MainActivity.this).setTitle("選擇職業:") .setSingleChoiceItems(starr, 0, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { picWhich = which; } }) .setPositiveButton("確定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "你選定的職業是:" + starr[picWhich], Toast.LENGTH_LONG).show(); } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }) .create(); adlg.show(); } }); } }
執行結果:
複選對話方塊和單選對話方塊用法相似。
package com.example.learndialog; import android.content.DialogInterface; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MainActivity extends AppCompatActivity { int picWhich; boolean chk[]=new boolean[]{false,false,false,false}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button bt = (Button) findViewById(R.id.button); bt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final String[] starr = new String[]{"教師", "經理", "律師", "公務員"}; AlertDialog adlg; adlg = new AlertDialog.Builder(MainActivity.this).setTitle("選擇職業:") .setMultiChoiceItems(starr, chk, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { chk[which]=isChecked; } }) .setPositiveButton("確定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { String st=" "; for (int i=0;i<chk.length;i++) if (chk[i]) st=st+starr[i]+" "; Toast.makeText(MainActivity.this,"選定的職業有:"+st,Toast.LENGTH_LONG).show(); } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }) .create(); adlg.show(); } }); } }
執行結果:
列表對話方塊和單選對話方塊用法相似。
package com.example.learndialog; import android.content.DialogInterface; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button bt = (Button) findViewById(R.id.button); bt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final String[] starr = new String[]{"教師", "經理", "律師", "公務員"}; AlertDialog adlg; adlg=new AlertDialog.Builder(MainActivity.this).setTitle("列表對話方塊") .setItems(starr, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }) .create(); adlg.show(); } }); } }
執行結果:
ProgressDialog 也是繼承於Dialog,但其擴充套件了緩衝載入提示的功能,為人機之間提供了良好的互動體驗。
package com.example.learndialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void progress_circle(View v){ final ProgressDialog prdg1=new ProgressDialog(MainActivity.this); prdg1.setProgressStyle(ProgressDialog.STYLE_SPINNER); prdg1.setTitle("圓形進度條對話方塊"); prdg1.setMessage("正在下載"); prdg1.setMax(100); prdg1.show(); new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(5000); prdg1.cancel(); } catch (InterruptedException e) { e.printStackTrace(); } } }).start(); } public void progress_horizontal(View v){ final ProgressDialog prdg2 = new ProgressDialog(this); prdg2.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); prdg2.setCancelable(true); prdg2.setTitle("水平進度條對話方塊"); prdg2.setMax(100); prdg2.setButton(DialogInterface.BUTTON_POSITIVE, "確定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); prdg2.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); prdg2.setMessage("正在下載"); prdg2.show(); new Thread(new Runnable() { @Override public void run() { int i = 0; while (i < 100) { try { Thread.sleep(100); prdg2.incrementProgressBy(1); i++; } catch (Exception e) { } } prdg2.dismiss(); } }).start(); } }
執行結果:
package com.example.learndialog; import android.app.Dialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.SeekBar; import android.widget.TextView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void SeekOnClick(View v){ Dialog myDlg=new Dialog(MainActivity.this); myDlg.setTitle("拖動對話方塊:亮度調節"); myDlg.setContentView(R.layout.seekbardlg); SeekBar sb=(SeekBar)myDlg.findViewById(R.id.seekBar); final TextView tv=(TextView)myDlg.findViewById(R.id.textView); sb.setMax(100); sb.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { tv.setText("當前亮度為:"+progress); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); myDlg.show(); } }
執行結果:
package com.example.datepickerdialog; import android.app.DatePickerDialog; import android.icu.util.Calendar; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.DatePicker; import android.widget.Toast; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Calendar c=Calendar.getInstance(); DatePickerDialog dpd=new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int month, int day) { String st; st = String.valueOf(year) + "-" + String.valueOf(month) + "-" + String.valueOf(day); Toast.makeText(getApplicationContext(), st, Toast.LENGTH_LONG).show(); } },c.get(Calendar.YEAR),c.get(Calendar.MONTH),c.get(Calendar.DAY_OF_MONTH)); dpd.show(); } }
執行結果:
package com.example.datepickerdialog; import android.app.DatePickerDialog; import android.app.TimePickerDialog; import android.icu.util.Calendar; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.DatePicker; import android.widget.TimePicker; import android.widget.Toast; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Calendar calendar=Calendar.getInstance(); new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { } }, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), true ).show(); } }
執行結果:
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45