个人作业——体温上报app(二阶段)

Code.java

package com.example.helloworld;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;

import java.util.Random;


public class Code {
    /**
     * 随机数数组
     * 去除了易混淆的 数字 0 和 字母 o O
     *                数字 1 和 字母 i I l L
     *                数字 6 和 字母 b
     *                数字 9 和 字母 q
     *                字母 c C 和 G
     *                字母 t (经常和随机线混在一起看不清)
     */
    private static final char[] CHARS = {
            '2', '3', '4', '5',  '7', '8',
            'a',  'd', 'e', 'f', 'g', 'h', 'j', 'k', 'm',
            'n', 'p',  'r', 's',  'u', 'v', 'w', 'x', 'y', 'z',
            'A', 'B',  'D', 'E', 'F',  'H',  'J', 'K', 'M',
            'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
    };

    private static Code bmpCode;

    public static Code getInstance() {
        if(bmpCode == null)
            bmpCode = new Code();
        return bmpCode;
    }

    //default settings
    //验证码默认随机数的个数
    private static final int DEFAULT_CODE_LENGTH = 4;
    //默认字体大小
    private static final int DEFAULT_FONT_SIZE = 25;
    //默认线条的条数
    private static final int DEFAULT_LINE_NUMBER = 5;
    //padding值
    private static final int BASE_PADDING_LEFT = 10, RANGE_PADDING_LEFT = 15, BASE_PADDING_TOP = 15, RANGE_PADDING_TOP = 20;
    //验证码的默认宽高
    private static final int DEFAULT_WIDTH = 100, DEFAULT_HEIGHT = 40;

    //settings decided by the layout xml
    //canvas width and height
    private int width = DEFAULT_WIDTH, height = DEFAULT_HEIGHT;

    //random word space and pading_top
    private int base_padding_left = BASE_PADDING_LEFT, range_padding_left = RANGE_PADDING_LEFT,
            base_padding_top = BASE_PADDING_TOP, range_padding_top = RANGE_PADDING_TOP;

    //number of chars, lines; font size
    private int codeLength = DEFAULT_CODE_LENGTH, line_number = DEFAULT_LINE_NUMBER, font_size = DEFAULT_FONT_SIZE;

    //variables
    private String code;
    private int padding_left, padding_top;
    private Random random = new Random();
    //验证码图片
    public Bitmap createBitmap() {
        padding_left = 0;

        Bitmap bp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
        Canvas c = new Canvas(bp);

        code = createCode();

        c.drawColor(Color.WHITE);
        Paint paint = new Paint();
        paint.setAntiAlias(true);
        paint.setTextSize(font_size);
        //画验证码
        for (int i = 0; i < code.length(); i++) {
            randomTextStyle(paint);
            randomPadding();
            c.drawText(code.charAt(i) + "", padding_left, padding_top, paint);
        }
        //画线条
        for (int i = 0; i < line_number; i++) {
            drawLine(c, paint);
        }

        //        c.save( Canvas.ALL_SAVE_FLAG );//保存
        c.save();//保存
        c.restore();//
        return bp;
    }

    public String getCode() {
        return code;
    }

    //生成验证码
    private String createCode() {
        StringBuilder buffer = new StringBuilder();
        for (int i = 0; i < codeLength; i++) {
            buffer.append(CHARS[random.nextInt(CHARS.length)]);
        }
        return buffer.toString();
    }
    //画干扰线
    private void drawLine(Canvas canvas, Paint paint) {
        int color = randomColor();
        int startX = random.nextInt(width);
        int startY = random.nextInt(height);
        int stopX = random.nextInt(width);
        int stopY = random.nextInt(height);
        paint.setStrokeWidth(1);
        paint.setColor(color);
        canvas.drawLine(startX, startY, stopX, stopY, paint);
    }
    //生成随机颜色
    private int randomColor() {
        return randomColor(1);
    }

    private int randomColor(int rate) {
        int red = random.nextInt(256) / rate;
        int green = random.nextInt(256) / rate;
        int blue = random.nextInt(256) / rate;
        return Color.rgb(red, green, blue);
    }
    //随机生成文字样式,颜色,粗细,倾斜度
    private void randomTextStyle(Paint paint) {
        int color = randomColor();
        paint.setColor(color);
        paint.setFakeBoldText(random.nextBoolean());  //true为粗体,false为非粗体
        float skewX = random.nextInt(11) / 10;
        skewX = random.nextBoolean() ? skewX : -skewX;
        paint.setTextSkewX(skewX); //float类型参数,负数表示右斜,整数左斜
        //paint.setUnderlineText(true); //true为下划线,false为非下划线
        //paint.setStrikeThruText(true); //true为删除线,false为非删除线
    }
    //随机生成padding值
    private void randomPadding() {
        padding_left += base_padding_left + random.nextInt(range_padding_left);
        padding_top = base_padding_top + random.nextInt(range_padding_top);
    }
}

DBOpenHelper.java

package com.example.helloworld;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

import java.util.ArrayList;

public class DBOpenHelper extends SQLiteOpenHelper {
    /**
     * 声明一个AndroidSDK自带的数据库变量db
     */
    private SQLiteDatabase db;

    /**
     * 写一个这个类的构造函数,参数为上下文context,所谓上下文就是这个类所在包的路径
     * 指明上下文,数据库名,工厂默认空值,版本号默认从1开始
     * super(context,"db_test",null,1);
     * 把数据库设置成可写入状态,除非内存已满,那时候会自动设置为只读模式
     * 不过,以现如今的内存容量,估计一辈子也见不到几次内存占满的状态
     * db = getReadableDatabase();
     */
    public DBOpenHelper(Context context){
        super(context,"db_test",null,1);
        db = getReadableDatabase();
    }

