当前位置:   article > 正文

Android --简单介绍控件(TextView,EditText,Button),简单实现游戏登录界面(包括实现账号密码自动保存)_登录页面:运用textview,editview。button等,实现用户名和密码(密码保护)的输入

登录页面:运用textview,editview。button等,实现用户名和密码(密码保护)的输入,要

图片素材和源项目我放最下面的需要的可以自行下载 

横屏设置我上一期说了,这里就不多做解释。

(3条消息) Android studio实现标题,状态栏隐藏和横屏(带图文,实现沉浸式体验)_将军府中来的博客-CSDN博客icon-default.png?t=M276https://blog.csdn.net/qq_55985667/article/details/123698609?spm=1001.2014.3001.5502 如果能做出这个界面页面布局就差不多算入门了

 

 大佬直接copy就行了,刚入门的小白的话我会在文章后面详细介绍一下,方便理解。

这里我就不多废话了,直接上代码

xml布局:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:app="http://schemas.android.com/apk/res-auto"
  4. xmlns:tools="http://schemas.android.com/tools"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. android:background="@mipmap/bg0"
  8. tools:context=".Register">
  9. <RelativeLayout
  10. android:id="@+id/re_one"
  11. android:layout_width="350dp"
  12. android:layout_height="200dp"
  13. android:layout_centerInParent="true"
  14. android:background="@mipmap/re_one"
  15. android:padding="10dp">
  16. <LinearLayout
  17. android:layout_width="wrap_content"
  18. android:layout_height="wrap_content">
  19. </LinearLayout>
  20. <EditText
  21. android:id="@+id/et_number"
  22. android:layout_width="match_parent"
  23. android:layout_height="wrap_content"
  24. android:layout_marginLeft="50dp"
  25. android:layout_marginTop="50dp"
  26. android:layout_marginRight="25dp"
  27. android:background="@color/white"
  28. android:hint="请输入淘米账号"
  29. android:textSize="20sp" />
  30. <ImageView
  31. android:id="@+id/preson"
  32. android:layout_width="25dp"
  33. android:layout_height="25dp"
  34. android:layout_alignTop="@+id/et_number"
  35. android:layout_marginRight="-30dp"
  36. android:layout_toLeftOf="@+id/et_number"
  37. android:background="@drawable/ic_baseline_person_24" />
  38. <ImageView
  39. android:id="@+id/password_one"
  40. android:layout_width="25dp"
  41. android:layout_height="25dp"
  42. android:layout_alignTop="@+id/password_two"
  43. android:layout_marginRight="-30dp"
  44. android:layout_toLeftOf="@+id/et_number"
  45. android:background="@drawable/ic_baseline_lock_24" />
  46. <EditText
  47. android:id="@+id/password_two"
  48. android:layout_width="match_parent"
  49. android:layout_height="wrap_content"
  50. android:layout_below="@id/et_number"
  51. android:layout_marginLeft="50dp"
  52. android:layout_marginTop="10dp"
  53. android:layout_marginRight="25dp"
  54. android:background="@color/white"
  55. android:hint="请输入密码"
  56. android:textSize="20sp" />
  57. <LinearLayout
  58. android:id="@+id/ll_one"
  59. android:layout_alignLeft="@+id/password_two"
  60. android:layout_width="match_parent"
  61. android:layout_height="wrap_content"
  62. android:layout_below="@+id/password_two"
  63. android:layout_centerVertical="true"
  64. android:layout_marginTop="5dp"
  65. android:layout_marginRight="25dp"
  66. android:orientation="horizontal">
  67. <LinearLayout
  68. android:layout_width="75dp"
  69. android:layout_height="wrap_content"
  70. android:orientation="vertical">
  71. <TextView
  72. android:id="@+id/tv_registter"
  73. android:layout_width="wrap_content"
  74. android:layout_height="20dp"
  75. android:text="注册账号"
  76. android:textColor="#00A8BF"
  77. android:textSize="18sp" />
  78. <View
  79. android:layout_width="wrap_content"
  80. android:layout_height="1dp"
  81. android:layout_below="@+id/tv_registter"
  82. android:layout_alignLeft="@+id/tv_registter"
  83. android:layout_alignRight="@+id/tv_registter"
  84. android:layout_marginTop="2dp"
  85. android:background="#00A8BF" />
  86. </LinearLayout>
  87. <LinearLayout
  88. android:layout_width="75dp"
  89. android:layout_marginLeft="105dp"
  90. android:layout_height="wrap_content"
  91. android:layout_alignRight="@+id/password_two"
  92. android:orientation="vertical">
  93. <TextView
  94. android:id="@+id/tv_recall"
  95. style="@style/recall" />
  96. <View
  97. android:layout_width="wrap_content"
  98. android:layout_height="1dp"
  99. android:layout_below="@+id/tv_recall"
  100. android:layout_alignLeft="@+id/tv_recall"
  101. android:layout_alignRight="@+id/tv_recall"
  102. android:layout_marginTop="2dp"
  103. android:background="#00A8BF" />
  104. </LinearLayout>
  105. </LinearLayout>
  106. <Button
  107. android:id="@+id/btn_login"
  108. android:layout_width="120dp"
  109. android:layout_height="30dp"
  110. android:layout_below="@+id/password_two"
  111. android:layout_centerHorizontal="true"
  112. android:layout_marginTop="35dp"
  113. android:background="@mipmap/dl" />
  114. </RelativeLayout>
  115. <CheckBox
  116. android:layout_alignParentBottom="true"
  117. android:layout_marginBottom="40dp"
  118. android:layout_marginLeft="250dp"
  119. android:layout_width="30dp"
  120. android:layout_height="30dp"
  121. android:background="#204187"/>
  122. <!-- android:layout_centerHorizontal="true"-->
  123. </RelativeLayout>

