android 自定义 dialog

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介:         package com.curiousby.baoyou.cn.quote.dialog; import com.curiousby.baoyou.cn.



 

 

 

 

package com.curiousby.baoyou.cn.quote.dialog;
 

import com.curiousby.baoyou.cn.mysqlconsole.R; 
import com.curiousby.baoyou.cn.mysqlconsole.util.KeyBoardUtils;

import android.content.Context; 
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.TextView;

/**
 * @author baoyou E-mail:curiousby@163.com
 * @version 2016-8-16 下午4:43:17
 *
 * desc: ...
 */
public class AddDatabaseDialog extends BaseDialog  implements OnClickListener{
	
	private Context mContext;
	
	private EditText mIpEditView;
	private EditText mDatabaseEditView;
	private EditText mUserNameEditView;
	private EditText mPasswordEditView;
	private TextView mConfirmView;
	private TextView mCancelView;

	private OnConfirmListener mOnConfirmListener;
	private OnCancleListener mOnCancleListener;
	
	public AddDatabaseDialog(Context context,OnConfirmListener onConfirmListener,OnCancleListener onCancleListener) {
		super(context,R.style.Theme_Light_AddDatabaseDialog); 
		this.mContext = context;
		this.mOnCancleListener = onCancleListener;
		this.mOnConfirmListener= onConfirmListener;
		setContentView(R.layout.dialog_add_database);
		
		initView();
		initListener();
	}
  

	private void initView() { 
		mIpEditView = (EditText) this.findViewById(R.id.et_dialog_add_database_ip);
		mDatabaseEditView = (EditText) this.findViewById(R.id.et_dialog_add_database_database_name);
		mUserNameEditView = (EditText) this.findViewById(R.id.et_dialog_add_database_database_username);
		mPasswordEditView = (EditText) this.findViewById(R.id.et_dialog_add_database_database_password);
		
		mConfirmView = (TextView) this.findViewById(R.id.tv_dialog_add_database_ok);
		mCancelView = (TextView) this.findViewById(R.id.tv_dialog_add_database_cancel);
	}
	private void initListener() { 
		mConfirmView.setOnClickListener(this);
		mCancelView.setOnClickListener(this);
	}

	@Override
	public void onClick(View view) { 
		switch (view.getId()) {
		case R.id.tv_dialog_add_database_ok:
			mOnConfirmListener.onConfirm(new AddDatabaseDialogEntity(
					mIpEditView.getText().toString(),
					mDatabaseEditView.getText().toString(),
					mUserNameEditView.getText().toString(),
					mPasswordEditView.getText().toString()
					));
			KeyBoardUtils.closeKeybord(mIpEditView, mContext);
			KeyBoardUtils.closeKeybord(mDatabaseEditView, mContext);
			KeyBoardUtils.closeKeybord(mUserNameEditView, mContext);
			KeyBoardUtils.closeKeybord(mPasswordEditView, mContext);
			dismiss();
			break;
		case R.id.tv_dialog_add_database_cancel:
			mOnCancleListener.onCancle(null);
			KeyBoardUtils.closeKeybord(mIpEditView, mContext);
			KeyBoardUtils.closeKeybord(mDatabaseEditView, mContext);
			KeyBoardUtils.closeKeybord(mUserNameEditView, mContext);
			KeyBoardUtils.closeKeybord(mPasswordEditView, mContext);
			dismiss();
			break;
		default:
			break;
		}
	}

	public class AddDatabaseDialogEntity{
		public  String ip;
		public  String databaseName;
		public  String userName;
		public  String password;
		
		public AddDatabaseDialogEntity(String ip, String databaseName,
				String userName, String password) {
			this.ip = ip;
			this.databaseName = databaseName;
			this.userName = userName;
			this.password = password;
		}

		@Override
		public String toString() {
			return "AddDatabaseDialogEntity [ip=" + ip + ", databaseName="
					+ databaseName + ", userName=" + userName + ", password="
					+ password + "]";
		}
	}
}

 

 

 

package com.curiousby.baoyou.cn.mysqlconsole.activity;

import java.lang.ref.WeakReference;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

import com.curiousby.baoyou.cn.mysqlconsole.R;
import com.curiousby.baoyou.cn.quote.dialog.AddDatabaseDialog;
import com.curiousby.baoyou.cn.quote.dialog.AddDatabaseDialog.AddDatabaseDialogEntity;
import com.curiousby.baoyou.cn.quote.dialog.BaseDialog.OnCancleListener;
import com.curiousby.baoyou.cn.quote.dialog.BaseDialog.OnConfirmListener;
import com.lidroid.xutils.ViewUtils;
import com.lidroid.xutils.view.annotation.ContentView;
import com.lidroid.xutils.view.annotation.ViewInject;
import com.lidroid.xutils.view.annotation.event.OnClick; 

@ContentView(R.layout.activity_main)
public class MainActivity extends Activity {

	public static final String TAG = "baoyou";
	private Context mContext;
	
	@ViewInject(R.id.iv_btn_menu)
	private ImageView addDatabaseImageView; 
	private AddDatabaseDialog addDatabaseDialog;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		ViewUtils.inject(this);
		mContext = MainActivity.this;
		initView();
	}

	private void initView() {
		OnConfirmListener onConfirmListener = new OnConfirmListener() { 
			@Override
			public void onConfirm(Object obj) { 
				Log.e(TAG, "do save");
				Message msg = new Message(); 
				msg.what = SAVE_DATABASE_INFO; 
				msg.obj = obj;
				mHandler.sendMessage(msg);
			}
		};
		OnCancleListener onCancleListener = new OnCancleListener() {
			
			@Override
			public void onCancle(Object obj) { 
				Log.e(TAG, "donothing");
			}
		};
		addDatabaseDialog = new AddDatabaseDialog(mContext, onConfirmListener, onCancleListener);	
	}

	@OnClick({R.id.iv_btn_menu})
	public  void onclick(View view){
		switch (view.getId()) {
		case R.id.iv_btn_menu:
			addDatabaseDialog.show();
			break;
		default:
			break;
		}
	}

	static final int SAVE_DATABASE_INFO = 1;
	
	private Handler mHandler = new MyHandler(this);
	
	public static class MyHandler extends Handler { 
		WeakReference<MainActivity> mWR; 
		public MyHandler(MainActivity aActivity) {
			mWR = new WeakReference<MainActivity>(aActivity);
		} 
		 @Override
		public void handleMessage(android.os.Message msg) {
			 MainActivity activity = mWR.get();
			switch (msg.what) {
			case SAVE_DATABASE_INFO:

				if (msg.obj instanceof AddDatabaseDialogEntity) {
					AddDatabaseDialogEntity entity = (AddDatabaseDialogEntity)msg.obj;
					Log.i(TAG, ""+entity.toString());
					
					//TODO : SAVA entity
					//TODO: refresh listview
					Toast.makeText(activity,  ""+entity.toString(), Toast.LENGTH_LONG).show();
				}
				break;

			default:
				break;
			}
		};
	};
	
}

 

 

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="350dip"
    android:layout_height="match_parent"
    android:background="@color/white"
    android:orientation="vertical" >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/blue_main_color"
        android:gravity="center"
        android:padding="10dip"
        android:text="@string/dialog_add_database_head_title"
        android:textColor="@color/white"
        android:textSize="@dimen/title_size" />

    <View
        android:layout_width="match_parent"
        android:layout_height="0.5dip"
        android:background="@color/gray" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:text="@string/dialog_add_database_ip"
        android:textColor="@color/gray"
        android:textSize="@dimen/desc_size" />

    <EditText
        android:id="@+id/et_dialog_add_database_ip"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="1dip"
        android:layout_marginRight="1dip"
        android:layout_marginTop="2dip"
        android:background="@drawable/shap_rect_bg_white"
        android:focusable="true"
        android:inputType=""
        android:padding="8dip" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:text="@string/dialog_add_database_database_name"
        android:textColor="@color/gray"
        android:textSize="@dimen/desc_size" />

    <EditText
        android:id="@+id/et_dialog_add_database_database_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="1dip"
        android:layout_marginRight="1dip"
        android:layout_marginTop="2dip"
        android:background="@drawable/shap_rect_bg_white"
        android:focusable="true"
        android:inputType=""
        android:padding="8dip" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:text="@string/dialog_add_database_username"
        android:textColor="@color/gray"
        android:textSize="@dimen/desc_size" />

    <EditText
        android:id="@+id/et_dialog_add_database_database_username"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="1dip"
        android:layout_marginRight="1dip"
        android:layout_marginTop="2dip"
        android:background="@drawable/shap_rect_bg_white"
        android:focusable="true"
        android:inputType=""
        android:padding="8dip" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:text="@string/dialog_add_database_password"
        android:textColor="@color/gray"
        android:textSize="@dimen/desc_size" />

    <EditText
        android:id="@+id/et_dialog_add_database_database_password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="1dip"
        android:layout_marginRight="1dip"
        android:layout_marginTop="2dip"
        android:background="@drawable/shap_rect_bg_white"
        android:focusable="true"
        android:inputType="textPassword"
        android:padding="8dip" />

    <TextView
        android:id="@+id/tv_dialog_add_database_ok"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginLeft="20dip"
        android:layout_marginRight="20dip"
        android:layout_marginTop="15dip"
        android:background="@drawable/selector_btn_confirm"
        android:gravity="center_horizontal"
        android:paddingBottom="10dip"
        android:paddingTop="10dip"
        android:text="@string/dialog_add_database_ok"
        android:textColor="@color/white" />

    <TextView
        android:id="@+id/tv_dialog_add_database_cancel"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginLeft="20dip"
        android:layout_marginRight="20dip"
        android:layout_marginTop="15dip"
        android:layout_marginBottom="15dip"
        android:background="@drawable/selector_btn_confirm"
        android:gravity="center_horizontal"
        android:paddingBottom="10dip"
        android:paddingTop="10dip"
        android:text="@string/dialog_add_database_cancel"
        android:textColor="@color/white" />

