【Android】Android 登录界面设计和网络连接及验证登录

AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

布局文件:activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
     >

    <EditText
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="38dp"
        android:ems="10" 
        android:hint="账户">

        <requestFocus />
    </EditText>

    <EditText
        android:id="@+id/password"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/name"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="17dp"
        android:ems="10"
        android:hint="密码"
        android:inputType="textPassword" />
    <TextView
        android:id="@+id/info"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/password"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="17dp"
        android:gravity="center"
        android:text="欢迎使用本产品"
        />

    <Button
        android:id="@+id/exit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/name"
        android:layout_below="@+id/info"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="16dp"
        android:text="离开" />

    <Button
        android:id="@+id/login"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/exit"
        android:layout_alignBottom="@+id/exit"
        android:layout_alignRight="@+id/name"
        android:layout_marginRight="16dp"
        android:text="登陆" />

</RelativeLayout>

MainActivity.java

点击登录按钮:

if(nameET!=null&&!nameET.getText().toString().equals("")&&passwordET!=null&&!passwordET.getText().toString().equals(""))
              {
                  Log.e("登陆", "login");
                  if(isConnect(MainActivity.this)!=false){
                      progressDialog = ProgressDialog.show(MainActivity.this, "请稍等", "正在登陆...", true, false);  
                    }
                  Thread t = new Thread(new MyRunnable(nameET
                            .getText().toString(), passwordET.getText()
                            .toString()));
                    t.start();
              }else{
                  Log.e("错误", "error");
                 
                  if(nameET==null||nameET.getText().toString().equals("")){
                      nameET.setError("请输入名字");
                  }
                  if(passwordET==null||passwordET.getText().toString().equals("")){
                      passwordET.setError("请输入密码");
                      
                  }
              }

开启线程:

public class MyRunnable implements Runnable {
        String name, passcode;

        public MyRunnable(String name, String pass) {
            // TODO Auto-generated constructor stub
            this.name = name;
            this.passcode = pass;
        }

        @Override
            public void run() {
                       //***这里进行网络连接、获得数据data***
//***用get或者post***             

                       //数据data添加到bundle中

                      Message msg = new Message();
             Bundle bundle = new Bundle();// 存放数据

                       bundle.putString("returncode", data);

                       msg.setData(bundle);

                       handler.sendMessage(msg); // 向Handler发送消息,更新UI

                       }
}
    
    

判断有无网络:

public static boolean isConnect(MainActivity activity) {
        // 获取手机所有连接管理对象(包括对wi-fi,net等连接的管理)
        try {
            ConnectivityManager connectivity = (ConnectivityManager) ((Activity) activity)
                    .getSystemService(Context.CONNECTIVITY_SERVICE);
            if (connectivity != null) {
                // 获取网络连接管理的对象
                NetworkInfo info = connectivity.getActiveNetworkInfo();
                if (info != null && info.isConnected()) {
                    // 判断当前网络是否已经连接
                    if (info.getState() == NetworkInfo.State.CONNECTED) {
                        return true;
                    }
                }
            }
        } catch (Exception e) {
            // TODO: handle exception
            Log.v("error", e.toString());
        }
        return false;
    } 

handler机制刷新UI:

Handler handler = new Handler() {

        @Override
        public void handleMessage(Message msg) {
            // TODO Auto-generated method stub
            Bundle b = msg.getData();
            String returncode = b.getString("returncode");
            
            if (returncode.equals("0")) {
                /** 返回码,0-登录成功,1-账号密码错误,2-服务器维护,3-未知错误 */
                
                // 关闭ProgressDialog
                progressDialog.dismiss();
                infoTV.setText("登陆成功");
            

            } else if (returncode.equals("1")) {
                progressDialog.dismiss();
                infoTV.setText("账号密码错误");
                infoTV.setTextColor(getResources().getColor(android.R.color.holo_red_dark));
            } else if (returncode.equals("2")) {
                progressDialog.dismiss();
                infoTV.setText("服务器维护");
                infoTV.setTextColor(getResources().getColor(android.R.color.holo_red_dark));
            } else if (returncode.equals("3")) {
                progressDialog.dismiss();
                infoTV.setText( "未知错误");
                infoTV.setTextColor(getResources().getColor(android.R.color.holo_red_dark));
            } else if (StatusCodestr.equals("StatusCode")) {
                progressDialog.dismiss();
            }

        }

    };
原文地址:https://www.cnblogs.com/xubuhang/p/4514926.html