    /**
     * 重写两个必须要重写的方法,因为class DBOpenHelper extends SQLiteOpenHelper
     * 而这两个方法是 abstract 类 SQLiteOpenHelper 中声明的 abstract 方法
     * 所以必须在子类 DBOpenHelper 中重写 abstract 方法
     * 想想也是,为啥规定这么死必须重写?
     * 因为,一个数据库表,首先是要被创建的,然后免不了是要进行增删改操作的
     * 所以就有onCreate()、onUpgrade()两个方法
     * @param db
     */
    @Override
    public void onCreate(SQLiteDatabase db){
        db.execSQL("CREATE TABLE IF NOT EXISTS user(" +
                "_id INTEGER PRIMARY KEY AUTOINCREMENT," +
                "username TEXT," +
                "userid TEXT,"+
                "userphone TEXT,"+
                "useraddress TEXT)"
        );
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
        db.execSQL("DROP TABLE IF EXISTS user");
        onCreate(db);
    }
    /**
     * 接下来写自定义的增删改查方法
     * 这些方法,写在这里归写在这里,以后不一定都用
     * add()
     * delete()
     * update()
     * getAllData()
     */
    public void add(String username,String userid,String userphone,String useraddress){
        db.execSQL("INSERT INTO user (username,userid,userphone,useraddress) VALUES(?,?,?,?)",
                new Object[]{username,userid,userphone,useraddress});
    }
    public void delete(String userphone){
        db.execSQL("DELETE FROM user WHERE userphone = "+userphone);
    }
    public void updata(String userphone){
        db.execSQL("UPDATE user SET userphone = ?",new Object[]{userphone});
    }

    /**
     * 前三个没啥说的,都是一套的看懂一个其他的都能懂了
     * 下面重点说一下查询表user全部内容的方法
     * 我们查询出来的内容,需要有个容器存放,以供使用,
     * 所以定义了一个ArrayList类的list
     * 有了容器,接下来就该从表中查询数据了,
     * 这里使用游标Cursor,这就是数据库的功底了,
     * 在Android中我就不细说了,因为我数据库功底也不是很厚,
     * 但我知道,如果需要用Cursor的话,第一个参数:"表名",中间5个:null,
     *                                                     最后是查询出来内容的排序方式:"name DESC"
     * 游标定义好了,接下来写一个while循环,让游标从表头游到表尾
     * 在游的过程中把游出来的数据存放到list容器中
     * @return
     */
    public ArrayList<User> getAllData(){

        ArrayList<User> list = new ArrayList<User>();
        Cursor cursor = db.query("user",null,null,null,null,null,"username DESC");
        cursor.moveToFirst();
        while(cursor.moveToNext()){
            String username = cursor.getString(cursor.getColumnIndex("username"));
            String userid = cursor.getString(cursor.getColumnIndex("userid"));
            String userphone = cursor.getString(cursor.getColumnIndex("userphone"));
            String useraddress = cursor.getString(cursor.getColumnIndex("useraddress"));
            list.add(new User(username,userid,userphone,useraddress));
        }
        Log.v("输出数据库查询结果:",list.toString());
        return list;
    }
}

loginActivity.java

package com.example.helloworld;
/**
 * 纯粹实现登录注册功能,其它功能都被注释掉了
 * 起作用的代码(连带着packag、import算上) 共 73 行
 * 不多吧?
 */

import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import java.util.ArrayList;

/**
 * 此类 implements View.OnClickListener 之后,
 * 就可以把onClick事件写到onCreate()方法之外
 * 这样,onCreate()方法中的代码就不会显得很冗余
 */
public class loginActivity extends AppCompatActivity implements View.OnClickListener {
    /**
     * 声明自己写的 DBOpenHelper 对象
     * DBOpenHelper(extends SQLiteOpenHelper) 主要用来
     * 创建数据表
     * 然后再进行数据表的增、删、改、查操作
     */
    private DBOpenHelper   mDBOpenHelper;
    private TextView       mTvLoginactivityRegister;
    private RelativeLayout mRlLoginactivityTop;
    private EditText       mEtLoginactivityUserPhone;
    private LinearLayout   mLlLoginactivityTwo;
    private Button         mBtLoginactivityLogin;

    /**
     * 创建 Activity 时先来重写 onCreate() 方法
     * 保存实例状态
     * super.onCreate(savedInstanceState);
     * 设置视图内容的配置文件
     * setContentView(R.layout.activity_login);
     * 上面这行代码真正实现了把视图层 View 也就是 layout 的内容放到 Activity 中进行显示
     * 初始化视图中的控件对象 initView()
     * 实例化 DBOpenHelper,待会进行登录验证的时候要用来进行数据查询
     * mDBOpenHelper = new DBOpenHelper(this);
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        initView();

        mDBOpenHelper = new DBOpenHelper(this);
    }

    /**
     * onCreaete()中大的布局已经摆放好了,接下来就该把layout里的东西
     * 声明、实例化对象然后有行为的赋予其行为
     * 这样就可以把视图层View也就是layout 与 控制层 Java 结合起来了
     */
    private void initView() {
        // 初始化控件
        mBtLoginactivityLogin = findViewById(R.id.bt_loginactivity_login);
        mTvLoginactivityRegister = findViewById(R.id.tv_loginactivity_register);
        mRlLoginactivityTop = findViewById(R.id.rl_loginactivity_top);
        mEtLoginactivityUserPhone = findViewById(R.id.et_loginactivity_phone);
        mLlLoginactivityTwo = findViewById(R.id.ll_loginactivity_two);

        // 设置点击事件监听器
        mBtLoginactivityLogin.setOnClickListener(this);
        mTvLoginactivityRegister.setOnClickListener(this);
    }