Java设置: 

  1. package com.example.mygame;
  2. import androidx.appcompat.app.AppCompatActivity;
  3. import android.os.Bundle;
  4. import android.text.TextUtils;
  5. import android.view.View;
  6. import android.view.WindowManager;
  7. import android.widget.Button;
  8. import android.widget.EditText;
  9. import android.widget.Toast;
  10. import java.util.Map;
  11. public class Register extends AppCompatActivity implements View.OnClickListener {
  12. private EditText etNumber;
  13. private EditText etPassword;
  14. private Button btnLogin;
  15. @Override
  16. protected void onCreate(Bundle savedInstanceState) {
  17. super.onCreate(savedInstanceState);
  18. setContentView(R.layout.activity_register);
  19. initView();
  20. getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);//隐藏状态栏
  21. // getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN) //显示状态栏
  22. Map<String, String> userMap = FileSaveAccount.getUserInfo(Register.this);
  23. if (userMap==null){
  24. }else {
  25. etPassword.setText(userMap.get("number"));
  26. etNumber.setText(userMap.get("password"));
  27. }
  28. }
  29. private void initView() {
  30. etNumber = (EditText) findViewById(R.id.et_number);
  31. etPassword = (EditText) findViewById(R.id.password_two);
  32. btnLogin = (Button) findViewById(R.id.btn_login);
  33. btnLogin.setOnClickListener(this);
  34. }
  35. @Override
  36. public void onClick(View v) {
  37. String number = etNumber.getText().toString().trim();
  38. String password = etPassword.getText().toString();
  39. if (TextUtils.isEmpty(number)) {
  40. Toast.makeText(this, "请输入淘米账号", Toast.LENGTH_SHORT).show();
  41. return;
  42. }
  43. if (TextUtils.isEmpty(password)) {
  44. Toast.makeText(this, "请输入密码", Toast.LENGTH_SHORT).show();
  45. return;
  46. }
  47. Toast.makeText(this, "登录成功" + number + "" + password, Toast.LENGTH_SHORT).show();
  48. if (FileSaveAccount.saveUserInfo(Register.this, number, password)) {
  49. Toast.makeText(this, "保存成功" + number + "" + password, Toast.LENGTH_SHORT).show();
  50. } else {
  51. Toast.makeText(this, "保存失败" + number + "" + password, Toast.LENGTH_SHORT).show();
  52. }
  53. }
  54. }
  1. package com.example.mygame;
  2. import android.content.Context;
  3. import java.io.FileInputStream;
  4. import java.io.FileOutputStream;
  5. import java.util.HashMap;
  6. import java.util.Map;
  7. public class FileSaveAccount {
  8. public static boolean saveUserInfo(Context context, String number, String passwrod) {
  9. try {
  10. FileOutputStream fos = context.openFileOutput("data.txt", Context.MODE_PRIVATE);
  11. fos.write((number + ":" + passwrod).getBytes());
  12. fos.close();
  13. return true;
  14. } catch (Exception e) {
  15. e.printStackTrace();
  16. return false;
  17. }
  18. }
  19. public static Map<String, String> getUserInfo(Context context) {
  20. String content = "";
  21. try {
  22. FileInputStream fis = context.openFileInput("data.txt");
  23. byte[] buffer = new byte[fis.available()];
  24. fis.read(buffer);
  25. content = new String(buffer);
  26. Map<String, String> userMap = new HashMap<String, String>();
  27. String[] infos = content.split(":");
  28. userMap.put("number", infos[0]);
  29. userMap.put("password", infos[1]);
  30. fis.close();
  31. return userMap;
  32. } catch (Exception e) {
  33. e.printStackTrace();
  34. return null;
  35. }
  36. }
  37. }

AndroidManifest启动设置:

  1. package com.example.mygame;
  2. import android.content.Context;
  3. import java.io.FileInputStream;
  4. import java.io.FileOutputStream;
  5. import java.util.HashMap;
  6. import java.util.Map;
  7. public class FileSaveAccount {
  8. public static boolean saveUserInfo(Context context, String number, String passwrod) {
  9. try {
  10. FileOutputStream fos = context.openFileOutput("data.txt", Context.MODE_PRIVATE);
  11. fos.write((number + ":" + passwrod).getBytes());
  12. fos.close();
  13. return true;
  14. } catch (Exception e) {
  15. e.printStackTrace();
  16. return false;
  17. }
  18. }
  19. public static Map<String, String> getUserInfo(Context context) {
  20. String content = "";
  21. try {
  22. FileInputStream fis = context.openFileInput("data.txt");
  23. byte[] buffer = new byte[fis.available()];
  24. fis.read(buffer);
  25. content = new String(buffer);
  26. Map<String, String> userMap = new HashMap<String, String>();
  27. String[] infos = content.split(":");
  28. userMap.put("number", infos[0]);
  29. userMap.put("password", infos[1]);
  30. fis.close();
  31. return userMap;
  32. } catch (Exception e) {
  33. e.printStackTrace();
  34. return null;
  35. }
  36. }
  37. }

布局的我之前做过几期了,这里也不废话,这里简单说一下新增加的控件(TextView,EditText,Button)

TextView 常用属性
控件属性功能描述
android:text设置文本
android:textColor设置文本颜色
android:textSize设置文本大小,推荐单位为sp
android:height设置文本区域高度,支持单位:px/dp(推荐)/sp/in/mm
android:width设置文本区域宽度,支持单位:px/dp(推荐)/sp/in/mm
android:textStyle设置文字样式,如boid(粗体),italic(斜体)
android:maxLenght设置文本长度,超出不显示
android:passwrod设置文本以密码形式“.”显示
android:gravity设置文本位置,如设置成“center”,文本将居中显示
android:phoneNumber设置以电话号码方式输入
android:layout_height设置TextView控件的高度
android:layout_width设置TextView控件的宽度

TextView控件其实还有很多属性,这里就不一一列举了

EditText常用属性
控件属性功能描述
android:hint设置EditText没有输入内容时显示的提示文本
android:lines设置固定行数来决定EditText的高度
android:maxLines设置最大行数
android:minLines设置最小行数
android:password设置文本以密码的形式显示“.”显示
android:phoneNumber设置文本以电话号码方式输入
android:scrollHorizontally设置文本超过TextView的宽度的情况下,是否出现横拉条
android:capitalize设置首字母大写
android:editable设置是否可编辑


这里再多说一点,如果我们可以设置一个style通过id的调用,直接作用于多个控件这样会大大提升写代码的效率。Button(按钮)一般作用于响应用户的一系列点击事件,常用的点击方式有3种,分别是在布局中指定onClick属性、使用匿名内部类、在当前Activity中实现OnClickListener接口。

 

文件存储Android中最基本的一种数据存储方式,它与Java中的文件存储类似,都是通过I/O的形式把数据存储到文档中。 

这里我们是用内部存储存储账号密码的,内部储存--写入方法如下:

  1. String fileName = "data.txt";
  2. String content = "helloworld";
  3. FileOutputStream fos;
  4. try {
  5. fos = openFileOutput(fileName, MODE_PRIVATE);
  6. fos.write(content.getBytes());
  7. fos.close();
  8. } catch (Exception e) {
  9. e.printStackTrace();
  10. }

内部储存--读取

  1. String fileName = "data.txt";
  2. String content = "helloworld";
  3. FileOutputStream fos;
  4. try {
  5. fos = openFileOutput(fileName, MODE_PRIVATE);
  6. fos.write(content.getBytes());
  7. fos.close();
  8. } catch (Exception e) {
  9. e.printStackTrace();
  10. }

 如果需要用到外部储存的外一般需要声明权限,这也是Android保证应用程序的安全性做了相关规定,如果程序需要访问系统的一些关键信息,必须要在清单文凭中声明权限才可以,否则程序运行时会直接崩溃。

由于操作SD卡中的数据属于系统中比较关键的信息,因此需要在清单文件的<manifest>节点中添加SD卡的读写权限

  1. <uses-permission
  2. android:name="android.permission.READ_EXTERNAL_STORAGE"/>
  3. <uses-permission
  4. android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

讲得本来只想将布局的因为刚好做了个功能,就刚好把内部储存讲了,代码篇幅确实有点长了,但对于Android初学者来说还是得多学多练,才能加深理解。 

https://download.csdn.net/download/qq_55985667/85037159icon-default.png?t=M276https://download.csdn.net/download/qq_55985667/85037159https://download.csdn.net/download/qq_55985667/85037168icon-default.png?t=M276https://download.csdn.net/download/qq_55985667/85037168

第一个是图片,第二个是源项目,如果对你有帮组的话可以点个免费的赞么,谢谢! 

内部存储写入

内部存储

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/499963
推荐阅读
相关标签
  

闽ICP备14008679号