这是弹框输入密码的,这里还有一个是我发现一个博友写的自定义Dialog弹框信息和背景阴影显示 ,两者结合一起看,最好了!!!
下面是弹框输入密码的!!!
首先需要自定义一个类,继承Dialog
package com.djp.magpietest.dialog;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class EditDialog_Login extends Dialog {
private Button yes, no;//确定按钮
private TextView titleTv;//消息标题文本
private EditText text;//输入内容
private String titleStr;//从外界设置的title文本
private String messageStr;//从外界设置的消息文本
private String yesStr, noStr; //确定文本和取消文本的显示内容
private onNoOnclickListener noOnclickListener;//取消按钮被点击了的监听器
private onYesOnclickListener yesOnclickListener;//确定按钮被点击了的监听器
/**
* 设置取消按钮的显示内容和监听
*
* @param str
* @param onNoOnclickListener
*/
public void setNoOnclickListener(String str, onNoOnclickListener onNoOnclickListener) {
if (str != null) {
noStr = str;
}
this.noOnclickListener = onNoOnclickListener;
}
/**
* 设置确定按钮的显示内容和监听
*
* @param str
* @param onYesOnclickListener
*/
public void setYesOnclickListener(String str, onYesOnclickListener onYesOnclickListener) {
if (str != null) {
yesStr = str;
}
this.yesOnclickListener = onYesOnclickListener;
}
public EditDialog_Login(Context context) {
super(context, R.style.Dialog_Msg);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dialog);
//按空白处不能取消动画
setCanceledOnTouchOutside(true);
//初始化界面控件
initView();
//初始化界面数据
initData();
//初始化界面控件的事件
initEvent();
}
/**
* 初始化界面的确定和取消监听器
*/
private void initEvent() {
//设置确定按钮被点击后,向外界提供监听
yes.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (yesOnclickListener != null) {
yesOnclickListener.onYesClick(text.getText().toString());
}
}
});
no.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (noOnclickListener != null) {
noOnclickListener.onNoClick();
}
}
});
}
/**
* 初始化界面控件的显示数据
*/
private void initData() {
//如果用户自定了title和message
if (titleStr != null) {
titleTv.setText(titleStr);
}
if (messageStr != null) {
// messageTv.setText(messageStr);
}
//如果设置按钮的文字
if (yesStr != null) {
yes.setText(yesStr);
}
}
/**
* 初始化界面控件
*/
private void initView() {
yes = (Button) findViewById(R.id.bt_TrueforSet);
no = (Button) findViewById(R.id.bt_DeleteforSet);
titleTv = (TextView) findViewById(R.id.tv_shurudizhi);
text = (EditText) findViewById(R.id.et_LoginInput);
}
/**
* 从外界Activity为Dialog设置标题
*
* @param title
*/
public void setTitle(String title) {
titleStr = title;
}
/**
* 从外界Activity为Dialog设置dialog的message
*
* @param message
*/
public void setMessage(String message) {
messageStr = message;
}
/**
* 设置确定按钮和取消被点击的接口
*/
public interface onYesOnclickListener {
public void onYesClick(String phone);
}
public interface onNoOnclickListener {
public void onNoClick();
}
@Override
public void show() {
super.show();
}
}
接下来是布局文件:
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
tools:context=".MainActivity">
<Button
android:id="@+id/dialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="dialog!" />
</RelativeLayout>
activity_dialog.xml:
<?xml version="1.0" encoding="utf-8"?>
<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:orientation="vertical"
>
<TextView
android:id="@+id/tv_shurudizhi"
android:layout_marginTop="30dp"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="请输入密码登录"
android:textColor="#6F7B81"
android:textSize="20sp"
/>
<EditText
android:id="@+id/et_LoginInput"
android:layout_below="@id/tv_shurudizhi"
android:background="@drawable/bg_edttext"
android:layout_centerHorizontal="true"
android:layout_width="260dp"
android:inputType="textPassword"
android:layout_height="50dp"
android:layout_gravity="center"
android:layout_marginTop="30dp"
/>
<Button
android:id="@+id/bt_DeleteforSet"
android:layout_alignLeft="@+id/et_LoginInput"
android:layout_below="@+id/et_LoginInput"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:background="#9F9F9F"
android:textColor="#ffffff"
android:layout_marginTop="30dp"
android:text="取消"
android:onClick="bt_LoginDelet"
/>
<Button
android:id="@+id/bt_TrueforSet"
android:layout_alignRight="@+id/et_LoginInput"
android:layout_marginBottom="50dp"
android:layout_below="@+id/et_LoginInput"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:textColor="#ffffff"
android:background="#27274D"
android:layout_marginTop="30dp"
android:text="确定"
android:onClick="bt_LoginTrue"/>
</RelativeLayout>
activity_succes.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="成功"/>
</RelativeLayout>
主要使用:
MainActivity.java
package com.djp.magpietest.dialog;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Display;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private Button button;
private EditDialog_Login editDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editDialog = new EditDialog_Login(this);
//密码弹出Dialog
//overridePendingTransition(R.anim.default_anim_in,R.anim.default_anim_out);
editDialog.setTitle("请输入登录密码");
editDialog.setYesOnclickListener("确定", new EditDialog_Login.onYesOnclickListener() {
@Override
public void onYesClick(String text) {
if (!text.equals("123")) {
Display display = getWindowManager().getDefaultDisplay();
int height = display.getHeight();//得到屏幕宽度
Toast toast= Toast.makeText(MainActivity.this,"密码错误",Toast.LENGTH_SHORT);
toast.setGravity(Gravity.TOP, 0, height / 4); //toast弹框位置
toast.show();
} else {
editDialog.dismiss();
MainActivity.this.finish();
final Intent intent=new Intent(MainActivity.this,Success.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
}
});
editDialog.setNoOnclickListener("取消", new EditDialog_Login.onNoOnclickListener() {
@Override
public void onNoClick() {
editDialog.dismiss();
}
});
//点击按钮弹出Dialog
showEdit();
}
/**
* 点击按钮弹出Dialog
*/
private void showEdit() {
button= findViewById(R.id.dialog);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editDialog.show();
}
});
}
}