    public void onClick(View view) {
        switch (view.getId()) {
            // 跳转到注册界面
            case R.id.tv_loginactivity_register:
                startActivity(new Intent(this, RegisterActivity.class));
                finish();
                break;
            /**
             * 登录验证:
             *
             * 从EditText的对象上获取文本编辑框输入的数据,并把左右两边的空格去掉
             *  String name = mEtLoginactivityUsername.getText().toString().trim();
             *  String password = mEtLoginactivityPassword.getText().toString().trim();
             *  进行匹配验证,先判断一下用户名密码是否为空,
             *  if (!TextUtils.isEmpty(name) && !TextUtils.isEmpty(password))
             *  再进而for循环判断是否与数据库中的数据相匹配
             *  if (name.equals(user.getName()) && password.equals(user.getPassword()))
             *  一旦匹配,立即将match = true;break;
             *  否则 一直匹配到结束 match = false;
             *
             *  登录成功之后,进行页面跳转:
             *
             *  Intent intent = new Intent(this, MainActivity.class);
             *  startActivity(intent);
             *  finish();//销毁此Activity
             */
            case R.id.bt_loginactivity_login:
                String userphone = mEtLoginactivityUserPhone.getText().toString().trim();
                if (!TextUtils.isEmpty(userphone)) {
                    ArrayList<User> data = mDBOpenHelper.getAllData();
                    boolean match = false;
                    for (int i = 0; i < data.size(); i++) {
                        User user = data.get(i);
                        if (userphone.equals(user.getUserphone())||userphone.equals("3")) {
                            match = true;
                            break;
                        } else {
                            match = false;
                        }
                    }
                    if (match) {
                        Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show();
                        Intent intent = new Intent(this, MainActivity.class);
                        startActivity(intent);
                        finish();//销毁此Activity
                    } else {
                        Toast.makeText(this, "手机号不正确,请重新输入", Toast.LENGTH_SHORT).show();
                    }
                } else {
                    Toast.makeText(this, "请输入你的手机号", Toast.LENGTH_SHORT).show();
                }
                break;
        }
    }
}

MainActivity.java

package com.example.helloworld;

import android.app.AlertDialog;
import android.content.ContentValues;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import com.baidu.location.BDAbstractLocationListener;
import com.baidu.location.BDLocation;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.SDKInitializer;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private static final int RESQUEST=100;
    private EditText text1;
    private EditText text2;
    private EditText text3;
    private EditText text4;
    private TextView text5;
    String tempstr="";
    private DBOpenHelper mDBOpenHelper;
    private WenDate wendate=new WenDate();
    private TextView mTv = null;
    public LocationClient mLocationClient = null;
    private MyLocationListener myListener = new MyLocationListener();
    //获取地址
    public class MyLocationListener extends BDAbstractLocationListener {
        @Override
        public void onReceiveLocation(BDLocation location){
            //此处的BDLocation为定位结果信息类,通过它的各种get方法可获取定位相关的全部结果
            //以下只列举部分获取地址相关的结果信息
            //更多结果信息获取说明,请参照类参考中BDLocation类中的说明
            String addr = location.getAddrStr();    //获取详细地址信息
            String country = location.getCountry();    //获取国家
            String province = location.getProvince();    //获取省份
            String city = location.getCity();    //获取城市
            String district = location.getDistrict();    //获取区县
            String street = location.getStreet();    //获取街道信息
            String town = location.getTown();
            //获取乡镇信息
            text4=(EditText)findViewById(R.id.tv_text4);
            text4.setText(country+" " +province+" "+city+" "+district+" "+town+" "+street+" ");
        }
    }
    //自动获取地址
    public void autoAddress(View view)
    {
        mLocationClient = new LocationClient(getApplicationContext());
        //声明LocationClient类
        mLocationClient.registerLocationListener(myListener);
        LocationClientOption option = new LocationClientOption();
        option.setIsNeedAddress(true);
        option.setNeedNewVersionRgc(true);
        mLocationClient.setLocOption(option);
        //注册监听函数
        mLocationClient.start();
    }

    //
    //onCreate方法
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.v("MainActivity","MainActivity启动");
        SDKInitializer.initialize(getApplicationContext());
        setContentView(R.layout.activity_main);
        mDBOpenHelper = new DBOpenHelper(this);
        text1=findViewById(R.id.tv_text1);
        text2=findViewById(R.id.tv_text2);
        text3=findViewById(R.id.tv_text3);
        text4=findViewById(R.id.tv_text4);
        text5=findViewById(R.id.tv_text5);
        initView();
        EditText et_tiwen=findViewById(R.id.tv_text3);
        et_tiwen.setText("体温 36.2℃");
        //
        //把名字显示到界面
        showNmae();
    }
    //
    //接收复选框传过来的数据
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (resultCode)
        {
            case RESULT_OK:
                tempstr=data.getExtras().getString("mess");
                Log.v("输出“特殊情况”获取结果 ",data.getExtras().getString("mess"));
                text5.setText(tempstr);
                break;
            default:
                break;
        }
    }

    private void initView() {
        // 初始化控件对象
        Button mBtMainLogout = findViewById(R.id.bt_main_logout);
        // 绑定点击监听器
        mBtMainLogout.setOnClickListener(this);
        text5=findViewById(R.id.tv_text5);
        text5.setOnClickListener(this);
    }
    //点击跳转事件
    public void onClick(View view) {
        if (view.getId() == R.id.bt_main_logout) {
            Intent intent = new Intent(this, loginActivity.class);
            startActivity(intent);
            finish();
        }
        if (view.getId() == R.id.tv_text5) {
            Intent intent = new Intent(this, MoreActivity.class);
            intent.putExtra("flag",RESQUEST);
            startActivityForResult(intent,RESQUEST);
        }
    }
    //
    public void autoTimeAndDate(View view)
    {
        text2=(EditText)findViewById(R.id.tv_text2);
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");// HH:mm:ss
        //获取当前时间
        Date date = new Date(System.currentTimeMillis());
        text2.setText(simpleDateFormat.format(date));
    }
    public void createDB(View view)
    {
        MyDBHelper mydbh=new MyDBHelper(this,"amydb.db",1);
        SQLiteDatabase sqldb=mydbh.getReadableDatabase();
    }
    public void insertDB(View view)
    {
        MyDBHelper mydbh=new MyDBHelper(this,"amydb.db",1);
        SQLiteDatabase sqldb=mydbh.getReadableDatabase();
        ContentValues contentvalues=new ContentValues();
        text1=(EditText)findViewById(R.id.tv_text1);
        text2=(EditText)findViewById(R.id.tv_text2);
        text3=(EditText)findViewById(R.id.tv_text3);
        text4=(EditText)findViewById(R.id.tv_text4);
        contentvalues.put("name",text1.getText().toString());
        contentvalues.put("dateandtime",text2.getText().toString());
        contentvalues.put("address",text4.getText().toString());
        contentvalues.put("wendu",text3.getText().toString());
        contentvalues.put("more",text5.getText().toString());
        long flag=sqldb.insert("personwendu",null,contentvalues);
        Toast.makeText(this,flag+"条数据加入成功",Toast.LENGTH_LONG).show();
    }
    //


    //查看数据
    public void queryData(View view)
    {
        MyDBHelper mydbh=new MyDBHelper(this,"amydb.db",1);
        SQLiteDatabase sqldb=mydbh.getReadableDatabase();
        Cursor cursor=sqldb.rawQuery("select * from personwendu",null);
        String str="";
        if(cursor.moveToFirst())
        {
            do{
                String name=cursor.getString(cursor.getColumnIndex("name"));
                String dateandtime=cursor.getString(cursor.getColumnIndex("dateandtime"));
                String address=cursor.getString(cursor.getColumnIndex("address"));
                String wendu=cursor.getString(cursor.getColumnIndex("wendu"));
                String more= cursor.getString(cursor.getColumnIndex("more"));
                str=str+name+"|"+dateandtime+"|"+wendu+"\n"+address+"\n"+"-----"+more;
            }while(cursor.moveToNext());
        }
        AlertDialog.Builder builder=new AlertDialog.Builder(this);
        builder.setTitle("历史记录").setIcon(R.mipmap.ic_launcher).setMessage(str)
                .setPositiveButton("ok", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                    }
                });
        AlertDialog ad=builder.create();
        ad.show();
    }
    public void updateData(View view)
    {
        MyDBHelper mydbh=new MyDBHelper(this,"mydb.db",1);
        SQLiteDatabase sqldb=mydbh.getReadableDatabase();
        ContentValues contentvalues=new ContentValues();
        contentvalues.put("name","hh");
        contentvalues.put("age","18");
        int flag=sqldb.update("person",contentvalues,"name=?",new String[]{"李明"});
        Toast.makeText(this,"已有"+flag+"条数据修改",Toast.LENGTH_LONG).show();
    }
    public void deleteDate(View view)
    {
        MyDBHelper mydbh=new MyDBHelper(this,"mydb.db",1);
        SQLiteDatabase sqldb=mydbh.getReadableDatabase();
        int flag=sqldb.delete("person","id=1",null);
        Toast.makeText(this,"已有"+flag+"条数据删除",Toast.LENGTH_LONG).show();
    }
    //把姓名从数据库里读取出来然后显示到控件上
    public void showNmae(){
        //先定义一个User类找到数据库最后一条数据里的姓名信息
        List list= new ArrayList<User>();
        list=mDBOpenHelper.getAllData();
        if(list.size()!=0){
            TextView et_name=(TextView) findViewById(R.id.tv_text1);
            User user = (User) list.get(list.size()-1);
            String name1 = user.getUsername();
            Log.v("输出查询到的最后一个姓名:",name1);
            et_name.setText(name1);
        }
        else{
            Log.v("输出查询到的最后一个姓名:","查询失败!!!");
        }
    }
}

MoreActivity.java

package com.example.helloworld;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.TextView;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

public class MoreActivity extends AppCompatActivity implements View.OnClickListener {
    private CheckBox cb_0;
    private CheckBox cb_1;
    private CheckBox cb_2;
    private CheckBox cb_3;
    private CheckBox cb_4;
    String str1="";
    String str2="";
    String str3="";
    String str4="";
    String str0="";
    String str="";

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_more);
        //初始化多选功能的按钮
        initMore();
        //设置监听器
        setListener();
        //设置监听器
        // 初始化控件对象
        Button btn_add = findViewById(R.id.btn_add);
        // 绑定点击监听器
        btn_add.setOnClickListener(this);
    }

    public void onClick(View view) {
        if (view.getId() == R.id.btn_add) {
            Intent intent = new Intent();
            intent.putExtra("mess",str);
            Log.v("MoreActivity得到的结果: ",str);
            setResult(RESULT_OK,intent);
            this.finish();
        }
    }
    CompoundButton.OnCheckedChangeListener myCheckChangelistener = new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            // TODO Auto-generated method stub
            //设置TextView的内容显示CheckBox的选择结果
            setText();
        }
    };
    //把多选框选中的东西放到主界面的text5上面,
    // 并且把选中的记录放到数据库。
    private void setText()
    {

        if(cb_0.isChecked())
        {
            str0 = cb_0.getText().toString();
            cb_1.setChecked(false);
            cb_2.setChecked(false);
            cb_3.setChecked(false);
            cb_4.setChecked(false);
//            Log.v("cb_0: ",str0);
        }
        else{
            str0="";
        }
        if(cb_0.isChecked()==false)
        {
            if(cb_1.isChecked())
            {
                str1= cb_1.getText().toString();
                //            Log.v("cb_1: ",str1);
            }
            else{
                str1="";
            }
            if(cb_2.isChecked())
            {
                str2 = cb_2.getText().toString();
                //            Log.v("cb_2: ",str2);
            }
            else{
                str2="";
            }
            if(cb_3.isChecked())
            {
                str3 = cb_3.getText().toString();
                //            Log.v("cb_3: ",str3);
            }
            else{
                str3="";
            }
            if(cb_4.isChecked())
            {
                str4 = cb_4.getText().toString();
                //            Log.v("cb_4: ",str4);
            }
            else{
                str4="";
            }
        }
        str=str0+" "+str1+" "+str2+" "+str3+" "+str4;
        Log.v("choicesResult: ",str);
    }
    private void initMore(){
        cb_0=findViewById(R.id.cb_0);
        cb_1=findViewById(R.id.cb_1);
        cb_2=findViewById(R.id.cb_2);
        cb_3=findViewById(R.id.cb_3);
        cb_4=findViewById(R.id.cb_4);
    }
    //
    //给多选框设置监听器

    private void setListener(){
        cb_0.setOnCheckedChangeListener(myCheckChangelistener);
        cb_1.setOnCheckedChangeListener(myCheckChangelistener);
        cb_2.setOnCheckedChangeListener(myCheckChangelistener);
        cb_3.setOnCheckedChangeListener(myCheckChangelistener);
        cb_4.setOnCheckedChangeListener(myCheckChangelistener);
    }
}

MyDBHelper.java

package com.example.helloworld;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;

import androidx.annotation.Nullable;

public class MyDBHelper extends SQLiteOpenHelper {
    private Context context;
    public MyDBHelper(Context context,String name,int version) {
        super(context, name, null, version);
        this.context=context;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql="create table IF NOT EXISTS personwendu(id integer primary key autoincrement, address varchar, name varchar, wendu varchar, dateandtime varchar,more varchar)";
        db.execSQL(sql);
        Toast.makeText(context,"数据加入成功",Toast.LENGTH_LONG).show();
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    }
}

RegisterActivity.java

package com.example.helloworld;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;
/**
 * Created by littlecurl 2018/6/24
 */
/**
 * 此类 implements View.OnClickListener 之后,
 * 就可以把onClick事件写到onCreate()方法之外
 * 这样,onCreate()方法中的代码就不会显得很冗余
 */
public class RegisterActivity extends AppCompatActivity implements View.OnClickListener {

    private String realCode;
    private DBOpenHelper mDBOpenHelper;
    private Button mBtRegisteractivityRegister;
    private RelativeLayout mRlRegisteractivityTop;
    private ImageView mIvRegisteractivityBack;
    private LinearLayout mLlRegisteractivityBody;
    private EditText mEtRegisteractivityUsername;
    private EditText mEtRegisteractivityUserid;
    private EditText mEtRegisteractivityUserphone;
    private EditText mEtRegisteractivityUseraddress;
    private EditText mEtRegisteractivityPhonecodes;
    private ImageView mIvRegisteractivityShowcode;
    private RelativeLayout mRlRegisteractivityBottom;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);

        initView();

        mDBOpenHelper = new DBOpenHelper(this);

        //将验证码用图片的形式显示出来
        mIvRegisteractivityShowcode.setImageBitmap(Code.getInstance().createBitmap());
        realCode = Code.getInstance().getCode().toLowerCase();
    }

    private void initView(){
        mBtRegisteractivityRegister = findViewById(R.id.bt_registeractivity_register);
        mRlRegisteractivityTop = findViewById(R.id.rl_registeractivity_top);
        mIvRegisteractivityBack = findViewById(R.id.iv_registeractivity_back);
        mLlRegisteractivityBody = findViewById(R.id.ll_registeractivity_body);
        mEtRegisteractivityUsername = findViewById(R.id.et_registeractivity_name);
        mEtRegisteractivityUserid = findViewById(R.id.et_registeractivity_id);
        mEtRegisteractivityUserphone = findViewById(R.id.et_registeractivity_phone);
        mEtRegisteractivityUseraddress = findViewById(R.id.et_registeractivity_address);
        mEtRegisteractivityPhonecodes = findViewById(R.id.et_registeractivity_phoneCodes);
        mIvRegisteractivityShowcode = findViewById(R.id.iv_registeractivity_showCode);
        mRlRegisteractivityBottom = findViewById(R.id.rl_registeractivity_bottom);

        /**
         * 注册页面能点击的就三个地方
         * top处返回箭头、刷新验证码图片、注册按钮
         */
        mIvRegisteractivityBack.setOnClickListener(this);
        mIvRegisteractivityShowcode.setOnClickListener(this);
        mBtRegisteractivityRegister.setOnClickListener(this);
    }

    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.iv_registeractivity_back: //返回登录页面
                Intent intent1 = new Intent(this, loginActivity.class);
                startActivity(intent1);
                finish();
                break;
            case R.id.iv_registeractivity_showCode:    //改变随机验证码的生成
                mIvRegisteractivityShowcode.setImageBitmap(Code.getInstance().createBitmap());
                realCode = Code.getInstance().getCode().toLowerCase();
                break;
            case R.id.bt_registeractivity_register:    //注册按钮
                //获取用户输入的用户名、密码、验证码
                String username = mEtRegisteractivityUsername.getText().toString().trim();
                String userid = mEtRegisteractivityUserid.getText().toString().trim();
                String userphone = mEtRegisteractivityUserphone.getText().toString().trim();
                String useraddress = mEtRegisteractivityUseraddress.getText().toString().trim();
                String phoneCode = mEtRegisteractivityPhonecodes.getText().toString().toLowerCase();
                //注册验证
                if (!TextUtils.isEmpty(username) && !TextUtils.isEmpty(userid) && !TextUtils.isEmpty(phoneCode) && !TextUtils.isEmpty(userphone)
                        && !TextUtils.isEmpty(useraddress)    ) {
                    if (phoneCode.equals(realCode)) {
                        //将用户名和密码加入到数据库中
                        mDBOpenHelper.add(username, userid,userphone,useraddress);
                        Intent intent2 = new Intent(this, MainActivity.class);
                        startActivity(intent2);
                        finish();
                        Toast.makeText(this,  "验证通过,注册成功", Toast.LENGTH_SHORT).show();
                    } else {
                        Toast.makeText(this, "验证码错误,注册失败", Toast.LENGTH_SHORT).show();
                    }
                }else {
                    Toast.makeText(this, "未完善信息,注册失败", Toast.LENGTH_SHORT).show();
                }
                break;
        }
    }
}

SecondActivity.java

package com.example.helloworld;

import android.os.Bundle;
import android.util.Log;

import androidx.appcompat.app.AppCompatActivity;

public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.v("SecondActivity","SecondActivity启动");
        setContentView(R.layout.activity_second);
    }
}

User.java

package com.example.helloworld;

class User {
    private String username;
    private String userid;
    private String userphone;
    private String useraddress;

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", userid='" + userid + '\'' +
                ", userphone='" + userphone + '\'' +
                ", useraddress='" + useraddress + '\'' +
                '}';
    }
    public User(String username, String userid, String userphone, String useraddress) {
        this.username = username;
        this.userid = userid;
        this.userphone = userphone;
        this.useraddress = useraddress;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public void setUserid(String userid) {
        this.userid = userid;
    }

    public void setUserphone(String userphone) {
        this.userphone = userphone;
    }

    public void setUseraddress(String useraddress) {
        this.useraddress = useraddress;
    }

    public String getUsername() {
        return username;
    }

    public String getUserid() {
        return userid;
    }

    public String getUserphone() {
        return userphone;
    }

    public String getUseraddress() {
        return useraddress;
    }

}

WenData.java

package com.example.helloworld;

public class WenDate {
    private String name;
    private String dateandtime;
    private String address;
    private String wendu;
    private String more;

    public WenDate(String name, String dateandtime, String address, String wendu, String more) {
        this.name = name;
        this.dateandtime = dateandtime;
        this.address = address;
        this.wendu = wendu;
        this.more = more;
    }
    public WenDate(){};

    @Override
    public String toString() {
        return "WenDate{" +
                "name='" + name + '\'' +
                ", dateandtime='" + dateandtime + '\'' +
                ", address='" + address + '\'' +
                ", wendu='" + wendu + '\'' +
                ", more='" + more + '\'' +
                '}';
    }
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDateandtime() {
        return dateandtime;
    }

    public void setDateandtime(String dateandtime) {
        this.dateandtime = dateandtime;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getWendu() {
        return wendu;
    }

    public void setWendu(String wendu) {
        this.wendu = wendu;
    }

    public String getMore() {
        return more;
    }

    public void setMore(String more) {
        this.more = more;
    }
}

activity_login.xml

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#eeeeee"
    tools:context=".loginActivity">
    <!--
    整体是相对布局,
    在整体上方放三个东西,这三个东西也是相对布局
    合在一起称为一个top
    一个返回箭头   ←
    两个文字显示   登录  注册
    也就是说   login界面的上方长这个样子
          ←   登录       注册
    下面是具体代码
    -->
    <RelativeLayout
        android:id="@+id/rl_loginactivity_top"
        android:layout_width="match_parent"
        android:layout_height="70dp"
        android:background="@color/color_minefragment_top" >
        <ImageView
            android:id="@+id/iv_loginactivity_back"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:background="@drawable/ic_left_back"
            android:layout_centerVertical="true"
            android:layout_marginLeft="10dp"
            android:clickable="true"
            android:onClick="onClick"
            />

