修改系统AlertDialog样式、自定义Dailog-----Activity透明效果
来源:互联网 发布:m2数据 2016 编辑:程序博客网 时间:2024/05/16 11:29
代码地址: 点击打开链接地址
另一片自定义dialog点击打开链接
主页面布局--2个button(一个弹出alertDialog,一个是自定义dialog)
activity_main.xml
<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" tools:context="com.example.dialogdemo.MainActivity" > <Button android:id="@+id/alertDialogByCode" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:text="alertDialog代码实现" /> <Button android:id="@+id/alertDialogByStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/alertDialogByCode" android:text="alertDialog style实现" /></RelativeLayout>
————————————接下来先看ShowProgressDialog————————————
接下来先看ShowProgressDialog的布局文件
showprogressdialog_loading_waiting.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="100dp" android:layout_height="100dp" > <RelativeLayout android:id="@+id/ll_pb" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true"><ProgressBar android:id="@+id/loading_process_dialog_progressBar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:indeterminate="false" android:indeterminateDrawable="@drawable/rotate_dialog_style_xml_color" /> <TextView android:id="@+id/hint" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/loading_process_dialog_progressBar" android:layout_marginTop="6dp" android:layout_centerHorizontal="true" android:text="加载中..." android:textColor="#4389c5" android:textSize="12dp" /> </RelativeLayout></RelativeLayout>
rotate_dialog_style_xml_color.xml--旋转的动画效果
<?xml version="1.0" encoding="utf-8"?><rotate xmlns:android="http://schemas.android.com/apk/res/android" android:fromDegrees="0" android:drawable="@drawable/loading_progress" android:pivotX="50%" android:pivotY="50%" android:toDegrees="1080" ></rotate>
ShowProgressDialog
package com.example.dialogdemo;import android.app.AlertDialog;import android.app.Dialog;import android.content.Context;import android.content.DialogInterface;import android.content.DialogInterface.OnKeyListener;import android.view.KeyEvent;import android.widget.TextView;public class ShowProgressDialog {private Dialog mLoadingDialog = null;public Dialog getDialog(){return mLoadingDialog;}/** * 开启等待对话框 */public void showLoading(Context context,String hint) {OnKeyListener keyListener = new OnKeyListener() {@Overridepublic boolean onKey(DialogInterface dialog, int keyCode,KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_HOME|| keyCode == KeyEvent.KEYCODE_SEARCH) {return true;}return false;}};/** * 如果创建的话,如果之前有的话,就直接清空在创建 */closeLoading();//创建AlertDialog实例mLoadingDialog = new AlertDialog.Builder(context).create();//设置监听事件---只有按下返回、搜索才可以响应mLoadingDialog.setOnKeyListener(keyListener);//点击其他地方无法取消该AlertDialogmLoadingDialog.setCanceledOnTouchOutside(false);try {//最后显示出来即可mLoadingDialog.show();//填充AlertDialog的布局mLoadingDialog.setContentView(R.layout.showprogressdialog_loading_waiting);//默认是加载中...,如果需要更换可以替换文字((TextView)mLoadingDialog.findViewById(R.id.hint)).setText(hint);} catch (Exception e) {}}/** * 替换原来的文字 */public void setHint(String hint) {((TextView)mLoadingDialog.findViewById(R.id.hint)).setText(hint);}/** * 关闭等待对话框 */public void closeLoading() {if (mLoadingDialog != null)try {mLoadingDialog.dismiss();mLoadingDialog.cancel();} catch (Exception e) {}mLoadingDialog = null;}}
————————————————接下来在看自定义dialog————————————————
接下来在看自定义dialog的布局--在开发工具上是填满横屏幕的,需要按着真机--android:layout_width="300dp"key_load_dialog_layout.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="300dp" android:layout_height="match_parent" android:background="#fff" android:orientation="vertical" > <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="64dp" android:layout_marginLeft="17dp" android:gravity="center_vertical" android:text="开启加密服务" android:textColor="#54c0e8" android:textSize="20sp" /> <ImageView android:id="@+id/devider" android:layout_width="match_parent" android:layout_height="2dp" android:layout_below="@id/title" android:layout_marginBottom="16dp" android:background="#54c0e8" /> <ProgressBar android:id="@+id/progressbar" android:layout_width="21dp" android:layout_height="21dp" android:layout_below="@id/devider" android:layout_marginLeft="30dp" /> <TextView android:id="@+id/secondTitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/devider" android:layout_marginLeft="8dp" android:layout_toRightOf="@+id/progressbar" android:gravity="center_vertical" android:text="正在为您下载私人密钥" android:textColor="#000" android:textSize="16sp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/secondTitle" android:layout_marginLeft="8dp" android:layout_marginRight="30dp" android:layout_marginTop="6dp" android:layout_marginBottom="30dp" android:layout_toRightOf="@+id/progressbar" android:lineSpacingExtra="3dp" android:text="私人密钥用于保障您的本地和通讯安全,他人无法盗用" android:textColor="#666666" android:textSize="14sp" /></RelativeLayout>
style样式
<style name="Godinsec_Diglog" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item> <!-- 边框 --> <item name="android:windowIsFloating">true</item> <!-- 是否浮现在activity之上 --> <item name="android:windowIsTranslucent">true</item> <!-- 半透明 --> <item name="android:windowNoTitle">true</item> <!-- 无标题 --> <item name="android:windowBackground">@android:color/transparent</item> <!-- 背景透明 --> <item name="android:backgroundDimEnabled">true</item> <!-- 模糊 --> </style>
DialogCreateUtils
package com.example.dialogdemo;import android.app.Dialog;import android.content.Context;/** * @author dandy */public class DialogCreateUtils {/** *下载key提示的dialog */public static Dialog createKeyLoadDialog(Context mContext){Dialog keyLoadDialog = new Dialog(mContext, R.style.Godinsec_Diglog);keyLoadDialog.setContentView(R.layout.key_load_dialog_layout);keyLoadDialog.setCanceledOnTouchOutside(false);keyLoadDialog.show();return keyLoadDialog;}}
MainActivity
package com.example.dialogdemo;import android.app.Activity;import android.app.Dialog;import android.os.Bundle;import android.os.Handler;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends Activity implements OnClickListener {private Button alertDialogByCode;private Button alertDialogByStyle;private Handler mHandler = new Handler();Dialog keyLoadDialog = null;ShowProgressDialog dialog = new ShowProgressDialog();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);alertDialogByCode = (Button) findViewById(R.id.alertDialogByCode);alertDialogByStyle = (Button) findViewById(R.id.alertDialogByStyle);alertDialogByCode.setOnClickListener(this);alertDialogByStyle.setOnClickListener(this);}private Runnable alertDialogByCodeRunnable = new Runnable() {@Overridepublic void run() {if (dialog != null) {dialog.closeLoading();}}};private Runnable alertDialogByStyleRunnable = new Runnable() {@Overridepublic void run() {if (keyLoadDialog != null) {keyLoadDialog.cancel();keyLoadDialog.dismiss();}}};@Overridepublic void onClick(View v) {if (v.getId() == R.id.alertDialogByCode) {dialog.showLoading(this, "注册中。。。");mHandler.postDelayed(alertDialogByCodeRunnable, 4000);}if (v.getId() == R.id.alertDialogByStyle) {if (keyLoadDialog == null) {keyLoadDialog = DialogCreateUtils.createKeyLoadDialog(MainActivity.this);}mHandler.postDelayed(alertDialogByStyleRunnable, 4000);}}}
————————————————————关于Activity透明的样式——————————————————
<activity android:name=".ui.gesture.GestureVerifyActivity" android:label="@string/app_name" android:screenOrientation="portrait" android:theme="@style/Transparent" > </activity>
<style name="Transparent"> <item name="android:windowBackground">@color/transparent</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowNoTitle">true</item> </style>
<color name="transparent">#00000000</color>
或者直接设置背景即可
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center_horizontal"
android:background="#7A000000" >
<activity
android:name=".ui.LandScapeActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
<intent-filter>
<action android:name="com.godinsec.seland.landscape" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
- 修改系统AlertDialog样式、自定义Dailog-----Activity透明效果
- 自定义Dailog的样式中的一些属性
- 修改系统alertdialog对话框风格样式
- 使用自定义透明Dialog样式的Activity
- 使用自定义透明Dialog样式的Activity
- 使用自定义透明Dialog样式的Activity
- 使用自定义透明Dialog样式的Activity
- 自定义透明Dialog样式的Activity
- 使用自定义透明Dialog样式的Activity
- 使用自定义透明Dialog样式的Activity
- AlertDialog的样式修改
- AlertDialog的样式修改
- AlertDialog自定义样式
- AlertDialog自定义样式
- 自定义AlertDialog列表样式
- AlertDialog 自定义样式
- AlertDialog自定义样式
- 自定义AlertDialog样式
- 查找子串
- 相似图片搜索的原理
- 工厂模式
- Git配置过程中出现的问题,以及解决方案
- mysql 存在update不存在insert
- 修改系统AlertDialog样式、自定义Dailog-----Activity透明效果
- iOS消息推送机制的实现
- 缺陷管理工具整理
- 【log】近期刷题 - 2015.9 - 2015.10
- C语言实验——某年某月的天数
- lubuntu vi/vim 使用系统粘贴版
- ReactiveCocoa2实战
- linux /etc/hosts文件作用
- [MFC]文档字符串、HKEY_CLASSES_ROOT注册表、.reg注册表文件