Android中Dialog的使用
来源:互联网 发布:网络组策略 编辑:程序博客网 时间:2024/06/06 04:09
上一篇博文讲到对话框popWindow的使用,这篇博文主要讲解Dialog的使用。
1、什么是Dialog?
Dialog就是对话框的一种方式!在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择,这种对话框叫Dialog。最经常使用的,大家也比较熟悉的,也使用比较频繁有AlertDialog,这边篇博文将比较详尽的讲解Dialog的使用。
2、Dialog的特性
Android的对话框有两种:PopupWindow和Dialog。它们的不同点在于:
Dialog的位置固定,而PopupWindow的位置可以随意。
Dialog是非阻塞线程的,而PopupWindow是阻塞线程的。
以上两点是PopupWindow和Dialog最大的不同。
3、AlertDialog的使用
通过查看这句代码AlertDialog定义的源码
public class android.app.AlertDialog extends android.app.Dialog implements android.content.DialogInterface我们可以发现AlertDialog是继承于Dialog的,然而AlertDialog有几种用法呢,经过整理AlertDialog经常使用的有7种,具体请查看我的博文:
7种形式的Android AlertDialog使用举例
4、Diglog的重写
当AlertDialog不能满足我们的需求时,我们应该怎么做,因为AlertDialog是继承于Dialog的,那我们是不是也自己重写一个Dialog呢,这个是可以的
以下一个重写Dialog的小示例:
重写Dialog的界面:
XMl界面代码为:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#60000000" android:gravity="center" android:orientation="vertical" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:background="@drawable/basedl_bg" android:focusable="true" android:focusableInTouchMode="true" android:orientation="vertical" > <LinearLayout android:layout_width="fill_parent" android:layout_height="@dimen/dialog_face_hight" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:layout_marginTop="20dp" android:background="@drawable/fw_dialog_signtype_blue" android:orientation="horizontal" > <ImageView android:id="@+id/basedl_iv_head" android:layout_width="0dp" android:layout_height="fill_parent" android:layout_weight="2.5" android:padding="5dp" android:src="@drawable/ic_head_default" /> <LinearLayout android:layout_width="0dp" android:layout_height="fill_parent" android:layout_weight="7.5" android:orientation="vertical" > <RelativeLayout android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" > <TextView android:id="@+id/anyfish_dialog_tv_hint" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_alignParentLeft="true" android:gravity="bottom|left" android:paddingLeft="15dp" android:text="对话框名称" android:textColor="#ffffff" /> </RelativeLayout> <TextView android:id="@+id/basedl_tv_hint02" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" android:gravity="center_vertical|left" android:paddingLeft="15dp" android:text="对话框注释,解释这个对话框作用" android:textColor="#ffffff" android:textSize="@dimen/dialog_fistype_exp_textsize" /> </LinearLayout> </LinearLayout> <EditText android:id="@+id/anyfish_dialog_et_input" android:layout_width="match_parent" android:layout_height="80dp" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:layout_marginTop="@dimen/dialog_hint_margintop" android:background="@drawable/fw_dl_input_et_nor" android:ems="10" android:gravity="top|left" android:hint="请填写内容" android:minHeight="50dp" android:padding="8dp" android:textColor="#bdbedf" android:textSize="@dimen/dialog_hint_textsize" /> <LinearLayout android:layout_width="match_parent" android:layout_height="@dimen/dialog_btn_hight" android:layout_marginBottom="14dp" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:layout_marginTop="@dimen/dialog_hint_margintop" android:gravity="center" android:minHeight="50dp" android:orientation="horizontal" > <Button android:id="@+id/btn_ok" android:layout_width="0dp" android:layout_height="fill_parent" android:layout_marginRight="20dp" android:layout_weight="1" android:background="@drawable/basedl_bt_ok" android:text="确定" android:textColor="@color/main_textcolor" android:textSize="@dimen/dialog_confirmbtn_textsize" /> <Button android:id="@+id/btn_cancel" android:layout_width="0dp" android:layout_height="fill_parent" android:layout_weight="1" android:background="@drawable/basedl_bt_cancle" android:text="取消" android:textColor="@color/main_textcolor" android:textSize="@dimen/dialog_confirmbtn_textsize" /> </LinearLayout> </LinearLayout></LinearLayout>
父界面代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/white" android:gravity="center" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <Button android:id="@+id/btn_dialog" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="对话框弹出" /> <TextView android:id="@+id/tv_dialog" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/btn_dialog" android:text="输入内容" android:textSize="20sp" /></RelativeLayout>重写Dialog代码:
package com.example.myalertdialog;import android.app.Dialog;import android.content.Context;import android.view.View;import android.widget.Button;import android.widget.EditText;public class MyAlertDialog extends Dialog {private EditText intputEt;private Button sumitBtn;private Button cancelBtn;private Context context;public MyAlertDialog(Context context) {super(context, R.style.BaseDialogStyle);this.context = context;initDialog();}protected void initDialog() {setContentView(R.layout.my_dl_type_et);intputEt = (EditText) findViewById(R.id.anyfish_dialog_et_input);sumitBtn = (Button) findViewById(R.id.btn_ok);cancelBtn = (Button) findViewById(R.id.btn_cancel);cancelBtn.setOnClickListener(new android.view.View.OnClickListener() {@Overridepublic void onClick(View v) {dismiss();}});}/** * 打开弹窗 */public void onStartDiglog() {show();}/** * 关闭弹窗 */public void onCloseDiglog(){dismiss();}/** * @return 返回输入值 */public String getInputValue() {if (intputEt != null) {return String.valueOf(intputEt.getText()).trim();} else {return "";}}/** * @param inputValue * 设置输入的值 */public void setInputValue(String inputValue) {if (intputEt != null && inputValue != null) {intputEt.setText(inputValue);}}/** * @param onClickListener * 设置的确认键监听事件 */public void setSumitListener(android.view.View.OnClickListener onClickListener) {if (sumitBtn != null && onClickListener != null) {sumitBtn.setOnClickListener(onClickListener);}}}ps:R.style.BaseDialogStyle为弹出框显示的效果
父activity代码:
package com.example.myalertdialog;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class MainActivity extends Activity {private Button dialogBtn;private MyAlertDialog myAlertDialog;private TextView dialogTv;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);findViews();initListener();}private void findViews(){dialogBtn=(Button) findViewById(R.id.btn_dialog);dialogTv=(TextView) findViewById(R.id.tv_dialog);myAlertDialog=new MyAlertDialog(this);}private void initListener(){myAlertDialog.setSumitListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubdialogTv.setText(myAlertDialog.getInputValue());myAlertDialog.onCloseDiglog();}});dialogBtn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubmyAlertDialog.onStartDiglog();}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}
源码下载地址:资源下载
1 0
- Android中Dialog的使用
- Android中Dialog的使用
- Android中Dialog的使用
- Android中Dialog的使用
- Android中Dialog的使用
- Android中Dialog的使用
- android中dialog的使用
- Android中Dialog的使用
- Android中Dialog的使用
- Android 中dialog的使用
- Android中Dialog的使用
- Android中dialog的使用
- Android中Dialog的使用
- android中Dialog的使用
- Android中Dialog的使用
- Android中对话框(dialog)的使用
- Android开发中Dialog对话框的使用
- Android开发中Dialog对话框的使用
- win7安装linux系统
- 一个窗口显示多幅图片
- ArcGIS Server 10.1新特性
- ASP.NET 学习路线图
- python的命令行解析argparse
- Android中Dialog的使用
- C++中的控制函数
- BZOJ2875//wikioi1281
- Android:下载管理器(DownloadManager),实现程序更新!
- 怎么才能恢复U盘中丢失掉的数据
- [算法3]Kmeans算法
- 【机器学习算法-python实现】svm支持向量机(2)—简化版SMO算法
- Leetcode_trapping-rain-water(updated c++ and python version)
- IOS——各种动画效果