導航:首頁 > 操作系統 > androiddialog詳解

androiddialog詳解

發布時間:2022-07-06 14:27:24

1. android中Popupwindow和Dialog的區別

除了外觀樣式和顯示的位置的區別之外,他們之間最本質的區別是:
dialog是非阻塞式對話框,popupwindow是阻塞式對話框。也就是說dialog彈出時
後台還可以進行很多的操作,而popupwindow彈出是
後台進程是阻塞的,要一直等待popupwindow
消失
才會進行操作。

2. android中Dialog和PopupWindow的區別

android的系統彈出控制項很多,Toast,OptionsMenu,Dialog,PopupWindow等。一大堆的彈出控制項,文檔又沒有明確說出各控制項應用於哪些場景,使得實際開發中很多雞肋,有時候自己花很多力氣去嘗試做一個彈出控制項,結果才發現用錯了api介面。
最近在做一個項目,要求用戶在title欄中點擊button彈出檢索框進行搜索。在網上找了很多,最開始想的是用AlertDialog,我要做的效果是彈出框寬度為全屏:match_parent,高度為自適應:wrap_content,底層為背景半透明。但是在學習過的源碼中從來沒有見到過占滿全屏的Dialog彈框,所以想著用PopupWindow來做。
以下根據網上查閱的資料,整理了Dialog和PopupWindow的一些區別,涉及到彈框場景時,以作參考。
AlertDialog和Popupwindow的區別:
1)AlertDialog是非阻塞線程的,Popupwindow是阻塞線程的。
2)Dialog沒法設置寬為整個屏幕寬,總有點邊界。Popupwindow可以。

1、Dialog及設置Dialog的動畫

設置D

3. 如何自定義Android Dialog的樣式

Android 中自定義Dialog的樣式,主要是通過自定義的xml,然後載入到dialog的背景中,如下步驟:

1、自定義Dialog

java">finalDialogdialog=newDialog(this,R.style.Theme_dialog);

2、窗口布局

ViewcontentView=LayoutInflater.from(this).inflate(R.layout.select_list_dialog,null);

3、把設定好的窗口布局放到dialog中

dialog.setContentView(contentView);

4、設定點擊窗口空白處取消會話

dialog.setCanceledOnTouchOutside(true);

5、具體的操作

ListViewmsgView=(ListView)contentView.findViewById(R.id.listview_flow_list);

6、展示窗口

dialog.show();
例:
finalDialogdialog=newDialog(this,R.style.Theme_dialog);
ViewcontentView=LayoutInflater.from(this).inflate(R.layout.select_list_dialog,null);
dialog.setContentView(contentView);
dialog.setCanceledOnTouchOutside(true);
ListViewmsgView=(ListView)contentView.findViewById(R.id.listview_flow_list);
TextViewtitleText=(TextView)contentView.findViewById(R.id.title);
titleText.setText("請選擇銀行卡");
=(this,mBankcardList);
msgView.setAdapter(adapter);
msgView.setOnItemClickListener(newOnItemClickListener(){
@Override
publicvoidonItemClick(AdapterViewparent,Viewview,intposition,longid){
//Toast.makeText(RechargeFlowToMobileActivity.this,
//position+"",0).show();
mSelectCard=mBankcardList.get(position);
Stringarea=mSelectCard.getBank_card();
mCardNumberText.setText(area);
dialog.dismiss();
}
});
ButtoncloseBtn=(Button)contentView.findViewById(R.id.close);
closeBtn.setClickable(true);
closeBtn.setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewv){
dialog.dismiss();
}
});
dialog.show();

以上就是在Android開發自定義dialog樣式的方法和步驟,android很多的控制項都提供了介面或者方法進行樣式的定義和修改。

4. android系統中實現對話框dialog的基本步驟包括哪些

一句就可以顯示對話框。我們在調試程序的時候用,是來檢查自己程序,走到這步是否正確的檢查。
沒有什麼步驟說法。1是顯示系統語法錯誤。2是自己寫提示語。自己寫在提示框的文本就ok了。

5. android dialog彈出框有哪些

private void dialog1(){
AlertDialog.Builder builder=new AlertDialog.Builder(this); //先得到構造器
builder.setTitle("提示"); //設置標題
builder.setMessage("是否確認退出?"); //設置內容
builder.setIcon(R.mipmap.ic_launcher);//設置圖標,圖片id即可
builder.setPositiveButton("確定", new DialogInterface.OnClickListener() { //設置確定按鈕
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss(); //關閉dialog
Toast.makeText(MainActivity.this, "確認" + which, Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { //設置取消按鈕
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
Toast.makeText(MainActivity.this, "取消" + which, Toast.LENGTH_SHORT).show();
}
});

builder.setNeutralButton("忽略", new DialogInterface.OnClickListener() {//設置忽略按鈕
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
Toast.makeText(MainActivity.this, "忽略" + which, Toast.LENGTH_SHORT).show();
}
});
//參數都設置完成了,創建並顯示出來
builder.create().show();
}

