編輯:關於Android編程
在我們實際開發中,常常需要有對話框彈出跟用戶交互。AndroidOS提供有多種對話框,這一節,我們介紹一下AlertDialog和幾個常用Dialog,AlertDialog是ProgressDialog的父類,構造器是protected的,所以不能直接new出來這個對象,需要用到AlertDialog.Builder中的create()方法。下面介紹一下創建AlertDialog需要了解的幾個方法:
setTitle:為對話框設置標題 setIcon :為對話框設置圖標 setMessage:為對話框設置內容 setView : 給對話框設置自定義樣式 setItems :設置對話框要顯示的一個list,一般用於顯示幾個命令時 setMultiChoiceItems :用來設置對話框顯示一系列的復選框 setSingleChoiceItems:用來設置對話框的單選列表 setNeutralButton :普通按鈕 setPositiveButton :給對話框添加”Yes”按鈕 setNegativeButton :對話框添加”No”按鈕 create : 創建對話框,必須要調用 show :顯示對話框,必須要調用下面我們通過例子體會AlertDialog的幾種常用情況:
創建一個普通的對話框,比如給用戶選擇是否退出程序等的時候,例子代碼如下:
AlertDialog.Builder builder = new AlertDialog.Builder(AlertDialogActivity.this);
builder.setTitle("提示");
builder.setMessage("你是否要退出應用?");
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
ToastUtils.showToast(AlertDialogActivity.this, "你點擊了取消按鈕");
}
});
builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
ToastUtils.showToast(AlertDialogActivity.this, "你點擊了確定按鈕");
}
});
builder.create().show();
例子代碼如下:
final String[] cars = {"寶馬", "奔馳", "馬自達", "卡羅拉", "本田", "豐田", "長安", "紅旗"};
final AlertDialog.Builder builder = new AlertDialog.Builder(AlertDialogActivity.this);
builder.setTitle("選擇你喜歡的車");
builder.setItems(cars, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
ToastUtils.showToast(AlertDialogActivity.this, "你選了:" + cars[i]);
}
});
builder.create().show();
例子代碼如下:
final String[] language = {"Java語言", "PHP語言", "Android語言", "IOS語言", "C++語言", "C#語言"};
final String[] select = {""};
AlertDialog.Builder builder = new AlertDialog.Builder(AlertDialogActivity.this);
builder.setTitle("選擇你喜歡的語言,只能選一項");
builder.setSingleChoiceItems(language, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
select[0] = language[i];
}
});
builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
ToastUtils.showToast(AlertDialogActivity.this, "你選了:" + select[0]);
}
});
builder.create().show();
例子代碼如下:
final String[] menu = {"絲瓜面筋", "糖醋鯉魚", "糖醋排骨", "剁椒魚頭", "清蒸鹹魚", "魚香肉絲", "清炒上海青", "麻婆豆腐"};
final boolean[] isCheck = {false, false, false, false, false, false, false, false};
AlertDialog.Builder builder = new AlertDialog.Builder(AlertDialogActivity.this);
builder.setTitle("請選擇你的想要的菜");
builder.setMultiChoiceItems(menu, isCheck, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i, boolean b) {
isCheck[i] = b;
}
});
builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
String select = "";
for (int j = 0; j < isCheck.length; j++) {
if (isCheck[j]) {
select += menu[j];
}
}
ToastUtils.showToast(AlertDialogActivity.this, "你選擇的菜有:" + select);
}
});
builder.create();
builder.show();
最後實現效果如下:
這裡只是簡單的實現,先是new一個AlertDialog.Builder,然後設置一些相應的內容,最後調用create方法創建,調用show方法顯示出來。對於AlertDialog的介紹就到這裡了,也可以自定義AlertDialog,這個留到後面講自定義控件的時候再細講。下面我們介紹一下ProgressDialog。
AndroidOS提供給我們創建進度條對話框有兩種方式,一種是直接new,另外一種是調用靜態方法show。下面,我們通過例子體會一下ProgressDialog。
//通過show方法創建一個進度條對話框
ProgressDialog.show(ProgressDialogActivity.this, "通訊中", "正在通訊,請稍候...", false, true);
//通過new方法創建一個對話框
progressDialog = new ProgressDialog(ProgressDialogActivity.this);
//設置進度條的最大值
progressDialog.setMax(maxProgress);
//設置標題
progressDialog.setTitle("正在下載");
//設置提示信息內容
progressDialog.setMessage("安裝包正在下載,馬上就好...");
//設置是否允許點擊進度條對話框外面取消對話框
progressDialog.setCancelable(false);
//設置進度條的樣式,這個為長方形
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
//設置是否顯示進度,false顯示
progressDialog.setIndeterminate(false);
//將進度條對話框show出來
progressDialog.show();
//新建一個線程更新進度
new Thread(new Runnable() {
@Override
public void run() {
while (progress < maxProgress) {
//模擬耗時方法
sleep();
progress += 2;
handler.sendEmptyMessage(111);
}
}
}).start();
效果圖:
這樣可以實現一個ProgressDialog進度條對話框,在這裡知識簡單實現,我們也可以按照需求自定義進度條對話框。
這個和TimePickerDiaog都比較簡單,直接放代碼示例,就不在解析了,代碼如下:
Calendar calendar = Calendar.getInstance();
//第一個參數是上下文對象,第二個是監聽器,第三個是設置當前年份,第四個是設置月份,第五個是設置當前日份
new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
String result = "你選擇的是:" + i + "年" + (i1 + 1) + "月" + i2 + "日";
ToastUtils.showToast(MainActivity.this, result);
}
}, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)).show();
Calendar calendar = Calendar.getInstance();
//第一個參數是上下文對象,第二個是監聽器,第三個是設置當前小時數,第四個是分鐘數,第五個是是否顯示24小時制
new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int i, int i1) {
String result = "你選擇的是:" + i + "時" + i1 + "分";
ToastUtils.showToast(MainActivity.this, result);
}
}, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), true).show();
最後實現效果圖:
最後附上國內鏡像API
AlertDialog對話框
ProgressDialog進度條對話框
DatePickerDialog日期選擇提示框
TimePickerDialog時間選擇提示框
效果:需求:不論什麼領域,在模仿一個東西的時候,我們首先要對它進行需求提取,這樣才能保證做到”惟妙惟肖”。通過對QQ側滑功能的分析,提取出了以下需
SlidingPaneLayout是Android團隊在2013年Google IO大會上更新的Support V4庫裡面的高級系統控件,它可以輕松的實現一些簡單的滑動菜
本篇文章講的是Android 自定義ViewGroup之實現標簽流式布局-FlowLayout,開發中我們會經常需要實現類似於熱門標簽等自動換行的流式布局的功能,網上也有
最簡單的使用xml布局文件 Activity.javaList list = new ArrayList<>();list.add("