zoukankan      html  css  js  c++  java
  • 【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();
                }
    
            }
    
        };
  • 相关阅读:
    阿里云服务器绑定 微信公众号 服务器配置 问题记录
    Junit 报错: Failed to load ApplicationContext
    ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
    idea 多项目部署JRebel
    sql优化1
    sql优化
    IntelliJ IDEA 2017版 spring-boot使用Spring Data JPA搭建基础版的三层架构
    IntelliJ IDEA 2017版 spring-boot 报错Consider defining a bean of type 'xxx' in your configuration问题解决方案
    IntelliJ IDEA 2017版 spring-boot 实现jpa基本部署,通过实体类自动建立数据库
    Nginx的两种负载均衡搭建(Tomcat版)
  • 原文地址:https://www.cnblogs.com/xubuhang/p/4514926.html
Copyright © 2011-2022 走看看