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


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

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>

代码里面:

<PRE class=java name="code">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() {
   
   @Override
   public void onClick(DialogInterface dialog, int which) {
    // TODO Auto-generated method stub
    username = (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() {
   
   @Override
   public void onClick(DialogInterface dialog, int which) {
    // TODO Auto-generated method stub
   
   }
  });
  adi.show();
 
  }
 
 private RefreshHandler mRedrawHandler = new RefreshHandler();
 class RefreshHandler extends Handler{

  @Override
  public void handleMessage(Message msg) {
   // TODO Auto-generated method stub
   try {
            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 block
    e.printStackTrace();
   }finally{
    m_Dilog.dismiss();
   }
   super.handleMessage(msg);
  }
   }
 
  public void sleep(long delayMillis)
  {
   this.removeMessages(0);
   sendMessageDelayed(obtainMessage(0), delayMillis);
  }
 }

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

相关内容