歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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);
  }
 }

就這麼簡單,效果圖如下:

Copyright © Linux教程網 All Rights Reserved