修改系统AlertDialog样式、自定义Dailog-----Activity透明效果

 

代码地址:   点击打开链接地址

另一片自定义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() {
			@Override
			public 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);
		//点击其他地方无法取消该AlertDialog
		mLoadingDialog.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();

	@Override
	protected 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() {

		@Override
		public void run() {

			if (dialog != null) {
				dialog.closeLoading();
			}
		}
	};
	private Runnable alertDialogByStyleRunnable = new Runnable() {

		@Override
		public void run() {

			if (keyLoadDialog != null) {
				keyLoadDialog.cancel();
				keyLoadDialog.dismiss();
			}
		}
	};

	@Override
	public 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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值