日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android软件开发之盘点所有Dialog对话框大合集(一)

發布時間:2025/3/11 Android 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android软件开发之盘点所有Dialog对话框大合集(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉:http://xys289187120.blog.51cto.com/3361352/657562/

雨松MOMO帶大家盤點Android 中的對話框
今天我用自己寫的一個Demo 和大家詳細介紹一個Android中的對話框的使用技巧
。?
?
1.確定取消對話框

對話框中有2個按鈕 通過調用 setPositiveButton 方法 和 setNegativeButton 方法 可以設置按鈕的顯示內容以及按鈕的監聽事件。?

?
我們使用AlerDialog 創建對話框?

  • AlertDialog.Builder?builder?=?new?AlertDialog.Builder(MainDialog.this);??
  • 使用builder設置對話框的title button icon 等等?

  • builder.setIcon(R.drawable.icon); ?
  • ???????builder.setTitle("你確定要離開嗎?"); ?
  • ???????builder.setPositiveButton("確定",?new?DialogInterface.OnClickListener()?{ ?
  • ???????????public?void?onClick(DialogInterface?dialog,?int?whichButton)?{ ?
  • ???????????????//這里添加點擊確定后的邏輯 ?
  • ???????????????showDialog("你選擇了確定"); ?
  • ???????????} ?
  • ???????}); ?
  • ???????builder.setNegativeButton("取消",?new?DialogInterface.OnClickListener()?{ ?
  • ???????????public?void?onClick(DialogInterface?dialog,?int?whichButton)?{ ?
  • ???????????????//這里添加點擊確定后的邏輯 ?
  • ???????????????showDialog("你選擇了取消"); ?
  • ???????????} ?
  • ???????}); ?
  • ???????builder.create().show(); ?
  • 這個dialog用于現實onClick后監聽的內容信息?

  • private?void?showDialog(String?str)?{ ?
  • w?AlertDialog.Builder(MainDialog.this) ?
  • ?????.setMessage(str) ?
  • ?????.show(); ?
  • }?
  • 2.多個按鈕信息框
    ?
  • AlertDialog.Builder?builder?=?new?AlertDialog.Builder(MainDialog.this);????????? ?
  • builder.setIcon(R.drawable.icon); ?
  • builder.setTitle("投票"); ?
  • builder.setMessage("您認為什么樣的內容能吸引您?"); ?
  • builder.setPositiveButton("有趣味的",?new?DialogInterface.OnClickListener()?{ ?
  • ????public?void?onClick(DialogInterface?dialog,?int?whichButton)?{ ?
  • ????????showDialog("你選擇了有趣味的"); ?
  • ????} ?
  • }); ?
  • builder.setNeutralButton("有思想的",?new?DialogInterface.OnClickListener()?{ ?
  • ????public?void?onClick(DialogInterface?dialog,?int?whichButton)?{ ?
  • ????????showDialog("你選擇了有思想的");???????????????????? ?
  • ????} ?
  • }); ?
  • builder.setNegativeButton("主題強的",?new?DialogInterface.OnClickListener()?{ ?
  • ????public?void?onClick(DialogInterface?dialog,?int?whichButton)?{ ?
  • ????????showDialog("你選擇了主題強的");?? ?
  • ????} ?
  • }); ?
  • builder.create().show();?
  • 3.列表框
    這個數組用于列表選擇
    ?
  • final?String[]?mItems?=?{"item0","item1","itme2","item3","itme4","item5","item6"};?
  • AlertDialog.Builder?builder?=?new?AlertDialog.Builder(MainDialog.this);? ?
  • ????????builder.setTitle("列表選擇框"); ?
  • ????????builder.setItems(mItems,?new?DialogInterface.OnClickListener()?{ ?
  • ????????????public?void?onClick(DialogInterface?dialog,?int?which)?{ ?
  • ????????????????//點擊后彈出窗口選擇了第幾項 ?
  • ????????????????showDialog("你選擇的id為"?+?which?+?"?,?"?+?mItems[which]); ?
  • ????????????} ?
  • ????????}); ?
  • ????????builder.create().show(); ?
  • 4.單項選擇列表框
    ?

    mSingleChoice 用于記錄單選中的ID
  • int?mSingleChoiceID?=?-1;?
  • AlertDialog.Builder?builder?=?new?AlertDialog.Builder(MainDialog.this);? ?
  • ?
  • mSingleChoiceID?=?-1; ?
  • builder.setIcon(R.drawable.icon); ?
  • ????builder.setTitle("單項選擇"); ?
  • ????builder.setSingleChoiceItems(mItems,?0,?new?DialogInterface.OnClickListener()?{ ?
  • ????????public?void?onClick(DialogInterface?dialog,?int?whichButton)?{ ?
  • ????????????????mSingleChoiceID?=?whichButton; ?
  • ????????????????showDialog("你選擇的id為"?+?whichButton?+?"?,?"?+?mItems[whichButton]); ?
  • ????????} ?
  • ????}); ?
  • ????builder.setPositiveButton("確定",?new?DialogInterface.OnClickListener()?{ ?
  • ????????public?void?onClick(DialogInterface?dialog,?int?whichButton)?{ ?
  • ????????????if(mSingleChoiceID?>?0)?{ ?
  • ????????????showDialog("你選擇的是"?+?mSingleChoiceID); ?
  • ????????????} ?
  • ????????} ?
  • ????}); ?
  • ????builder.setNegativeButton("取消",?new?DialogInterface.OnClickListener()?{ ?
  • ????????public?void?onClick(DialogInterface?dialog,?int?whichButton)?{ ?
  • ?
  • ????????} ?
  • ????}); ?
  • ???builder.create().show();?
  • 5.進度條框

    點擊進度條框按鈕后 開啟一個線程計算讀取的進度 假設讀取結束為 100
    Progress在小于100的時候一直在線程中做循環++ 只到讀取結束后,停止線程。
  • ??????????mProgressDialog?=?new?ProgressDialog(MainDialog.this); ?
  • ?????mProgressDialog.setIcon(R.drawable.icon); ?
  • ?????mProgressDialog.setTitle("進度條窗口"); ?
  • ?????mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); ?
  • ?????mProgressDialog.setMax(MAX_PROGRESS); ?
  • ?????mProgressDialog.setButton("確定",?new?DialogInterface.OnClickListener()?{ ?
  • ?????????public?void?onClick(DialogInterface?dialog,?int?whichButton)?{ ?
  • ?????????????//這里添加點擊后的邏輯 ?
  • ?????????} ?
  • ?????}); ?
  • ?????mProgressDialog.setButton2("取消",?new?DialogInterface.OnClickListener()?{ ?
  • ?????????public?void?onClick(DialogInterface?dialog,?int?whichButton)?{ ?
  • ?????????????//這里添加點擊后的邏輯 ?
  • ?????????} ?
  • ?????}); ?
  • ?????mProgressDialog.show(); ?
  • ?????new?Thread(this).start(); ?
  • ?
  • ic?void?run()?{ ?
  • int?Progress?=?0; ?
  • while(Progress?<?MAX_PROGRESS)?{ ?
  • try?{ ?
  • ????Thread.sleep(100); ?
  • ????Progress++;?? ?
  • ????mProgressDialog.incrementProgressBy(1); ?
  • }?catch?(InterruptedException?e)?{ ?
  • ????//?TODO?Auto-generated?catch?block ?
  • ????e.printStackTrace(); ?
  • } ?
  • ? ?
  • } ?
  • 6.多項選擇列表框
    ?
    MultiChoiceID 用于記錄多選選中的id號 存在ArrayList中
    選中后 add 進
    ArrayList
    取消選中后 remove 出ArrayList


  • ArrayList?<Integer>MultiChoiceID?=?new?ArrayList?<Integer>();?
  • AlertDialog.Builder?builder?=?new?AlertDialog.Builder(MainDialog.this);? ?
  • ?
  • MultiChoiceID.clear(); ?
  • builder.setIcon(R.drawable.icon); ?
  • ????builder.setTitle("多項選擇"); ?
  • ????builder.setMultiChoiceItems(mItems, ?
  • ????????????new?boolean[]{false,?false,?false,?false,?false,?false,?false}, ?
  • ????????????new?DialogInterface.OnMultiChoiceClickListener()?{ ?
  • ????????????????public?void?onClick(DialogInterface?dialog,?int?whichButton, ?
  • ????????????????????????boolean?isChecked)?{ ?
  • ???????????????????if(isChecked)?{ ?
  • ???????????????????????MultiChoiceID.add(whichButton); ?
  • ???????????????????????showDialog("你選擇的id為"?+?whichButton?+?"?,?"?+?mItems[whichButton]); ?
  • ???????????????????}else?{ ?
  • ???????????????????????MultiChoiceID.remove(whichButton); ?
  • ???????????????????} ?
  • ???????????????????? ?
  • ????????????????} ?
  • ????????????}); ?
  • ????builder.setPositiveButton("確定",?new?DialogInterface.OnClickListener()?{ ?
  • ????????public?void?onClick(DialogInterface?dialog,?int?whichButton)?{ ?
  • ????????????String?str?=?""; ?
  • ????????????int?size?=?MultiChoiceID.size(); ?
  • ????????????for?(int?i?=?0?;i?<?size;?i++)?{ ?
  • ????????????str+=?mItems[MultiChoiceID.get(i)]?+?",?"; ?
  • ????????????} ?
  • ????????????showDialog("你選擇的是"?+?str); ?
  • ????????} ?
  • ????}); ?
  • ????builder.setNegativeButton("取消",?new?DialogInterface.OnClickListener()?{ ?
  • ????????public?void?onClick(DialogInterface?dialog,?int?whichButton)?{ ?
  • ?
  • ????????} ?
  • ????}); ?
  • ???builder.create().show();?
  • 7.自定義布局
    講到自定義布局我就得多說一說了,為什么要多說一說呢??
    其實自定義布局在Android的開發中非常重要 因為它能讓開發者做出自己五彩繽紛的Activity 而不用去使用系統枯燥的界面。
    自定義dialog有什么好處?
    比如我們在開發過長當中 要通過介紹系統發送的一個廣播彈出一個dialog . 但是dialog必需是基于activity才能呈現出來 如果沒有activity 的話 程序就會崩潰。所以我們可以寫一個自定義的 dialog 把它定義成一個activity
    這樣我們收到一條打開dialog的廣播后 直接啟動這個 activity 程序正常運行~~?
    這就是自定義dialog的好處。
    注明:下面這個例子只是寫了自定義dialog 沒有把它單獨的寫在一個activity中 如果須要的話 可以自己改一下。
  • AlertDialog.Builder?builder?=?new?AlertDialog.Builder(MainDialog.this);? ?
  • ?LayoutInflater?factory?=?LayoutInflater.from(this); ?
  • ?final?View?textEntryView?=?factory.inflate(R.layout.test,?null); ?
  • ?????builder.setIcon(R.drawable.icon); ?
  • ?????builder.setTitle("自定義輸入框"); ?
  • ?????builder.setView(textEntryView); ?
  • ?????builder.setPositiveButton("確定",?new?DialogInterface.OnClickListener()?{ ?
  • ?????????public?void?onClick(DialogInterface?dialog,?int?whichButton)?{ ?
  • ????????? ?
  • ?????????EditText?userName?=?(EditText)?textEntryView.findViewById(R.id.etUserName); ?
  • ?????????EditText?password?=?(EditText)?textEntryView.findViewById(R.id.etPassWord); ?
  • ?????????showDialog("姓名?:"??+?userName.getText().toString()??+?"密碼:"?+?password.getText().toString()?); ?
  • ?????????} ?
  • ?????}); ?
  • ?????builder.setNegativeButton("取消",?new?DialogInterface.OnClickListener()?{ ?
  • ?????????public?void?onClick(DialogInterface?dialog,?int?whichButton)?{ ?
  • ?
  • ?????????} ?
  • ?????}); ?
  • ???builder.create().show();?
  • <span?style="color:#000000;"><?xml?version="1.0"?encoding="utf-8"?>?
  • <RelativeLayout?xmlns:android="http://schemas.android.com/apk/res/android"?
  • android:layout_height="wrap_content"? ?
  • android:layout_width="wrap_content"?
  • android:orientation="horizontal"?
  • android:id="@+id/dialog">?
  • <LinearLayout?
  • android:layout_height="wrap_content"? ?
  • android:layout_width="wrap_content"?
  • android:orientation="horizontal"?
  • android:id="@+id/dialogname">?
  • ?
  • <TextView?android:layout_height="wrap_content"?
  • ???android:layout_width="wrap_content"?
  • ??android:id="@+id/tvUserName"? ?
  • ??android:text="姓名:"?/>?
  • <EditText?android:layout_height="wrap_content"?
  • ??android:layout_width="wrap_content"? ?
  • ??android:id="@+id/etUserName"? ?
  • ??android:minWidth="200dip"/>?
  • </LinearLayout>?? ?
  • <LinearLayout?
  • android:layout_height="wrap_content"? ?
  • android:layout_width="wrap_content"?
  • android:orientation="horizontal"?
  • android:id="@+id/dialognum"?
  • ?android:layout_below="@+id/dialogname"?
  • >?
  • ??<TextView?android:layout_height="wrap_content"?
  • ???android:layout_width="wrap_content"?
  • ??android:id="@+id/tvPassWord"? ?
  • ??android:text="密碼:"?/>?
  • <EditText?android:layout_height="wrap_content"?
  • ??android:layout_width="wrap_content"? ?
  • ??android:id="@+id/etPassWord"? ?
  • ??android:minWidth="200dip"/>?
  • ?</LinearLayout>?? ?
  • ??</RelativeLayout></span>?
  • 8.讀取進度框
    顯示一個正在轉圈的進度條loading

  • mProgressDialog?=?new?ProgressDialog(this); ?
  • ?mProgressDialog.setTitle("讀取ing"); ?
  • ?mProgressDialog.setMessage("正在讀取中請稍候"); ?
  • ?mProgressDialog.setIndeterminate(true); ?
  • ?mProgressDialog.setCancelable(true); ?
  • ?mProgressDialog.show();?

  • 最后如果你還是覺得我寫的不夠詳細 不要緊我把源代碼的下載地址貼出來 歡迎大家一起討論學習 雨松MOMO希望可以和大家一起進步。
    下載地址
    http://download.csdn.net/source/3438085

    本文出自 “雨松MOMO的程序世界” 博客,請務必保留此出處http://xys289187120.blog.51cto.com/3361352/657562

    總結

    以上是生活随笔為你收集整理的Android软件开发之盘点所有Dialog对话框大合集(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 无码国产精品一区二区免费16 | 亚洲AV成人无码电影在线观看 | 日韩激情小说 | 日本三级一区二区 | 亚洲香蕉av | 在线视频欧美一区 | 一区av在线 | 色综合久久网 | 91亚洲一线产区二线产区 | 国产精品天美传媒 | 国产调教视频在线观看 | 2021国产精品视频 | 午夜亚洲aⅴ无码高潮片苍井空 | 久久国内免费视频 | 可以在线看黄的网站 | 欧美中日韩在线 | 女厕厕露p撒尿八个少妇 | 色噜噜色综合 | 九九视频在线观看 | 免费观看视频在线观看 | 四虎精品一区二区 | 中文字幕永久视频 | 美女福利在线视频 | 久久免费高清视频 | 久久夜色精品国产欧美乱 | 美女扒开尿口给男人看 | 欧美日韩欧美日韩在线观看视频 | 色漫在线观看 | 亚洲精品高潮 | 日韩新片王网 | 日韩mv欧美mv国产网站 | xxxx久久| 久久久久久久久久一区二区 | a级片免费视频 | 国产青青草在线 | 四虎午夜影院 | 黄色免费网站在线 | 日本高清xxxx | 成人久久网站 | 日韩 国产 欧美 | 久久精品香蕉视频 | 天天想你在线观看完整版高清 | 谁有av网址 | 成人交性视频免费看 | 欧美视频在线观看一区二区 | 国产精品一区二区免费看 | 欧美乱码精品一区二区三区 | 亚洲成a人在线观看 | 丝袜诱惑一区 | 婷婷伊人综合 | 亚洲AV无码阿娇国产精品 | 成人18网站 | 亚洲国产第一页 | 精品久久久久久久中文字幕 | 成人天堂| 中文在线中文资源 | 蜜臀av性久久久久蜜臀av麻豆 | 免费无遮挡无码永久在线观看视频 | 免费成人av在线播放 | 国产ts丝袜人妖系列视频 | 国产精品一二三四 | 动漫av一区 | 国产21页| 91色视频| 看一级片 | 欧美一级一区二区 | 黄色网址在线播放 | 插吧插吧网 | 男人操女人的视频 | 色噜噜狠狠一区二区三区牛牛影视 | 免费无遮挡网站 | 婷婷综合影院 | 国产一区美女 | 亚洲一级伦理 | 丁香花免费高清完整在线播放 | 久久av网站 | 麻豆视频网站 | 五月婷婷激情视频 | 天天综合天天做天天综合 | 你懂的视频在线播放 | 久热精品视频 | 182在线视频 | 久久国产人妻一区二区免色戒电影 | 国产视频一区二区不卡 | 国产免费黄色网址 | 国产不卡视频在线 | 欧美在线激情视频 | 日本一区二区三区在线视频 | 老司机av网站| 熟女俱乐部五十路六十路av | 丁香婷婷一区二区三区 | 久久伊人成人网 | 99国产精品自拍 | 日韩精品第一区 | 貂蝉被到爽流白浆在线观看 | 伊人久久大香线 | 超碰97在线资源 | 亚洲国产第一区 | 深夜福利一区二区 |