6. android里dialog語句的疑問

AlertDialog類中有個內部類AlertDialog.Builde類,了解下內部類就明白為什麼這樣寫了:
AlertDialog noFileFoundAlert = new AlertDialog.Builder(this)與AlertDialog.Builder builder = new AlertDialog.Builder(this)的區別?
答:前一個AlertDialog類,後一個是AlertDialog.Builder類(AlertDialog的內部靜態類),你說有沒有區別吧?肯定是有區別的,一個在外,一個在內,然後你的問題在於不了解AlertDialog類和AlertDialog.Builder類中的方法,這個內部類中有set……等等一系列方法,但是最後要建立對話框的時候creat()方法,卻在AlertDialog類中,你覺得應該如何寫好呢,既能設置好內容又可以建立對話框當然是第一種寫法了

7. 移動平台應用開發這門課程第六章Android對話框Dialog、菜單Menu、通知Notification的知識點有哪些

移動平台應用開發這門課第六章Android對話框Dialog、菜單Menu、通知Notification的知識點包含章節導引,第一節AlertDialog使用,第二節ProgressDialog進度條對話框,第三節選項菜單,第四節上下文菜單,第五節通知Notification,。

8. android怎樣自定義dialog

Android開發過程中,常常會遇到一些需求場景——在界面上彈出一個彈框,對用戶進行提醒並讓用戶進行某些選擇性的操作,
如退出登錄時的彈窗,讓用戶選擇「退出」還是「取消」等操作。
Android系統提供了Dialog類,以及Dialog的子類,常見如AlertDialog來實現此類功能。
一般情況下,利用Android提供的Dialog及其子類能夠滿足多數此類需求,然而,其不足之處體現在:
1. 基於Android提供的Dialog及其子類樣式單一,風格上與App本身風格可能不太協調;
2. Dialog彈窗在布局和功能上有所限制,有時不一定能滿足實際的業務需求。
本文將通過在Dialog基礎上構建自定義的Dialog彈窗,以最常見的確認彈框為例。
本樣式相對比較簡單:上面有一個彈框標題(提示語),下面左右分別是「確認」和「取消」按鈕,當用戶點擊「確認」按鈕時,彈框執行
相應的確認邏輯,當點擊「取消」按鈕時,執行相應的取消邏輯。
首先,自定義彈框樣式:

1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="match_parent"
4 android:layout_height="wrap_content"
5 android:background="@drawable/dialog_bg"
6 android:orientation="vertical" >
7
8 <TextView
9 android:id="@+id/title"
10 android:layout_width="wrap_content"
11 android:layout_height="wrap_content"
12 android:layout_gravity="center"
13 android:paddingTop="14dp"
14 android:textColor="@color/login_hint"
15 android:textSize="@dimen/text_size_18" />
16
17 <LinearLayout
18 android:layout_width="match_parent"
19 android:layout_height="wrap_content"
20 android:layout_marginBottom="14dp"
21 android:layout_marginLeft="20dp"
22 android:layout_marginRight="20dp"
23 android:layout_marginTop="30dp" >
24
25 <TextView
26 android:id="@+id/confirm"
27 android:layout_width="wrap_content"
28 android:layout_height="wrap_content"
29 android:layout_marginRight="10dp"
30 android:layout_weight="1"
31 android:background="@drawable/btn_confirm_selector"
32 android:gravity="center"
33 android:textColor="@color/white"
34 android:textSize="@dimen/text_size_16" />
35
36 <TextView
37 android:id="@+id/cancel"
38 android:layout_width="wrap_content"
39 android:layout_height="wrap_content"
40 android:layout_marginLeft="10dp"
41 android:layout_weight="1"
42 android:background="@drawable/btn_cancel_selector"
43 android:gravity="center"
44 android:textColor="@color/login_hint"
45 android:textSize="@dimen/text_size_16" />
46 </LinearLayout>
47
48 </LinearLayout>

然後,通過繼承Dialog類構建確認彈框控制項ConfirmDialog:

1 package com.corn.widget;
2
3 import android.app.Dialog;
4 import android.content.Context;
5 import android.os.Bundle;
6 import android.util.DisplayMetrics;
7 import android.view.LayoutInflater;
8 import android.view.View;
9 import android.view.Window;
10 import android.view.WindowManager;
11 import android.widget.TextView;
12
13 import com.corn.R;
14
15 public class ConfirmDialog extends Dialog {
16
17 private Context context;
18 private String title;
19 private String confirmButtonText;
20 private String cacelButtonText;
21 private ClickListenerInterface clickListenerInterface;
22
23 public interface ClickListenerInterface {
24
25 public void doConfirm();
26
27 public void doCancel();
28 }
29
30 public ConfirmDialog(Context context, String title, String confirmButtonText, String cacelButtonText) {
31 super(context, R.style.MyDialog);
32 this.context = context;
33 this.title = title;
34 this.confirmButtonText = confirmButtonText;
35 this.cacelButtonText = cacelButtonText;
36 }
37
38 @Override
39 protected void onCreate(Bundle savedInstanceState) {
40 // TODO Auto-generated method stub
41 super.onCreate(savedInstanceState);
42
43 init();
44 }
45
46 public void init() {
47 LayoutInflater inflater = LayoutInflater.from(context);
48 View view = inflater.inflate(R.layout.confirm_dialog, null);
49 setContentView(view);
50
51 TextView tvTitle = (TextView) view.findViewById(R.id.title);
52 TextView tvConfirm = (TextView) view.findViewById(R.id.confirm);
53 TextView tvCancel = (TextView) view.findViewById(R.id.cancel);
54
55 tvTitle.setText(title);
56 tvConfirm.setText(confirmButtonText);
57 tvCancel.setText(cacelButtonText);
58
59 tvConfirm.setOnClickListener(new clickListener());
60 tvCancel.setOnClickListener(new clickListener());
61
62 Window dialogWindow = getWindow();
63 WindowManager.LayoutParams lp = dialogWindow.getAttributes();
64 DisplayMetrics d = context.getResources().getDisplayMetrics(); // 獲取屏幕寬、高用
65 lp.width = (int) (d.widthPixels * 0.8); // 高度設置為屏幕的0.6
66 dialogWindow.setAttributes(lp);
67 }
68
69 public void setClicklistener(ClickListenerInterface clickListenerInterface) {
70 this.clickListenerInterface = clickListenerInterface;
71 }
72
73 private class clickListener implements View.OnClickListener {
74 @Override
75 public void onClick(View v) {
76 // TODO Auto-generated method stub
77 int id = v.getId();
78 switch (id) {
79 case R.id.confirm:
80 clickListenerInterface.doConfirm();
81 break;
82 case R.id.cancel:
83 clickListenerInterface.doCancel();
84 break;
85 }
86 }
87
88 };
89
90 }

在如上空間構造代碼中,由於控制項的"確認"和"取消"邏輯與實際的應用場景有關,因此,控制項中通過定義內部介面來實現。

在需要使用此控制項的地方,進行如下形式調用:

1 public static void Exit(final Context context) {
2 final ConfirmDialog confirmDialog = new ConfirmDialog(context, "確定要退出嗎?", "退出", "取消");
3 confirmDialog.show();
4 confirmDialog.setClicklistener(new ConfirmDialog.ClickListenerInterface() {
5 @Override
6 public void doConfirm() {
7 // TODO Auto-generated method stub
8 confirmDialog.dismiss();
9 //toUserHome(context);
10 AppManager.getAppManager().AppExit(context);
11 }
12
13 @Override
14 public void doCancel() {
15 // TODO Auto-generated method stub
16 confirmDialog.dismiss();
17 }
18 });
19 }

調用中實現了此控制項的內部介面,並賦給控制項本身,以此在點擊按鈕時實現基於外部具體業務邏輯的函數回調。

9. Android Studio中的DialogInterface和Dialog的關系是什麼

DialogInterface:對話界面。
Dialog:對話。
關系是:
在該界面上可以用鍵盤的鍵表現各種對話類型,或者取消,或者消除, 或者保存。
(Interface that defines a dialog-type class that can be shown, dismissed, or canceled, and may have buttons that can be clicked.)

閱讀全文

與androiddialog詳解相關的資料

熱點內容
程序員搞笑花名 瀏覽:501
dota2怎麼設置國服伺服器地址 瀏覽:212
單片機高電平驅動 瀏覽:115
ios多選文件夾 瀏覽:909
加強行車調度命令管理 瀏覽:243
伺服器已禁用什麼意思 瀏覽:150
部隊命令回復 瀏覽:755
神奇寶貝伺服器地圖怎麼設置 瀏覽:382
加密演算法輸出固定長度 瀏覽:862
程序員去重慶還是武漢 瀏覽:121
伺服器如何撤銷網頁登錄限制 瀏覽:980
微信公眾平台php開發視頻教程 瀏覽:628
怎麼看蘋果授權綁定的app 瀏覽:255
壓縮機單級壓縮比 瀏覽:380
linux測試php 瀏覽:971
什麼時候梁旁邊需要加密箍筋 瀏覽:40
微信清粉軟體源碼 瀏覽:717
matlabdoc命令 瀏覽:550
如何去ping伺服器 瀏覽:75
ecshop安裝php55 瀏覽:817