项目中,经常会有弹出对话框,之前的文章有提到懒人dialog,不过那是第三方的,而现在这几个完全是自定义的,先看看效果:
代码:
package com.gyq.utilstest;
import android.app.AlertDialog;
import android.graphics.drawable.AnimationDrawable;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.gyq.utilstest.base.ActivityFragmentInject;
import com.gyq.utilstest.base.BaseActivity;
import com.gyq.utilstest.utils.ToastUtil;
import com.gyq.utilstest.widget.ContainsEmojiEditText;
@ActivityFragmentInject(
contentViewId = R.layout.activity_main,
hasNavigationView = false,
hasToolbar = true,
toolbarTitle = R.string.lab_bind,
toolbarLeftIcon = R.drawable.selector_back
)
public class MainActivity extends BaseActivity {
private EditText mText;
private Button mOk;
private TextView mContent;
// private
@Override
protected void findViewAfterViewCreate() {
mText = (EditText)findViewById(R.id.edt_text);
mOk = (Button)findViewById(R.id.btn_ok);
mContent = (TextView)findViewById(R.id.tv_content);
}
@Override
protected void initDataAfterFindView() {
mOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/*String text = mText.getText().toString();
MLog.d("ZM",text);
if (!EditTextUtil.isAvailString(text,14)) {
MLog.d("ZM",text + ">>>>>>14");
ToastUtil.showToast(getString(R.string.device_name_too_long));
return;
}
mContent.setText(text);*/
//中间对话框
showDialog();
//showVersionDialog();
//updateDoorDialog();
}
});
// mPayInput.onClick(mContent);
}
@Override
public void leftIconClick(View view) {
}
private AlertDialog dialog;
private void showDialog(){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
dialog = builder.create();
View view = View.inflate(this,R.layout.dialog_delete_edit,null);
TextView txtUse = (TextView) view.findViewById(R.id.txt_use);
TextView txtEdit = (TextView) view.findViewById(R.id.txt_edit);
TextView txtDelete = (TextView) view.findViewById(R.id.txt_delete);
txtUse.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
txtEdit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
txtDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.setView(view);
dialog.show();
}
@Override
public void rightIconClick(View view) {
finish();
}
private AlertDialog versionDialog;
private void showVersionDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
versionDialog = builder.create();
View view = View.inflate(this, R.layout.dialog_device_add_notice, null);
final LinearLayout llBefore = (LinearLayout)view.findViewById(R.id.ll_before);
final LinearLayout llAfter = (LinearLayout)view.findViewById(R.id.ll_after);
final ImageView imgWaiting = (ImageView) view.findViewById(R.id.img_config_icon1);
//final TextView txtMsg = (TextView) view.findViewById(R.id.txt_msg);
TextView txtTitle = (TextView) view.findViewById(R.id.txt_title);
txtTitle.setText(getString(R.string.base_update_notice));
final TextView txtMsg = (TextView) view.findViewById(R.id.txt_msg);
TextView txtCancle = (TextView) view.findViewById(R.id.txt_cancle);
txtMsg.setText(getString(R.string.base_need_update));
txtMsg.setGravity(Gravity.CENTER);
txtCancle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
versionDialog.dismiss();
}
});
TextView txtOk = (TextView) view.findViewById(R.id.txt_ok);
llBefore.setVisibility(View.VISIBLE);
llAfter.setVisibility(View.GONE);
txtOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//versionDialog.dismiss();
//updateVersion();
txtMsg.setText("正在搜索,请稍后...");
llBefore.setVisibility(View.GONE);
llAfter.setVisibility(View.VISIBLE);
AnimationDrawable animationDrawable = (AnimationDrawable) imgWaiting.getDrawable();
if(animationDrawable != null){
animationDrawable.start();
}
}
});
versionDialog.setView(view);
versionDialog.show();
}
private AlertDialog monNameDialog;
private void updateDoorDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
monNameDialog = builder.create();
View view = View.inflate(this, R.layout.dialog_mon_name, null);
final ContainsEmojiEditText dgName = (ContainsEmojiEditText) view.findViewById(R.id.ed_name);
view.findViewById(R.id.btn_confirm).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String newName = dgName.getText().toString().trim();
if (TextUtils.isEmpty(newName)) {
ToastUtil.showToast("名称不能为空!");
return;
}
if (monNameDialog != null) monNameDialog.dismiss();
}
});
view.findViewById(R.id.btn_cancle).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (monNameDialog != null) monNameDialog.dismiss();
}
});
monNameDialog.setView(view);
monNameDialog.show();
}
}
布局文件:
1.dialog_mon_name.xml
2.dialog_device_add_notice.xml
3.dialog_delete_edit.xml
还有一些别的代码,会上传相应的demo。