首页 > 其他分享 >结对冲刺13

结对冲刺13

时间:2024-06-11 16:22:09浏览次数:23  
标签:13 binding 结对 getText toString 冲刺 import android Constants

实现SignUpActivity

  1 package com.example.chatapptest.activities;
  2 
  3 import androidx.activity.result.ActivityResultLauncher;
  4 import androidx.activity.result.contract.ActivityResultContracts;
  5 import androidx.appcompat.app.AppCompatActivity;
  6 
  7 import android.content.ComponentName;
  8 import android.content.Intent;
  9 import android.graphics.Bitmap;
 10 import android.graphics.BitmapFactory;
 11 import android.net.Uri;
 12 import android.os.Bundle;
 13 import android.provider.MediaStore;
 14 import android.util.Base64;
 15 import android.util.Patterns;
 16 import android.view.View;
 17 import android.widget.Toast;
 18 
 19 import com.example.chatapptest.R;
 20 import com.example.chatapptest.databinding.ActivitySignUpBinding;
 21 import com.example.chatapptest.utilities.Constants;
 22 import com.example.chatapptest.utilities.PreferenceManager;
 23 import com.google.firebase.firestore.FirebaseFirestore;
 24 
 25 import java.io.ByteArrayOutputStream;
 26 import java.io.FileNotFoundException;
 27 import java.io.InputStream;
 28 import java.util.HashMap;
 29 
 30 public class SignUpActivity extends AppCompatActivity {
 31 
 32     private ActivitySignUpBinding binding;
 33     private PreferenceManager preferenceManager;
 34     private String encodedImage;
 35 
 36     @Override
 37     protected void onCreate(Bundle savedInstanceState) {
 38         super.onCreate(savedInstanceState);
 39         binding = ActivitySignUpBinding.inflate(getLayoutInflater());
 40         setContentView(binding.getRoot());
 41         preferenceManager = new PreferenceManager(getApplicationContext());
 42         setListeners();
 43     }
 44 
 45     private void setListeners(){
 46         binding.textSignIn.setOnClickListener(v -> onBackPressed());
 47         binding.buttonSignUp.setOnClickListener(v -> {
 48             if(isValidSignUpDetails()){
 49                 signUp();
 50             }
 51         });
 52         binding.layoutImage.setOnClickListener(v -> {
 53             Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
 54             intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
 55             pickImage.launch(intent);
 56         });
 57     }
 58 
 59     private void showToast(String message){
 60         Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
 61     }
 62 
 63     private void signUp(){
 64         loading(true);
 65         FirebaseFirestore database = FirebaseFirestore.getInstance();
 66         HashMap<String,Object> user = new HashMap<>();
 67         user.put(Constants.KEY_NAME,binding.inputName.getText().toString());
 68         user.put(Constants.KEY_EMAIL,binding.inputEmail.getText().toString());
 69         user.put(Constants.KEY_PASSWORD,binding.inputPassword.getText().toString());
 70         user.put(Constants.KEY_IMAGE,encodedImage);
 71         database.collection(Constants.KEY_COLLECTION_USERS)
 72                 .add(user)
 73                 .addOnSuccessListener(documentReference -> {
 74                     loading(false);
 75                     preferenceManager.putBoolean(Constants.KEY_IS_SIGNED_IN,true);
 76                     preferenceManager.putString(Constants.KEY_USER_ID, documentReference.getId());
 77                     preferenceManager.putString(Constants.KEY_NAME,binding.inputName.getText().toString());
 78                     preferenceManager.putString(Constants.KEY_IMAGE,encodedImage);
 79                     Intent intent = new Intent(getApplicationContext(),MainActivity.class);
 80                     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
 81                     startActivity(intent);
 82                 })
 83                 .addOnFailureListener(exception -> {
 84                     loading(false);
 85                     showToast(exception.getMessage());
 86                 });
 87     }
 88 
 89     private String encodeImage(Bitmap bitmap){
 90         int previewWidth = 150;
 91         int previewHeight = bitmap.getHeight() * previewWidth / bitmap.getWidth();
 92         Bitmap previewBitmap = Bitmap.createScaledBitmap(bitmap,previewWidth,previewHeight,false);
 93         ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
 94         previewBitmap.compress(Bitmap.CompressFormat.JPEG,50,byteArrayOutputStream);
 95         byte[] bytes = byteArrayOutputStream.toByteArray();
 96         return Base64.encodeToString(bytes,Base64.DEFAULT);
 97     }
 98 
 99     private final ActivityResultLauncher<Intent> pickImage = registerForActivityResult(
100             new ActivityResultContracts.StartActivityForResult(),
101             result ->{
102                 if(result.getResultCode() == RESULT_OK){
103                     if(result.getData() != null){
104                         Uri imageUri = result.getData().getData();
105                         try {
106                             InputStream inputStream = getContentResolver().openInputStream(imageUri);
107                             Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
108                             binding.imageProfile.setImageBitmap(bitmap);
109                             binding.textAddImage.setVisibility(View.GONE);
110                             encodedImage = encodeImage(bitmap);
111                         }catch (FileNotFoundException e){
112                             e.printStackTrace();
113                         }
114                     }
115                 }
116             }
117     );
118 
119     private Boolean isValidSignUpDetails(){
120         if(encodedImage == null){
121             showToast("Select profile image");
122             return false;
123         }else if (binding.inputName.getText().toString().trim().isEmpty()){
124             showToast("Enter name");
125             return false;
126         } else if (binding.inputEmail.getText().toString().trim().isEmpty()) {
127             showToast("Enter email");
128             return false;
129         } else if (!Patterns.EMAIL_ADDRESS.matcher(binding.inputEmail.getText().toString()).matches()) {
130             showToast("Enter valid email");
131             return false;
132         } else if (binding.inputPassword.getText().toString().trim().isEmpty()) {
133             showToast("Enter password");
134             return false;
135         } else if (binding.inputConfirmPassword.getText().toString().trim().isEmpty()) {
136             showToast("Confirm you password");
137             return false;
138         } else if (!binding.inputPassword.getText().toString().equals(binding.inputConfirmPassword.getText().toString())) {
139             showToast("Password & confirm password must be same");
140             return false;
141         }else {
142             return true;
143         }
144     }
145 
146     private void loading(Boolean isLoading){
147         if(isLoading){
148             binding.buttonSignUp.setVisibility(View.INVISIBLE);
149             binding.progressBar.setVisibility(View.VISIBLE);
150         }else {
151             binding.progressBar.setVisibility(View.INVISIBLE);
152             binding.buttonSignUp.setVisibility(View.VISIBLE);
153         }
154     }
155 }

 