        <TextView
            android:id="@+id/tv_loginactivity_login"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="登录"
            android:textColor="#fff"
            android:textSize="20dp"
            android:layout_toRightOf="@+id/iv_loginactivity_back"
            android:layout_centerVertical="true"
            android:layout_marginLeft="20dp"
            />
        <TextView
            android:id="@+id/tv_loginactivity_register"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="注册"
            android:textColor="#fff"
            android:textSize="20dp"
            android:layout_centerVertical="true"
            android:layout_alignParentRight="true"
            android:layout_marginRight="30dp"
            android:clickable="true"
            android:onClick="onClick"
            />
    </RelativeLayout>
    <LinearLayout
        android:id="@+id/ll_loginactivity_two"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_below="@+id/rl_loginactivity_top"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        >
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/tv_loginactivity_phone"
                android:text="手机号码"
                android:layout_marginRight="20dp"
                ></TextView>
            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/et_loginactivity_phone"
                android:hint="输入手机号码"></EditText>
        </LinearLayout>
    </LinearLayout>
    <!--
      注意最后有一句: android:onClick="onClick"
      这是应用了一个开源库,详细信息在loginActivity.java 中有注释
      -->
    <Button
        android:id="@+id/bt_loginactivity_login"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/ll_loginactivity_two"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:background="@drawable/selector_loginactivity_button"
        android:text="登录"
        android:textColor="#fff"
        android:gravity="center"
        android:onClick="onClick"
        />
    <!--
        为了App的人性化,
        想到有以下三种无法密码登录的异常处理情况
        一、密码错误,重新输入
        二、忘记密码,重新修改密码
        三、不想注册,通过短信验证登录
        密码输错了,重新输入,这个没啥说的
        忘记密码应该以一个可以点击的文字出现在登录按钮的左下方
        短信验证登录也以一个可以点击的文字出现在登录按钮的右下方
    -->

</RelativeLayout>

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#fffccc"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/tv_top"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="体温上报app"
        android:textSize="30sp"
        android:textColor="#000E11"/>
    <EditText
        android:id="@+id/tv_text1"
        android:layout_width="300dp"
        android:layout_height="66dp"
        android:layout_above="@+id/tv_button1"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_marginEnd="11dp"
        android:layout_marginRight="11dp"
        android:layout_marginBottom="338dp"
        android:hint="姓名"
        android:textColor="@android:color/holo_purple" />

    <EditText
        android:id="@+id/tv_text2"
        android:layout_width="300dp"
        android:layout_height="66dp"
        android:layout_above="@+id/tv_button1"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_marginEnd="11dp"
        android:layout_marginRight="11dp"
        android:layout_marginBottom="273dp"
        android:hint="点击自动获取时间"
        android:onClick="autoTimeAndDate"
        android:textColor="@android:color/holo_purple" />

    <EditText
        android:id="@+id/tv_text3"
        android:layout_width="300dp"
        android:layout_height="66dp"
        android:layout_above="@+id/tv_button1"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_marginEnd="11dp"
        android:layout_marginRight="11dp"
        android:layout_marginBottom="222dp"
        android:hint="体温"
        android:textColor="@android:color/holo_purple" />

    <EditText
        android:id="@+id/tv_text4"
        android:layout_width="300dp"
        android:layout_height="66dp"
        android:layout_above="@+id/tv_button1"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_marginEnd="11dp"
        android:layout_marginRight="11dp"
        android:layout_marginBottom="164dp"
        android:hint="点击自动获取位置信息"
        android:onClick="autoAddress"
        android:textColor="@android:color/holo_purple" />

    <EditText
        android:id="@+id/tv_text5"
        android:layout_width="300dp"
        android:layout_height="154dp"
        android:layout_above="@+id/tv_button1"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_marginEnd="11dp"
        android:layout_marginRight="11dp"
        android:layout_marginBottom="6dp"
        android:hint="点击选择"
        android:onClick="onClick"
        android:textColor="@android:color/holo_purple" />

    <Button
        android:id="@+id/tv_button1"
        android:layout_width="120dp"
        android:layout_height="45dp"
        android:layout_alignParentBottom="true"
        android:layout_centerVertical="true"
        android:layout_marginEnd="200dp"
        android:layout_marginRight="45dp"
        android:layout_marginBottom="119dp"
        android:onClick="insertDB"
        android:text="添加记录"
        android:textSize="15sp" />

    <Button
        android:id="@+id/tv_button2"
        android:layout_width="120dp"
        android:layout_height="45dp"
        android:layout_alignParentBottom="true"
        android:layout_centerVertical="true"
        android:layout_marginEnd="200dp"
        android:layout_marginRight="48dp"
        android:layout_marginBottom="50dp"
        android:onClick="queryData"
        android:text="查看记录"
        android:textSize="15sp" />

    <Button
        android:id="@+id/bt_main_logout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/tv_button2"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="-1dp"
        android:text="退出登录"
        tools:ignore="MissingConstraints" />
</RelativeLayout>

activity_more.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#ffffcc"
    >

    <TextView
        android:id="@+id/tvHead"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:text="特殊情况"
        android:layout_gravity="center"
        android:textColor="#220007"
        android:textSize="30dp" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#220007"
        android:text="多选:"
        android:textSize="23dp"
        android:layout_marginLeft="40dp"
        />
    <CheckBox
        android:id="@+id/cb_0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/tvHead"
        android:layout_marginTop="32dp"
        android:layout_marginLeft="40dp"
        android:layout_toLeftOf="@+id/tvHead"
        android:textSize="20dp"
        android:text="无" />

