Dialog 对话框
生活随笔
收集整理的這篇文章主要介紹了
Dialog 对话框
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ps:默認alertdialog的寬為屏幕的8/9, 高為屏幕的1/7!!
Dialog 常用方法:(格式:dialog.以下方法)
setProgressStyle:設置進度條風格,風格為圓形,旋轉的。 setTitlt:設置標題 setMessage:設置提示信息; setIcon:設置標題圖標; setIndeterminate:設置Dialog 的進度條是否不明確;這個屬性對于ProgressDailog默認的轉輪模式沒有實際意義,默認下設置為true,它僅僅對帶有ProgressBar的Dialog有作用。修改這個屬性為false后可以實時更新進度條的進度。 setCancelable:設置Dialog 是否可以按返回鍵取消,屏蔽其它控件交互能力,除dialog以外的屏幕都不可點擊; cancelListner:當前Dialog強制取消之后將會被執行,通常用來清理未完成的任務。 setButton:設置ProgressDialog 的一個Button(需要監聽Button事件); show:顯示Dialog。 cancel:刪dialog .setOnCancelListener(new Dial...):當刪除dialog后執行該方法 dismiss: 刪除progressdialog 作用和cancel相同 setOnDismissListener(new Dialo....):當刪除dialog后執行該方法 setMax(int)、getMax:設置最大進度條的值 setProgress(int)、getProgress:更新進度條,當然一般都需要Handler的結合來更新進度條 incrementProgressBy(int)增加進度條 setProgressDrawable:設置progress發生變化時的進度指示條的背景圖ps:AlertDialog.Builder沒有setOnShowListener方法(對象名稱為aertDialog),但想要該方法時,可以這樣, 再創建dialog把alertDialog賦值給dialog: Dialog dialog=aertDialog.create(); dialog.setOnShowListener(new DialogInterface.OnShowListener() {..... 然后在彈出dialog.show();即可。幾種類型的dialog的使用:
第一種:普通三個選項的dialog(最多可寫三個按鈕,也可寫一個)
先上圖
代碼如下:
//====彈窗//1.創建對象AlertDialog.Builder alertDialog=new AlertDialog.Builder(SafetyActivity.this);//2.設置窗體樣式alertDialog.setIcon(R.drawable.ic_rb_user_red);//標題圖標alertDialog.setTitle("三個選項的dialog");//標題文字alertDialog.setMessage("提示:愛或恨");//提示信息//alertDialog.setCancelable(false);//屏蔽其它控件交互能力,除dialog以外的屏幕都不可點擊//3.設置三個按鈕的事件//積極選擇alertDialog.setPositiveButton("愛", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(SafetyActivity.this,"點擊了愛",Toast.LENGTH_LONG).show();}});//消極選擇alertDialog.setNegativeButton("恨", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(SafetyActivity.this,"點擊了恨",Toast.LENGTH_LONG).show();}});//中立選擇alertDialog.setNeutralButton("沒感覺", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(SafetyActivity.this,"點擊了沒感覺",Toast.LENGTH_LONG).show();}});//4.顯示dialogalertDialog.show();第二種:列表dialog
.
第三種:單選dialog(和列表dialog差不多,只是在列表前面多了一個選擇的圖標)
第四種:多選dialog
第五種:等待dialog
第六種:有進度條的dialog
第七種:半自定義dialog
第八種:自定義dialog,添加布局文件:
ps:若想只加載布局文件,把那句代碼改為如下:(ps:如果不需要頭部信息,可不設置setTitle)
AlertDialog.Builder alertDialog=new AlertDialog.Builder(SafetyActivity.this,R.style.DialogTheme);
R.style.DialogTheme:指的是:它可以設置dialog的樣式
在values/styles.xml新建一個樣式DialogTheme,代碼如下:
<!--parent="@android:style/Theme.Dialog":點擊dialog之外的界面就會關閉dialog--><style name="DialogTheme" parent="@android:style/Theme.Dialog"><!-- 邊框 --><item name="android:windowFrame">@null</item><!-- 是否浮現在activity之上 --><item name="android:windowIsFloating">true</item><!-- 半透明 --><item name="android:windowIsTranslucent">true</item><!-- 無標題 --><item name="android:windowNoTitle">true</item><item name="android:background">@android:color/transparent</item><!-- 背景透明 --><item name="android:windowBackground">@android:color/transparent</item><!-- 模糊 --><item name="android:backgroundDimEnabled">true</item><!-- 遮罩層透明度 --><item name="android:backgroundDimAmount">0.5</item></style>第九種:完全自定義dialog
步驟一:先寫一個需求需要的布局文件(例如下:名稱為:test)
步驟二:寫一個類繼承dialog
public class TestDialog extends Dialog {//ps:!!!因為繼承dialog,所以,在該類的方法里寫dialog的方法即可(例:dismiss()),不用dialog.dismiss();public TestDialog(@NonNull Context context) {//如果要設置dialog占滿寬或高,super里一定要添加R.style.DialogTheme,//否則params.width或params.height設置占滿是沒有效果的super(context,R.style.DialogTheme);}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//設置布test局setContentView(R.layout.test);//=======設置關于dialog的樣式,這樣式也可以在創建TestDialog對象時那里寫Window window=getWindow();//也可這樣寫:dialog.getWindow();//dialog顯示的位置window.setGravity(Gravity.BOTTOM);//dialog的大小//window.getDecorView().setPadding(50,0,50,50);//dialog的動畫(R.style.dialog_menu_animStyle:自定義的動畫)window.setWindowAnimations(R.style.dialog_menu_animStyle);//設置參數WindowManager.LayoutParams params=window.getAttributes();params.width=WindowManager.LayoutParams.MATCH_PARENT;params.height=WindowManager.LayoutParams.WRAP_CONTENT;} }步驟三:在需要彈出該dialog的地方,使用自定義的dialog
//==使用dialogTestDialog testDialog=new TestDialog(SafetyActivity.this);testDialog.show();第十種:日期:
自定義dialog彈出和退出的動畫
步驟一:在anim層(anim層時res層下的,是專門放動畫的文件夾,第一次需要創建該文件夾,具體創建百度) 新建dialog_in_anim.xml文件做彈出過程,代碼如下: <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"><translateandroid:duration="500"android:fromXDelta="0%p"android:toXDelta="0%"android:fromYDelta="100%p"android:toYDelta="0" /></set> 步驟二:再新建一個退出過程的xml,名為dialog_out_anim <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"><translateandroid:duration="500"android:fromXDelta="0"android:fromYDelta="0%p"android:toXDelta="0"android:toYDelta="100%p" /> </set> 步驟三:在values層的styles.xml添加顯示過程和退出過程的樣式(dialog_menu_animStyle:樣式名稱, 可根據需求起) <style name="dialog_menu_animStyle"><item name="android:windowEnterAnimation">@anim/dialog_in_anim</item><item name="android:windowExitAnimation">@anim/dialog_out_anim</item></style> 步驟四:使用dialog_menu_animStyle這個動畫:例:在上面第九種dialog知識里有寫 Window window=getWindow();//也可這樣寫:dialog.getWindow();//dialog的動畫(R.style.dialog_menu_animStyle:自定義的動畫)window.setWindowAnimations(R.style.dialog_menu_animStyle);總結
以上是生活随笔為你收集整理的Dialog 对话框的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: entity命名规则
- 下一篇: 高项、高级项目管理师论文-进度管理