标签:13,binding,结对,getText,toString,冲刺,import,android,Constants
From: https://www.cnblogs.com/Lyh3012648079/p/18242281

相关文章

  • 5.13
    与小组成员讨论如何完善健康咨询页面代码行量:115行学习所花时间:1h  packagecom.example.memosystem.activity;importandroid.os.Bundle;importandroid.view.View;importandroid.widget.AdapterView;importandroid.widget.ArrayAdapter;importandroid.widget.ListView......
  • B2135单词替换
    题目描述输入一个字符串,以回车结束(字符串长度 ≤200≤200)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。输入格式第 11 行是包含多个单词的字符串 ......
  • 代码随想录算法训练营第三十五天 | 1005.K次取反后最大化的数组和 134.加油站 135.分
    1005.K次取反后最大化的数组和题目链接文章讲解视频讲解思路:  按绝对值从大到小排序  遍历数组,遇到负数,如果次数未用完就取反  最后如果剩余次数未用完且为奇数就将数组最后一个元素取反classSolution{staticboolmyCompare(constint&lhs,constint&r......
  • C136 线段树分治 P4219 [BJOI2014] 大融合
    视频链接: P4219[BJOI2014]大融合-洛谷|计算机科学教育新生态(luogu.com.cn)#include<iostream>#include<cstring>#include<algorithm>#include<vector>#include<map>usingnamespacestd;#definels(u<<1)#definers(u<<1|......
  • web期末大作业:基于html+css+js制作深圳大学网站(13页) 学校班级网页制作模板 学生静态
    ......
  • LibreOJ #10131. 「一本通 4.4 例 2」暗的连锁 题解 树上差分
    暗的连锁题目描述Dark是一张无向图,图中有N个节点和两类边,一类边被称为主要边,而另一类被称为附加边。Dark有N−1条主要边,并且Dark的任意两个节点之间都存在一条只由主要边构成的路径。另外,Dark还有M条附加边。你的任务是把Dark斩为不连通的两部分。一开始Da......
  • AMD旗舰锐龙AI 9 HX 370性能偷跑!单核+13%、多核+25%
    AMD在台北电脑展期间发布了Zen5架构的移动版锐龙AI300系列、桌面版锐龙9000系列,都将从7月份开始上市,仅从纸面看就提升巨大,现在我们更是第一次看到了移动旗舰锐龙AI9HX370的实际跑分。锐龙AI9HX370采用了全新的命名,规格也有显著提升,CPU从8核心增加到12核心,三级缓存从16MB增......
  • Codeforces 800-1300 刷题笔记
    CF1946BMaximumSum这道题是一道贪心题。对于第\(1\)次操作,选择的话肯定是选最大的好,所以我们会找出原序列的最大子段和进行插入,为了使下一次的插入子段更大,所以我们一定会插入原序列的最大子段和中。进行\(m\)次操作,执行\(m\)次上述操作即可。直接模拟的话肯定不行,我们......
  • Leetcode-13
    题目13.罗马数字转整数难度:简单罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符数值I1V5X10L50C100D500M1000例如,罗马数字2写做II,即为两个并列的1。......
  • SQL Server 2022 RTM 最新累积更新:Cumulative Update #13 for SQL Server 2022 RTM
    SQLServer2022RTM(最新累积更新)-基于Azure的持续性能和安全创新CumulativeUpdate#13forSQLServer2022RTM请访问原文链接:https://sysin.org/blog/sql-server-2022/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgSQLServer2022现已普遍可用2022......