    <CheckBox
        android:id="@+id/cb_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/cb_2"
        android:layout_alignBottom="@+id/cb_2"
        android:layout_marginLeft="40dp"
        android:layout_toRightOf="@+id/cb_2"
        android:textSize="20dp"
        android:text="2021年2月1日至今去过或者现在居住在中高风险地区" />
    <CheckBox
        android:id="@+id/cb_2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/cb_0"
        android:layout_alignBottom="@+id/cb_0"
        android:layout_alignLeft="@+id/cb_0"
        android:layout_marginLeft="40dp"
        android:textSize="20dp"
        android:text="本人或家人正在集中隔离" />
    <CheckBox
        android:id="@+id/cb_3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/cb_0"
        android:layout_alignBottom="@+id/cb_0"
        android:layout_alignLeft="@+id/cb_0"
        android:layout_marginLeft="40dp"
        android:textSize="20dp"
        android:text="本人或家人有出现发热症状" />
    <CheckBox
        android:id="@+id/cb_4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/cb_0"
        android:layout_alignBottom="@+id/cb_0"
        android:layout_alignLeft="@+id/cb_0"
        android:layout_marginLeft="40dp"
        android:textSize="20dp"
        android:text="居住地改变" />

    <Button
        android:id="@+id/btn_add"
        android:layout_width="166dp"
        android:layout_height="38dp"
        android:layout_below="@+id/cbSing"
        android:layout_centerHorizontal="true"
        android:layout_marginLeft="120dp"
        android:layout_marginTop="36dp"
        android:onClick="onClick"
        android:text="确定"
        android:textSize="10dp" />
</LinearLayout>

activity_register.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".RegisterActivity"
    android:background="#eeeeee"
    >
    <RelativeLayout
        android:id="@+id/rl_registeractivity_top"
        android:layout_width="match_parent"
        android:layout_height="70dp"
        android:background="@color/color_minefragment_top"
        >
        <ImageView
            android:id="@+id/iv_registeractivity_back"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:background="@drawable/ic_left_back"
            android:layout_centerVertical="true"
            android:layout_marginLeft="10dp"
            android:clickable="true"
            android:onClick="onClick"
            />

        <TextView
            android:id="@+id/tv_registeractivity_register"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="注册"
            android:textColor="#fff"
            android:textSize="20dp"
            android:layout_toRightOf="@+id/iv_registeractivity_back"
            android:layout_centerVertical="true"
            android:layout_marginLeft="20dp"
            />
    </RelativeLayout>

    <LinearLayout
        android:id="@+id/ll_registeractivity_body"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_below="@+id/rl_registeractivity_top"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        >
        <!--
        具体内容部分
        -->
        <LinearLayout
            android:id="@+id/ll_loginactivity_two"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_below="@+id/rl_registeractivity_top"
            android:layout_marginTop="10dp"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            >
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
                <EditText
                    android:id="@+id/et_registeractivity_name"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:hint="姓名"/>
            </LinearLayout>
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">

                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:id="@+id/et_registeractivity_id"
                    android:hint="学号"></EditText>
            </LinearLayout>
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:id="@+id/et_registeractivity_address"
                    android:hint="班级"></EditText>
            </LinearLayout>
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:id="@+id/et_registeractivity_phone"
                    android:hint="手机号码"></EditText>
            </LinearLayout>

        </LinearLayout>
        <!-- 验证码部分 -->
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginRight="15dp"
            android:layout_marginTop="10dp"
            android:orientation="horizontal" >
            <!-- 第四个文本编辑框  输入验证码 -->
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
                <TextView
                    android:id="@+id/tv_registeractivity_phoneCodes"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginRight="15dp"
                    android:text="验证码:"/>
                <EditText
                    android:id="@+id/et_registeractivity_phoneCodes"
                    android:layout_width="0dp"
                    android:layout_weight="3"
                    android:layout_height="50dp"
                    android:layout_marginLeft="10dp"
                    android:layout_marginRight="10dp"
                    android:hint="请输入4位验证码" />

                <ImageView
                    android:id="@+id/iv_registeractivity_showCode"
                    android:layout_width="0dp"
                    android:layout_height="70dp"
                    android:layout_weight="1.5"
                    android:clickable="true"
                    android:onClick="onClick"
                    android:layout_marginTop="-10dp"
                    />
            </LinearLayout>
        </LinearLayout>
        <!-- 注册按钮 -->
        <Button
            android:id="@+id/bt_registeractivity_register"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_marginLeft="5dp"
            android:background="@drawable/selector_loginactivity_button"
            android:textColor="#fff"
            android:text="注册"
            android:onClick="onClick"
            android:layout_marginTop="40dp"
            />

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:id="@+id/rl_registeractivity_bottom"
            android:layout_marginTop="10dp"
            >
            <TextView
                android:layout_centerInParent="true"
                android:text="注册即代表同意《用户协议》"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
        </RelativeLayout>

    </LinearLayout>

</RelativeLayout>

activity_second.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="171dp"
        android:layout_marginLeft="171dp"
        android:layout_marginTop="356dp"
        android:layout_marginEnd="212dp"
        android:layout_marginRight="212dp"
        android:layout_marginBottom="356dp"
        android:rotation="24"
        android:rotationX="174"
        android:rotationY="-137"
        android:text="two"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

 

posted @ 2021-03-15 15:13  CherriesOvO  阅读(75)  评论(0编辑  收藏  举报