Dialog和DialogActivity
2016-05-25 17:29
501 查看
1 dialogactivity
以dialog形式弹出的对话框,可用于需要弹出的dialog比较复杂布局的情况,使用时,只需在manifest中为该activity设置为dialog主题,也可以对该主题进行重写相关属性,如下:
在Activity中设置点击区域外消失属性
在activity中设置窗口显示位置:
2 dialog
设置点击空白处关闭窗体:
自定义dialog样式,必须设置dialog.getWindow().setAttributes(p);否则,dialog的宽度和高度会非常小,不是预期所想:
R.style.CustomDialog如下:
3.pregressDialog
CustomProgressDialog的风格如下:
custom_progress_dialog.xml文件如下,一个垂直转动条和一个信息
android:indeterminateDrawable=”@drawable/progress_medium” 引用的是一个动画,内容如下:
以dialog形式弹出的对话框,可用于需要弹出的dialog比较复杂布局的情况,使用时,只需在manifest中为该activity设置为dialog主题,也可以对该主题进行重写相关属性,如下:
<style name="CustomDialogActivity" parent="android:style/Theme.Dialog"> <item name="android:background">#00000000</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsFloating">true</item> <item name="android:windowFrame">@null</item> <!--Dialog的windowFrame框为无 --> </style>
在Activity中设置点击区域外消失属性
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //////设置为true点击区域外消失 setFinishOnTouchOutside(true); setContentView(R.layout.activity_layout); }
在activity中设置窗口显示位置:
getWindow().setGravity(Gravity.BOTTOM);
2 dialog
设置点击空白处关闭窗体:
dialog.setCanceledOnTouchOutside(true); dialog.setCancelable(true);
自定义dialog样式,必须设置dialog.getWindow().setAttributes(p);否则,dialog的宽度和高度会非常小,不是预期所想:
private AlertDialog dialog; private void showDialog() { if (dialog == null) { dialog = new AlertDialog.Builder(MyNongZiPlaceActivity.this,R.style.CustomDialog).create(); dialog.show(); dialog.setCanceledOnTouchOutside(true);// 设置点击屏幕Dialog不消失 Window dialogWindow = dialog.getWindow(); dialogWindow.setContentView(R.layout.dialog_exit_layout); WindowManager.LayoutParams p = dialogWindow.getAttributes(); // 获取对话框当前的参数值 p.height = ViewGroup.LayoutParams.WRAP_CONTENT; p.width = (int) (getWindowManager().getDefaultDisplay().getWidth() * 0.8); // 宽度设置为屏幕的0.8*/ dialogWindow.setAttributes(p); Button mPositiveButton = (Button) dialog.findViewById(R.id.positiveButton); TextView content = (TextView) dialog.findViewById(R.id.content_text); content.setText("此地区无乡镇,请填写详细地址"); mPositiveButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } }); } else { dialog.show(); } }
R.style.CustomDialog如下:
<style name="CustomDialog" parent="android:style/Theme.Dialog"> <item name="android:background">#00000000</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsFloating">true</item> <item name="android:windowFrame">@null</item> <!--Dialog的windowFrame框为无 --> </style>
3.pregressDialog
package com.example.util; import android.app.Dialog; import android.content.Context; import android.view.Gravity; import android.widget.TextView; import com.example.util.R; public class CustomProgressDialog extends Dialog { public CustomProgressDialog(Context context, String strMessage) { this(context, R.style.CustomProgressDialog, strMessage); } public CustomProgressDialog(Context context, int theme, String strMessage) { super(context, theme); this.setContentView(R.layout.custom_progress_dialog); this.getWindow().getAttributes().gravity = Gravity.CENTER; TextView tvMsg = (TextView) this.findViewById(R.id.id_tv_loadingmsg); if (tvMsg != null) { tvMsg.setText(strMessage); } } //用于控制失去焦点后是否消失 @Override public void onWindowFocusChanged(boolean hasFocus) { if (!hasFocus) { //dismiss(); } } }
CustomProgressDialog的风格如下:
<style name="CustomProgressDialog" parent="@style/CustomDialog"> <!--背景颜色及透明程度--> <item name="android:windowBackground">@android:color/transparent</item> <!--是否有标题 --> <item name="android:windowNoTitle">true</item> <!--是否浮现在activity之上--> <item name="android:windowIsFloating">true</item> <!--是否模糊--> <item name="android:backgroundDimEnabled">false</item> </style>
custom_progress_dialog.xml文件如下,一个垂直转动条和一个信息
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="@drawable/progress_dialog_bg" android:padding="@dimen/common_padding_width" > <ProgressBar android:id="@+id/loadingImageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginBottom="@dimen/common_inner_distance" android:indeterminateDrawable="@drawable/progress_medium" /> <TextView android:id="@+id/id_tv_loadingmsg" android:layout_width="wrap_content" android:minWidth="120dp" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:gravity="center_horizontal" android:textColor="#ffffff" android:textSize="16sp" /> </LinearLayout>
android:indeterminateDrawable=”@drawable/progress_medium” 引用的是一个动画,内容如下:
<?xml version="1.0" encoding="utf-8"?> <animated-rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/progress_img" android:fromDegrees="0" android:pivotX="50.0%" android:pivotY="50.0%" android:toDegrees="360" />
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories