前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AndroidStudio制作登录和注册功能的实现,界面的布局介绍

AndroidStudio制作登录和注册功能的实现,界面的布局介绍

作者头像
圆号本昊
发布2021-09-24 12:22:35
3.9K0
发布2021-09-24 12:22:35
举报
文章被收录于专栏:github@hornhuang

话不多说先上图:

首先是具体的布局设计:

https://blog.csdn.net/qq_43377749/article/details/84260348

效果图:

现在附上实现具体功能的代码如下:

github 项目地址,欢迎 star

点击跳转 https://github.com/FishInWater-1999/SignInSystem

这里是登录界面

代码语言:javascript
复制
public class StartActivity extends AppCompatActivity implements View.OnClickListener{

    TextView tv_regist;
    EditText et_login_user, et_login_password;
    Button bt_login;
    TextView tv_forget;
    String user_num;
    /**
     * ATTENTION: This was auto-generated to implement the App Indexing API.
     * See https://g.co/AppIndexing/AndroidStudio for more information.
     */


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //加载主题
        final ColorTheme newTheme = new ColorTheme(this);
        newTheme.loadTheme();

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_start);
        Bmob.initialize(this, "40de716427e259476d34aa6e0a7e4555");

        tv_regist = (TextView) findViewById(R.id.tv_regist);
        bt_login = (Button) findViewById(R.id.login);
        tv_forget = (TextView) findViewById(R.id.tv_forget);
        et_login_user = (EditText) findViewById(R.id.et_login_user);
        et_login_password = (EditText) findViewById(R.id.et_login_password);
        tv_regist.setOnClickListener(StartActivity.this);
        bt_login.setOnClickListener(StartActivity.this);
        tv_forget.setOnClickListener(StartActivity.this);


        //改变控件颜色位默认
        TypedValue typedValue = new  TypedValue();
        getTheme().resolveAttribute(R.attr.colorPrimary, typedValue, true);
        GradientDrawable myGrad = (GradientDrawable)bt_login.getBackground();
        myGrad.setColor(typedValue.data);

    }


    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        switch (arg0.getId()) {
            case R.id.tv_regist:
                Intent intent_regist = new Intent(StartActivity.this, RegistActivity.class);
                startActivity(intent_regist);
                break;
            case R.id.tv_forget:
                Intent intent_forget = new Intent(StartActivity.this, MobileLoad.class);
                startActivity(intent_forget);
                break;
            case R.id.login:
                user_num = et_login_user.getText().toString();
                String user_password = et_login_password.getText().toString().trim();
                // 非空验证
                if (user_num.isEmpty() || user_password.isEmpty()) {
                    Toast.makeText(StartActivity.this, "账号或密码不能为空", Toast.LENGTH_SHORT).show();
                    return;
                }
                User bu2 = new User();
                bu2.setUsername(user_num);
                bu2.setPassword(user_password);
                // 使用BmobSDK提供的登录功能

                bu2.login(new SaveListener<BmobUser>() {

                    @Override
                    public void done(BmobUser bmobUser, BmobException e) {
                        if(e==null){
                            Toast.makeText(StartActivity.this, "登陆成功", Toast.LENGTH_SHORT).show();
                            Intent intent_main = new Intent(StartActivity.this, MainActivity.class);
                            startActivity(intent_main);
                            login p2 = new login();
                            p2.setName(user_num);
                            p2.update("o0HXjjjl", new UpdateListener() {

                                @Override
                                public void done(BmobException e) {
                                    if(e==null){
                                    }else{
                                    }
                                }

                            });
                            //通过BmobUser user = BmobUser.getCurrentUser()获取登录成功后的本地用户信息
                            //如果是自定义用户对象MyUser,可通过MyUser user = BmobUser.getCurrentUser(MyUser.class)获取自定义用户信息
                        }else{
                            Toast.makeText(StartActivity.this, "登陆失败", Toast.LENGTH_SHORT).show();

                            //loge(e);

                        }
                    }
                });

                break;
        }
    }

接着就是注册界面啦:

代码语言:javascript
复制
public class RegistActivity extends AppCompatActivity implements View.OnClickListener {

dler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            if((Integer)msg.obj==0){
                imageView01.setImageBitmap(bitmap);
            }
            super.handleMessage(msg);
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //加载主题
        final ColorTheme newTheme = new ColorTheme(this);
        newTheme.loadTheme();

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_regist);

        Bmob.initialize(this, "\n" + "40de716427e259476d34aa6e0a7e4555");
        chnage();

        imageView01 = (ImageView) findViewById(R.id.head_portrait);
        et_regist_user= (EditText)findViewById(R.id.et_regist_user);
        et_regist_password= (EditText) findViewById(R.id.et_regist_password);
        et_regist_fullname = (EditText) findViewById(R.id.et_regist_fullname);
        et_regist_group= (EditText) findViewById(R.id.et_regist_group);
        et_regist_telephone = (EditText) findViewById(R.id.et_regist_telephone);
        et_regist_againpassword = (EditText) findViewById(R.id.et_regist_againpassword) ;
        bt_regist_save= (Button) findViewById(R.id.bt_regist_save);
        bt_regist_cancel= (Button) findViewById(R.id.bt_regist_cancel);

        bt_regist_save.setOnClickListener(this);
        bt_regist_cancel.setOnClickListener(this);
        imageView01.setOnClickListener(this);

        //改变控件颜色位主题色
        TypedValue typedValue = new  TypedValue();
        getTheme().resolveAttribute(R.attr.colorPrimary, typedValue, true);
        GradientDrawable myGrad = (GradientDrawable)bt_regist_save.getBackground();
        myGrad.setColor(typedValue.data);
        myGrad = (GradientDrawable)bt_regist_cancel.getBackground();
        myGrad.setColor(typedValue.data);
    }

    @Override
    public void onClick(View v) {
        switch(v.getId()){
            case R.id.bt_regist_save:
                File file = new File(PathGetter.getPath(this, uri));
                BmobFile bmobFile = new BmobFile(file);

                final String user_num=et_regist_user.getText().toString();
                final String user_password=et_regist_password.getText().toString().trim();
                final String user_fullname = et_regist_fullname.getText().toString().trim();
                final String user_group = et_regist_group.getText().toString().trim();
                final String user_telephone = et_regist_telephone.getText().toString().trim();
                final String user_againpassword = et_regist_againpassword.getText().toString().trim();
                // 非空验证
                if (user_num.isEmpty() || user_password.isEmpty() || user_fullname.isEmpty() ||  user_group.isEmpty()  ||  user_telephone.isEmpty() ||user_againpassword.equals(user_password)==false) {
                    Toast.makeText(RegistActivity.this, "有未填项", Toast.LENGTH_SHORT).show();
                    return;
                }

                // 使用BmobSDK提供的注册功能
                final User myUser=new User();
                myUser.setImg(bmobFile);
                //用uploadblock将图片上传至服务器
                myUser.getImg().uploadblock(new UploadFileListener() {
                    @Override
                    public void done(BmobException e) {
                        if (e == null) {
                            Toast.makeText(getApplicationContext(), "上传成功!!", Toast.LENGTH_SHORT).show();

                            //将用户输入的信息存入p2,准备存入数据库
                            myUser.setUsername(user_num);
                            myUser.setPassword(user_password);
                            myUser.setFullname(user_fullname);
                            myUser.setGroup(user_group);
                            myUser.setTelephone(user_telephone);
                            myUser.setAgainpassword(user_againpassword);
                            //将p2整个对象存入数据库
                            myUser.signUp(new SaveListener<String>() {
                                @Override
                                public void done(String objectId,BmobException e) {

                                    if(e==null){
                                        Toast.makeText(getApplicationContext(),"添加数据成功,返回objectId为:"+objectId,Toast.LENGTH_SHORT).show();
                                    }else{
//                                        Toast.makeText(getApplicationContext(),"创建数据失败:" + e.getMessage(),Toast.LENGTH_SHORT).show();
                                    }
                                }
                            });
                        }else {
                            Toast.makeText(getApplicationContext(), "上传失败--", Toast.LENGTH_SHORT).show();
                        }
                    }
                });

                //注意:不能用save方法进行注册
                finish();
                break;

            case R.id.head_portrait:
                if(ContextCompat.checkSelfPermission(RegistActivity.this,
                        Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
                    ActivityCompat.requestPermissions(RegistActivity.this,new String[]{
                            Manifest.permission.WRITE_EXTERNAL_STORAGE
                    },1);
                }
                Intent intent = new Intent(Intent.ACTION_PICK,
                        android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                startActivityForResult(intent, IMAGE_REQUEST_CODE);
                break;

            case R.id.bt_regist_cancel:
                Toast.makeText(this,"hhh",Toast.LENGTH_SHORT).show();
                finish();
                break;

            default:
                break;
        }
    }

    /**
     * 从相册获得图片
     */

    /*
    定义一个Handler,定义延时执行的行为
     */
    public  void chnage(){
        new Thread(){
            @Override
            public void run() {
                while ( bitmap == null ){
                    bitmap = BitmapFactory.decodeFile(path);
                }
                Message message = handler.obtainMessage();
                message.obj = 0;
                handler.sendMessage(message);
            }
        }.start();
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        //在相册里面选择好相片之后调回到现在的这个activity中
        switch (requestCode) {
            case IMAGE_REQUEST_CODE://这里的requestCode是我自己设置的,就是确定返回到那个Activity的标志
                if (resultCode == RESULT_OK) {//resultcode是setResult里面设置的code值
                    try {
                        Uri selectedImage = data.getData(); //获取系统返回的照片的Uri
                        uri = selectedImage;
                        String[] filePathColumn = {MediaStore.Images.Media.DATA};
                        Cursor cursor = getContentResolver().query(selectedImage,
                                filePathColumn, null, null, null);//从系统表中查询指定Uri对应的照片
                        cursor.moveToFirst();
                        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                        path = cursor.getString(columnIndex);  //获取照片路径

                        int index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                        cursor.moveToFirst();
                        imgpath = cursor.getString(index);
                        cursor.close();
                        BitmapFactory.Options options = new BitmapFactory.Options();
                        options.inSampleSize = 1;
                        bitmap = BitmapFactory.decodeFile(path,options);
                        imageView01.setImageBitmap(bitmap);
                        chnage();
                        Toast.makeText(RegistActivity.this,path,Toast.LENGTH_SHORT).show();
                    } catch (Exception e) {
                        // TODO Auto-generatedcatch block
                        e.printStackTrace();
                    }
                }
                break;
        }
    }
}

这里是登陆界面的几个数据成员:

代码语言:javascript
复制
    //用户头像
    ImageView imageView01 ;
    //昵称
    EditText et_regist_user;
    //密码
    EditText et_regist_password;
    //再次输入密码
    EditText et_regist_againpassword;
    //真实姓名
    EditText et_regist_fullname;
    //组别
    EditText et_regist_group;
    //手机号
    EditText et_regist_telephone;
    //提交注册信息与取消
    Button bt_regist_save,bt_regist_cancel;
    //记录数组长度
    int arr_num = 0;
    //定义一个数组
    String[] arr1 = new String[arr_num];
    //从相册获得图片
    Bitmap bitmap;
    //判断返回到的Activity
    private static final int IMAGE_REQUEST_CODE = 0;
    //图片路径
    private String path ;
    //图片路径
    Uri uri ;
    //图片上传路径
    String imgpath;
    //用于延时处理
    private Han
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/11/19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • github 项目地址,欢迎 star
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档