Android自定义登陆窗口-对话框

来源:互联网 发布:java项目怎么发布 编辑:程序博客网 时间:2024/04/29 12:56

dilog.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"   android:layout_width="fill_parent"   android:layout_height="wrap_content"   android:orientation="vertical">       <TextView      android:id="@+id/txt_loginerror"      android:layout_height="wrap_content"      android:layout_width="wrap_content"      android:layout_marginLeft="20dip"      android:layout_marginRight="20dip"      android:textColor="#ff0000"      android:text="输入的账号和密码不正确"      android:gravity="left"      android:textAppearance="?android:attr/textAppearanceMedium"       android:visibility="invisible"   />         <TextView      android:id="@+id/username"      android:layout_height="wrap_content"      android:layout_width="wrap_content"      android:layout_marginLeft="20dip"      android:layout_marginRight="20dip"      android:text="账号"      android:gravity="left"      android:textAppearance="?android:attr/textAppearanceMedium"    />          <EditText      android:id="@+id/txt_username"      android:layout_height="wrap_content"      android:layout_width="fill_parent"      android:layout_marginLeft="20dip"      android:layout_marginRight="20dip"      android:autoText="false"      android:capitalize="none"      android:gravity="fill_horizontal"      android:textAppearance="?android:attr/textAppearanceMedium"       />    <TextView      android:id="@+id/password"      android:layout_height="wrap_content"      android:layout_width="wrap_content"      android:layout_marginLeft="20dip"      android:layout_marginRight="20dip"      android:textAppearance="?android:attr/textAppearanceMedium"       android:text="密码"      android:gravity="left"      />    <EditText      android:id="@+id/txt_password"      android:layout_height="wrap_content"      android:layout_width="fill_parent"      android:layout_marginLeft="20dip"      android:layout_marginRight="20dip"      android:autoText="false"      android:capitalize="none"      android:gravity="fill_horizontal"      android:textAppearance="?android:attr/textAppearanceMedium"      />             <TextView      android:id="@+id/txt_toregister"      android:layout_height="wrap_content"      android:layout_width="wrap_content"      android:layout_marginLeft="20dip"      android:layout_marginRight="20dip"      android:textColor="#2200C1"      android:textAppearance="?android:attr/textAppearanceMedium"       android:text="没有账号?快速注册"      android:gravity="left"      />     </LinearLayout>

代码里面:

private void CreateLoginAlert(){LayoutInflater factory = LayoutInflater.from(LoginActivity.this);//得到自定义对话框    View DialogView = factory.inflate(R.layout.login_dialog, null);         AlertDialog.Builder ad =new AlertDialog.Builder(this); ad.setTitle("账号登陆");        ad.setView(DialogView);    adi=  ad.create();adi.setButton("登录", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stubusername = (EditText)adi.findViewById(R.id.txt_username);password = (EditText)adi.findViewById(R.id.txt_password);loginerror = (TextView)adi.findViewById(R.id.txt_loginerror);m_Dilog=ProgressDialog.show(LoginActivity.this, "请等待...", "正在为你登陆...",true);mRedrawHandler.sleep(100);}});adi.setButton2("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub}});adi.show();}private RefreshHandler mRedrawHandler = new RefreshHandler();class RefreshHandler extends Handler{@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stubtry {            socket = new Socket("113.250.155.194", 9999);            in = new BufferedReader(new InputStreamReader(                    socket.getInputStream()));            out = new PrintWriter(socket.getOutputStream());        } catch (Exception e) {            e.printStackTrace();        }if(username.getText().length() == 0){adi.show();loginerror.setText("账号不能为空!");loginerror.setVisibility(loginerror.VISIBLE);}else if(password.getText().length() == 0){adi.show();loginerror.setText("密码不能为空!");loginerror.setVisibility(loginerror.VISIBLE);}else{UserModel users = new UserModel();users.setUserName(username.getText().toString());users.setUserPass(password.getText().toString());users.setUserState(1);        users.setGuanliyuan(0);        out.println("login&" + UserModel.userToString(users));            out.flush();                        String line;try {line = in.readLine();System.out.println("登录窗口从服务器收到的消息为:" + line); if (line.startsWith("LOGINOK")) { System.out.println(line.toString());                UserModel user = UserModel.getUserByString(line);                                 out.println("updateList&" + UserModel.userToString(user));                out.flush();                                Toast.makeText(LoginActivity.this, "登陆成功", Toast.LENGTH_SHORT).show();                //ChatFrame cf = new ChatFrame(user.getNick(), user.getGuanliyuan());               // cf.setLocation(250, 50);                //cf.setVisible(true);                //cf.connect(in, out);                //this.dispose();               // return;            }else if (line.equals("ERROR")) { Toast.makeText(LoginActivity.this, "登陆失败", Toast.LENGTH_SHORT).show(); adi.show(); adi.findViewById(R.id.txt_loginerror).setVisibility(View.VISIBLE);            }} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{m_Dilog.dismiss();}super.handleMessage(msg);}}public void sleep(long delayMillis){this.removeMessages(0);sendMessageDelayed(obtainMessage(0), delayMillis);}}


就这么简单,效果图如下: