編輯:關於Android編程
在Android開發當中,在界面上彈出一個Dialog對話框使我們經常需要做的,本篇做一下記錄,以備遺忘時查詢。
dialog就是一個在屏幕上彈出一個可以讓用戶做出一個選擇,或者輸入額外的信息的對話框,一個對話框並不會沾滿我們整個的屏幕,並且通常用於模型事件當中需要用戶做出一個決定後才會繼續執行。
Dialog類是dialog對話框的基類,但是我們應該避免直接使用這個類來實例化一個dialog對話框,我們應當使用其子類來得到一個對話框:
java.lang.Object android.app.Dialog Known Direct Subclasses AlertDialog, CharacterPickerDialog, MediaRouteChooserDialog, MediaRouteControllerDialog, Presentation Known Indirect Subclasses DatePickerDialog, ProgressDialog, TimePickerDialog
我們看到,AlertDialog是Dialog的一個直接子類。
使用AlertDialog,我們可以顯示一個標題,最多3個按鈕操作,以及一組選擇框或者是自己定義的彈出框。
在AlertDialog中,定義按鈕都是通過 setXXXButton 方法來完成,其中一共有3種不同的Action Buttons供我們選擇:
1.setPositiveButton(CharSequence text, DialogInterface.OnClickListener listener) 這是一個相當於OK、確定操作的按鈕, 2.setNegativeButton (CharSequence text, DialogInterface.OnClickListener listener) 這是一個相當於取消操作的按鈕。 3. setNeutralButton (CharSequence text, DialogInterface.OnClickListener listener) 這個是相當於一個忽略操作的按鈕。
我們每一種action buttons最多只能出現一個,即彈出對話框最多只能出現一個PositiveButton。
接下來我們通過一個一個的具體實例來看看我們常用的幾種AlertDialog對話框。
1.彈出一個警告框,並有三個按鈕可選擇
我們來看看代碼部分:
button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 通過AlertDialog.Builder這個類來實例化我們的一個AlertDialog的對象 AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); // 設置Title的圖標 builder.setIcon(R.drawable.ic_launcher); // 設置Title的內容 builder.setTitle("彈出警告框"); // 設置Content來顯示一個信息 builder.setMessage("確定刪除嗎?"); // 設置一個PositiveButton builder.setPositiveButton("確定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "positive: " + which, Toast.LENGTH_SHORT).show(); } }); // 設置一個NegativeButton builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "negative: " + which, Toast.LENGTH_SHORT).show(); } }); // 設置一個NeutralButton builder.setNeutralButton("忽略", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "neutral: " + which, Toast.LENGTH_SHORT).show(); } }); // 顯示出該對話框 builder.show(); } });
我們如果要創建一個AlertDialog對話框,需要使用AlertDialog的一個內部類,即AlertDialog.Builder來構建一個AlertDialog的對話框,然後通過setXX方法來設置我們想要顯示的內容即可。
我們看到,我們一共設置了3個action buttons,每一個button都為其綁定了一個 DialogInterface.OnClickListener() 的監聽事件,然後在裡面通過Toast吐司對話框(這個在後面隨筆中會講解)來彈出一下我們的一些信息,which方法表示的是action button所代表的int值:
positive: -1 negative: -2 neutral: -3
import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class SingleChoiceItemsTest extends Activity implements OnClickListener { private String[] province = new String[] { "上海", "北京", "湖南", "湖北", "海南" }; private Button btnSingleChoiceList; // 單擊事件對象的實例 private ButtonOnClick buttonOnClick = new ButtonOnClick(1); /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btnSingleChoiceList = (Button) findViewById(R.id.btnSingleChoice); btnSingleChoiceList.setOnClickListener(this); } @Override public void onClick(View v) { showSingleChoiceButton(); } // 在單選選項中顯示 確定和取消按鈕 //buttonOnClickg變量的數據類型是ButtonOnClick,一個單擊事件類 private void showSingleChoiceButton() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("請選擇省份"); builder.setSingleChoiceItems(province, 0, buttonOnClick); builder.setPositiveButton("確定", buttonOnClick); builder.setNegativeButton("取消", buttonOnClick); builder.show(); } private class ButtonOnClick implements DialogInterface.OnClickListener { private int index; // 表示選項的索引 public ButtonOnClick(int index) { this.index = index; } @Override public void onClick(DialogInterface dialog, int which) { // which表示單擊的按鈕索引,所有的選項索引都是大於0,按鈕索引都是小於0的。 if (which >= 0) { //如果單擊的是列表項,將當前列表項的索引保存在index中。 //如果想單擊列表項後關閉對話框,可在此處調用dialog.cancel() //或是用dialog.dismiss()方法。 index = which; } else { //用戶單擊的是【確定】按鈕 if (which == DialogInterface.BUTTON_POSITIVE) { //顯示用戶選擇的是第幾個列表項。 final AlertDialog ad = new AlertDialog.Builder( SingleChoiceItemsTest.this).setMessage( "你選擇的地區是:" + index + ":" + province[index]).show(); //五秒鐘後自動關閉。 Handler hander = new Handler(); Runnable runnable = new Runnable() { @Override public void run() { ad.dismiss(); } }; hander.postDelayed(runnable, 5 * 1000); } //用戶單擊的是【取消】按鈕 else if (which == DialogInterface.BUTTON_NEGATIVE) { Toast.makeText(SingleChoiceItemsTest.this, "你沒有選擇任何東西", Toast.LENGTH_LONG); } } } } }
彈出一個下拉單選框
button3.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setIcon(R.drawable.ic_launcher); builder.setTitle("請選擇性別"); final String[] sex = {"男", "女", "未知性別"}; // 設置一個單項選擇下拉框 /** * 第一個參數指定我們要顯示的一組下拉單選框的數據集合 * 第二個參數代表索引,指定默認哪一個單選框被勾選上,1表示默認'女' 會被勾選上 * 第三個參數給每一個單選項綁定一個監聽器 */ builder.setSingleChoiceItems(sex, 1, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "性別為:" + sex[which], Toast.LENGTH_SHORT).show(); } }); builder.setPositiveButton("確定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); builder.show(); } });注意:在彈出下拉單選框時,當我們選中一個選項,對話框是不會消失的,我們需要點擊action button才能讓對話框消失。
彈出一個下拉多選框
button4.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setIcon(R.drawable.ic_launcher); builder.setTitle("愛好"); final String[] hobbies = {"籃球", "足球", "網球", "斯諾克"}; // 設置一個單項選擇下拉框 /** * 第一個參數指定我們要顯示的一組下拉多選框的數據集合 * 第二個參數代表哪幾個選項被選擇,如果是null,則表示一個都不選擇,如果希望指定哪一個多選選項框被選擇, * 需要傳遞一個boolean[]數組進去,其長度要和第一個參數的長度相同,例如 {true, false, false, true}; * 第三個參數給每一個多選項綁定一個監聽器 */ builder.setMultiChoiceItems(hobbies, null, new DialogInterface.OnMultiChoiceClickListener() { StringBuffer sb = new StringBuffer(100); @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { if(isChecked) { sb.append(hobbies[which] + ", "); } Toast.makeText(MainActivity.this, "愛好為:" + sb.toString(), Toast.LENGTH_SHORT).show(); } }); builder.setPositiveButton("確定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); builder.show(); } });
同樣,對於下拉多選框,當我們選中其中一個選項時,對話框是不會消失的,只有點擊了action button才會消失。
目錄Opencv的開發環境搭建過程...一、下載並安裝jdk環境...二、下載並安裝Android Studio.三、下載Android SDK.四、下載ndk.五、下載
本教程為大家分享了Android毛玻璃效果的具體代碼,供大家參考,具體內容如下BlurimageActivity.java代碼:package com.siso.craz
1、背景介紹在開發應用過程中經常會遇到顯示一些不同的字體風格的信息猶如默認的LockScreen上面的時間和充電信息。對於類似的情況,可能第一反應就是用不同的多個Text
做安卓一年有余,意識到網絡請求框架算是很重要的一塊,考慮到Volley是谷歌自帶的,決定好好研究研究源碼,去理理邏輯思路首先呢,Volley去哪裡獲取,看下圖即可,在安卓