</LinearLayout>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

捐助开发者

在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。



 
 
 谢谢您的赞助,我会做的更好!

 

 

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
Android开发 开发者
安卓应用开发中的自定义视图
【9月更文挑战第37天】在安卓开发的海洋中,自定义视图犹如一座座小岛,等待着勇敢的探索者去发现其独特之处。本文将带领你踏上这段旅程,从浅滩走向深海,逐步揭开自定义视图的神秘面纱。
41 3
|
1月前
|
数据可视化 Android开发 开发者
安卓应用开发中的自定义View组件
【10月更文挑战第5天】在安卓应用开发中,自定义View组件是提升用户交互体验的利器。本篇将深入探讨如何从零开始创建自定义View,包括设计理念、实现步骤以及性能优化技巧,帮助开发者打造流畅且富有创意的用户界面。
86 0
|
3月前
|
存储 Shell Android开发
基于Android P,自定义Android开机动画的方法
本文详细介绍了基于Android P系统自定义开机动画的步骤,包括动画文件结构、脚本编写、ZIP打包方法以及如何将自定义动画集成到AOSP源码中。
79 2
基于Android P,自定义Android开机动画的方法
|
3月前
|
供应链 物联网 区块链
未来触手可及:探索新兴技术的趋势与应用安卓开发中的自定义视图:从基础到进阶
【8月更文挑战第30天】随着科技的飞速发展,新兴技术如区块链、物联网和虚拟现实正在重塑我们的世界。本文将深入探讨这些技术的发展趋势和应用场景,带你领略未来的可能性。
|
3月前
|
测试技术 Android开发 Python
探索软件测试的艺术:从基础到高级安卓应用开发中的自定义视图
【8月更文挑战第29天】在软件开发的世界中,测试是不可或缺的一环。它如同艺术一般,需要精细的技巧和深厚的知识。本文旨在通过浅显易懂的语言,引领读者从软件测试的基础出发,逐步深入到更复杂的测试策略和工具的使用,最终达到能够独立进行高效测试的水平。我们将一起探索如何通过不同的测试方法来确保软件的质量和性能,就像艺术家通过不同的色彩和笔触来完成一幅画作一样。
|
20天前
|
搜索推荐 前端开发 Android开发
安卓应用开发中的自定义视图实现
【10月更文挑战第30天】在安卓开发的海洋中,自定义视图是那抹不可或缺的亮色,它为应用界面的个性化和交互体验的提升提供了无限可能。本文将深入探讨如何在安卓平台创建自定义视图,并展示如何通过代码实现这一过程。我们将从基础出发,逐步引导你理解自定义视图的核心概念,然后通过一个实际的代码示例,详细讲解如何将理论应用于实践,最终实现一个美观且具有良好用户体验的自定义控件。无论你是想提高自己的开发技能,还是仅仅出于对安卓开发的兴趣,这篇文章都将为你提供价值。
|
21天前
|
Android开发 开发者 UED
安卓开发中自定义View的实现与性能优化
【10月更文挑战第28天】在安卓开发领域,自定义View是提升应用界面独特性和用户体验的重要手段。本文将深入探讨如何高效地创建和管理自定义View,以及如何通过代码和性能调优来确保流畅的交互体验。我们将一起学习自定义View的生命周期、绘图基础和事件处理,进而探索内存和布局优化技巧,最终实现既美观又高效的安卓界面。
30 5
|
1月前
|
XML 前端开发 Java
安卓应用开发中的自定义View组件
【10月更文挑战第5天】自定义View是安卓应用开发的一块基石,它为开发者提供了无限的可能。通过掌握其原理和实现方法,可以创造出既美观又实用的用户界面。本文将引导你了解自定义View的创建过程,包括绘制技巧、事件处理以及性能优化等关键步骤。
|
2月前
|
Android开发 开发者
安卓开发中的自定义视图:从入门到精通
【9月更文挑战第19天】在安卓开发的广阔天地中,自定义视图是一块充满魔力的土地。它不仅仅是代码的堆砌,更是艺术与科技的完美结合。通过掌握自定义视图,开发者能够打破常规,创造出独一无二的用户界面。本文将带你走进自定义视图的世界,从基础概念到实战应用,一步步展示如何用代码绘出心中的蓝图。无论你是初学者还是有经验的开发者,这篇文章都将为你打开一扇通往创意和效率的大门。让我们一起探索自定义视图的秘密,将你的应用打造成一件艺术品吧!
62 10
|
2月前
|
XML 编解码 Android开发
安卓开发中的自定义视图控件
【9月更文挑战第14天】在安卓开发中,自定义视图控件是一种高级技巧,它可以让开发者根据项目需求创建出独特的用户界面元素。本文将通过一个简单示例,引导你了解如何在安卓项目中实现自定义视图控件,包括创建自定义控件类、处理绘制逻辑以及响应用户交互。无论你是初学者还是有经验的开发者,这篇文章都会为你提供有价值的见解和技巧。
46 3