基于Android Studio 实现盘算器(简单易上手使用技术多) ...

打印 上一主题 下一主题

主题 523|帖子 523|积分 1573

一、高质量源码(非开源,白嫖低价勿扰)

   
关注公众号:《编程乐学》

   
背景复兴:23112301

    同款低价传送链接(仅8.8¥):

  网络资源模板--基于 Android Studio 实现的简易盘算器-CSDN博客
  前言

        本项目是一个基于Android Studio和Java语言开发的简单盘算器应用。应用包含启动页面、登岸注册页面、首页、盘算器页面和我的页面等多个功能模块。
        通过这个项目标实践,希望这个项目能够资助你入门Android开发,并为你以后的学习和项目提供一些基础。

目次
前言
一、项目概述
1、构成以及功能设计
二、开发环境
三、准备工具
四、详细设计
1、新建工程
2、搭建启动页
3、搭建注册登岸面
3、搭建首页界面
4、搭建我的页面
五、项目运行
1.图片演示
2.视频演示
六、项目总结
七、源码下载


一、项目概述

1、构成以及功能设计


①启动页面
    -倒计时
②登岸注册页面
    - 使用SQLite数据库
③ 首页
    - 使用FrameLayout进行页面的切换
④ 盘算器页面
    - 进行运算
⑤我的页面
   - 体现用户名
   - 实现退出登录功能
二、开发环境

        我的开发环境如下,大家的AS版本不需要和我相同,只要是近两年从官网下载的版本,都是比4.0.0 (2020)高的,是可以满足运行和开发要求的。
   

  三、准备工具


  • 选择自己喜好的logo
四、详细设计

1、新建工程



  • 首先打开Android Studio,并新建一个工程,File——>New——>New Project——>Empty Project,工程名称叫做Calculator,可以根据自己喜好设置名称。
  • 包名自己随意设定,这里博主用的是com.example,一般是com.example;工程文件的保存路径要修改一下,不要放在C盘,我这里选择的是放在H盘,养成项目同一放在英文路径下的好风俗。
  • 最后选择API 24:Android 7.0,由于如许它就拥有了96.3%的跨平台性(兼容性非常好),由于它版本很低,基本上模拟器API版本都是高于20的,所以这个软件可以运行其他各种装备上。点击Finish完成创建。
   

  2、搭建启动页

        这里使用到计时器,放置自己喜好的图片即可

activity_start.xml布局文件代码:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <androidx.constraintlayout.widget.ConstraintLayout 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="#373B50"
  8.     tools:context=".Start.StartActivity">
  9.     <LinearLayout
  10.         android:layout_width="0dp"
  11.         android:layout_height="0dp"
  12.         android:gravity="center"
  13.         android:orientation="vertical"
  14.         app:layout_constraintBottom_toBottomOf="parent"
  15.         app:layout_constraintEnd_toEndOf="parent"
  16.         app:layout_constraintStart_toStartOf="parent"
  17.         app:layout_constraintTop_toTopOf="parent">
  18.         <ImageView
  19.             android:id="@+id/imageView"
  20.             android:layout_width="wrap_content"
  21.             android:layout_height="wrap_content"
  22.             app:srcCompat="@drawable/start" />
  23.         <TextView
  24.             android:id="@+id/textView"
  25.             android:layout_width="wrap_content"
  26.             android:layout_height="wrap_content"
  27.             android:layout_marginTop="8dp"
  28.             android:text="计算器"
  29.             android:textColor="#cdd1f9"
  30.             android:textSize="36sp"
  31.             android:textStyle="bold" />
  32.     </LinearLayout>
  33. </androidx.constraintlayout.widget.ConstraintLayout>
复制代码


3、搭建注册登岸面

  设计一个app的时间,肯定要先设计layout文件,再设计java文件,由于布局有了,才能在上面进行代码的编写。我们来看一下activity_register和activity_login布局文件。
   

   

  注册页面完备代码如下:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <androidx.constraintlayout.widget.ConstraintLayout 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.     tools:context=".RegisterLogin.RegisterActivity">
  8.     <Button
  9.         android:id="@+id/register_button"
  10.         android:layout_width="0dp"
  11.         android:layout_height="wrap_content"
  12.         android:layout_marginStart="16dp"
  13.         android:layout_marginTop="100dp"
  14.         android:layout_marginEnd="16dp"
  15.         android:background="#B9C0FF"
  16.         android:text="立 即 注 册"
  17.         android:textColor="#fff"
  18.         android:textSize="24sp"
  19.         app:layout_constraintEnd_toEndOf="@+id/linearLayout4"
  20.         app:layout_constraintStart_toStartOf="@+id/linearLayout4"
  21.         app:layout_constraintTop_toBottomOf="@+id/linearLayout4" />
  22.     <LinearLayout
  23.         android:id="@+id/linearLayout4"
  24.         android:layout_width="match_parent"
  25.         android:layout_height="wrap_content"
  26.         android:layout_marginStart="16dp"
  27.         android:layout_marginTop="32dp"
  28.         android:layout_marginEnd="16dp"
  29.         android:orientation="vertical"
  30.         app:layout_constraintEnd_toEndOf="parent"
  31.         app:layout_constraintHorizontal_bias="0.0"
  32.         app:layout_constraintStart_toStartOf="parent"
  33.         app:layout_constraintTop_toBottomOf="@+id/textView2">
  34.         <EditText
  35.             android:id="@+id/username_edittext"
  36.             android:layout_width="match_parent"
  37.             android:layout_height="wrap_content"
  38.             android:hint="请输入账号"
  39.             android:textColorHint="#B9C0FF" />
  40.         <EditText
  41.             android:id="@+id/password_edittext"
  42.             android:layout_width="match_parent"
  43.             android:layout_height="wrap_content"
  44.             android:layout_marginTop="16dp"
  45.             android:hint="请输入密码"
  46.             android:inputType="textPassword"
  47.             android:textColorHint="#B9C0FF" />
  48.         <EditText
  49.             android:id="@+id/repeat"
  50.             android:layout_width="match_parent"
  51.             android:layout_height="wrap_content"
  52.             android:layout_marginTop="16dp"
  53.             android:ems="10"
  54.             android:hint="再次输入您的密码"
  55.             android:inputType="textPassword"
  56.             android:textColorHint="#B9C0FF" />
  57.         <TextView
  58.             android:id="@+id/tv_login"
  59.             android:layout_width="match_parent"
  60.             android:layout_height="wrap_content"
  61.             android:layout_marginTop="8dp"
  62.             android:gravity="center|right"
  63.             android:textColor="#B9C0FF"
  64.             android:text="已有账号?立即登录" />
  65.     </LinearLayout>
  66.     <ImageView
  67.         android:id="@+id/imageView7"
  68.         android:layout_width="150dp"
  69.         android:layout_height="150dp"
  70.         android:layout_marginTop="24dp"
  71.         android:src="@drawable/start"
  72.         app:layout_constraintEnd_toEndOf="parent"
  73.         app:layout_constraintStart_toStartOf="parent"
  74.         app:layout_constraintTop_toTopOf="parent" />
  75.     <TextView
  76.         android:id="@+id/textView2"
  77.         android:layout_width="wrap_content"
  78.         android:layout_height="wrap_content"
  79.         android:layout_marginTop="16dp"
  80.         android:text="注 册"
  81.         android:textColor="#B9C0FF"
  82.         android:textSize="36sp"
  83.         android:textStyle="bold"
  84.         app:layout_constraintEnd_toEndOf="@+id/imageView7"
  85.         app:layout_constraintStart_toStartOf="@+id/imageView7"
  86.         app:layout_constraintTop_toBottomOf="@+id/imageView7" />
  87. </androidx.constraintlayout.widget.ConstraintLayout>
复制代码
登岸页面完备代码如下:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <androidx.constraintlayout.widget.ConstraintLayout 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.     tools:context=".RegisterLogin.LoginActivity">
  8.     <ImageView
  9.         android:id="@+id/imageView6"
  10.         android:layout_width="150dp"
  11.         android:layout_height="150dp"
  12.         android:layout_marginTop="24dp"
  13.         android:src="@drawable/start"
  14.         app:layout_constraintEnd_toEndOf="parent"
  15.         app:layout_constraintHorizontal_bias="0.497"
  16.         app:layout_constraintStart_toStartOf="parent"
  17.         app:layout_constraintTop_toTopOf="parent" />
  18.     <TextView
  19.         android:id="@+id/textView2"
  20.         android:layout_width="wrap_content"
  21.         android:layout_height="wrap_content"
  22.         android:layout_marginTop="16dp"
  23.         android:text="登 陆"
  24.         android:textColor="#B9C0FF"
  25.         android:textSize="36sp"
  26.         android:textStyle="bold"
  27.         app:layout_constraintEnd_toEndOf="@+id/imageView6"
  28.         app:layout_constraintStart_toStartOf="@+id/imageView6"
  29.         app:layout_constraintTop_toBottomOf="@+id/imageView6" />
  30.     <LinearLayout
  31.         android:id="@+id/linearLayout3"
  32.         android:layout_width="0dp"
  33.         android:layout_height="wrap_content"
  34.         android:layout_marginStart="16dp"
  35.         android:layout_marginTop="32dp"
  36.         android:layout_marginEnd="16dp"
  37.         android:orientation="vertical"
  38.         app:layout_constraintEnd_toEndOf="parent"
  39.         app:layout_constraintStart_toStartOf="parent"
  40.         app:layout_constraintTop_toBottomOf="@+id/textView2">
  41.         <EditText
  42.             android:id="@+id/password_edittext"
  43.             android:layout_width="match_parent"
  44.             android:layout_height="wrap_content"
  45.             android:hint="请输入密码"
  46.             android:inputType="textPassword"
  47.             android:textColorHint="#B9C0FF" />
  48.         <EditText
  49.             android:id="@+id/username_edittext"
  50.             android:layout_width="match_parent"
  51.             android:layout_height="wrap_content"
  52.             android:layout_marginTop="10dp"
  53.             android:hint="请输入账号"
  54.             android:textColorHint="#B9C0FF" />
  55.         <TextView
  56.             android:id="@+id/tv_register"
  57.             android:layout_width="match_parent"
  58.             android:layout_height="wrap_content"
  59.             android:layout_marginTop="8dp"
  60.             android:gravity="center|right"
  61.             android:text="没有账号?立即注册!"
  62.             android:textColor="#B9C0FF" />
  63.     </LinearLayout>
  64.     <Button
  65.         android:id="@+id/login_button"
  66.         android:layout_width="0dp"
  67.         android:layout_height="wrap_content"
  68.         android:layout_marginStart="16dp"
  69.         android:layout_marginTop="100dp"
  70.         android:layout_marginEnd="16dp"
  71.         android:background="#B9C0FF"
  72.         android:text="立 即 登 陆"
  73.         android:textColor="#fff"
  74.         android:textSize="24sp"
  75.         app:layout_constraintEnd_toEndOf="@+id/linearLayout3"
  76.         app:layout_constraintStart_toStartOf="@+id/linearLayout3"
  77.         app:layout_constraintTop_toBottomOf="@+id/linearLayout3" />
  78. </androidx.constraintlayout.widget.ConstraintLayout>
复制代码

        然后回到我们的Activity文件。首先创建需要用到的控件,然后绑定控件,再设置监听器等。
注册页面Register.java代码如下:
  1. package com.example.calculator.RegisterLogin;
  2. import android.content.Intent;
  3. import android.os.Bundle;
  4. import android.view.View;
  5. import android.widget.Button;
  6. import android.widget.EditText;
  7. import android.widget.TextView;
  8. import android.widget.Toast;
  9. import androidx.appcompat.app.AppCompatActivity;
  10. import com.example.calculator.Helper.DatabaseHelper;
  11. import com.example.calculator.R;
  12. public class RegisterActivity extends AppCompatActivity {
  13.     private EditText mUserNameEditText;
  14.     private EditText mPasswordEditText;
  15.     private DatabaseHelper mDatabaseHelper;
  16.     private EditText repeat;
  17.     private TextView tvLogin;
  18.     private Button registerButton;
  19.     @Override
  20.     protected void onCreate(Bundle savedInstanceState) {
  21.         super.onCreate(savedInstanceState);
  22.         setContentView(R.layout.activity_register);
  23.         initView();
  24.         button();
  25.         login();
  26.     }
  27.     // 返回到登陆页面
  28.     private void login() {
  29.         tvLogin.setOnClickListener(new View.OnClickListener() {
  30.             @Override
  31.             public void onClick(View view) {
  32.                 finish();
  33.             }
  34.         });
  35.     }
  36.     private void button() {
  37.         // 点击注册按钮进行验证
  38.         registerButton.setOnClickListener(new View.OnClickListener() {
  39.             @Override
  40.             public void onClick(View v) {
  41.                 // 获取三个输入框的内容
  42.                 String username = mUserNameEditText.getText().toString().trim();
  43.                 String password = mPasswordEditText.getText().toString().trim();
  44.                 String passwordrepeat = repeat.getText().toString().trim();
  45.                 // 判断两次密码是否一致
  46.                 if (passwordrepeat.equals(password) && password.equals(passwordrepeat)) {
  47.                     boolean result = mDatabaseHelper.insertData(username, password);
  48.                     if (result) {
  49.                         Toast.makeText(getApplicationContext(), "注册成功", Toast.LENGTH_SHORT).show();
  50.                         Intent intent = new Intent(RegisterActivity.this, LoginActivity.class);
  51.                         startActivity(intent);
  52.                         finish();
  53.                     } else {
  54.                         Toast.makeText(getApplicationContext(), "注册失败", Toast.LENGTH_SHORT).show();
  55.                     }
  56.                 } else {
  57.                     Toast.makeText(getApplicationContext(), "两次密码不同,请检查!", Toast.LENGTH_SHORT).show();
  58.                 }
  59.             }
  60.         });
  61.     }
  62.     private void initView() {
  63.         mUserNameEditText = findViewById(R.id.username_edittext);
  64.         mPasswordEditText = findViewById(R.id.password_edittext);
  65.         mDatabaseHelper = new DatabaseHelper(this);
  66.         repeat = (EditText) findViewById(R.id.repeat);
  67.         tvLogin = (TextView) findViewById(R.id.tv_login);
  68.         registerButton = findViewById(R.id.register_button);
  69.     }
  70. }
复制代码

登岸页面LoginActivity .java代码如下:
  1. package com.example.calculator.RegisterLogin;
  2. import android.content.Intent;
  3. import android.content.SharedPreferences;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.widget.Button;
  7. import android.widget.EditText;
  8. import android.widget.TextView;
  9. import android.widget.Toast;
  10. import androidx.appcompat.app.AppCompatActivity;
  11. import com.example.calculator.Helper.DatabaseHelper;
  12. import com.example.calculator.MainActivity;
  13. import com.example.calculator.R;
  14. public class LoginActivity extends AppCompatActivity {
  15.     private EditText mUserNameEditText;
  16.     private EditText mPasswordEditText;
  17.     private Button mLoginButton;
  18.     private TextView tvRegister;
  19.     @Override
  20.     protected void onCreate(Bundle savedInstanceState) {
  21.         super.onCreate(savedInstanceState);
  22.         setContentView(R.layout.activity_login);
  23.         mUserNameEditText = findViewById(R.id.username_edittext);
  24.         mPasswordEditText = findViewById(R.id.password_edittext);
  25.         mLoginButton = findViewById(R.id.login_button);
  26.         tvRegister = findViewById(R.id.tv_register);
  27.       
  28.         tvRegister.setOnClickListener(new View.OnClickListener() {
  29.             @Override
  30.             public void onClick(View v) {
  31.                 Intent intent = new Intent(LoginActivity.this, RegisterActivity.class);
  32.                 startActivity(intent);
  33.             }
  34.         });
  35.         mLoginButton.setOnClickListener(new View.OnClickListener() {
  36.             @Override
  37.             public void onClick(View v) {
  38.                 String username = mUserNameEditText.getText().toString().trim();
  39.                 String password = mPasswordEditText.getText().toString().trim();
  40.                 if (username.isEmpty() || password.isEmpty()) {
  41.                     Toast.makeText(getApplicationContext(), "请输入账号或密码", Toast.LENGTH_SHORT).show();
  42.                     return;
  43.                 }
  44.                 boolean result = mDatabaseHelper.checkUser(username, password);
  45.                 if (result) {
  46.                     Toast.makeText(getApplicationContext(), "登陆成功", Toast.LENGTH_SHORT).show();
  47.             
  48.                 } else {
  49.                     Toast.makeText(getApplicationContext(), "账号或密码错误", Toast.LENGTH_SHORT).show();
  50.                 }
  51.             }
  52.         });
  53.     }
  54. }
复制代码

3、搭建首页界面

        主页主要实现差别的Fragment页面切换,默认体现盘算器页面!
   

  首页页面布局代码如下所示:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <androidx.constraintlayout.widget.ConstraintLayout 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="#373B50"
  8.     android:orientation="vertical"
  9.     tools:context=".MainActivity">
  10.     <FrameLayout
  11.         android:id="@+id/fr"
  12.         android:layout_width="0dp"
  13.         android:layout_height="0dp"
  14.         android:layout_marginBottom="8dp"
  15.         app:layout_constraintBottom_toTopOf="@+id/linearLayout2"
  16.         app:layout_constraintEnd_toEndOf="parent"
  17.         app:layout_constraintStart_toStartOf="parent"
  18.         app:layout_constraintTop_toTopOf="parent">
  19.     </FrameLayout>
  20.     <LinearLayout
  21.         android:id="@+id/linearLayout2"
  22.         android:layout_width="0dp"
  23.         android:layout_height="wrap_content"
  24.         android:layout_marginBottom="4dp"
  25.         android:background="#373B50"
  26.         android:orientation="vertical"
  27.         app:layout_constraintBottom_toBottomOf="parent"
  28.         app:layout_constraintEnd_toEndOf="parent"
  29.         app:layout_constraintStart_toStartOf="parent">
  30.         <LinearLayout
  31.             android:layout_width="match_parent"
  32.             android:layout_height="wrap_content"
  33.             android:layout_marginTop="4dp"
  34.             android:orientation="horizontal">
  35.             <ImageView
  36.                 android:id="@+id/img_home"
  37.                 android:layout_width="20dp"
  38.                 android:layout_height="20dp"
  39.                 android:layout_weight="1"
  40.                 app:srcCompat="@drawable/xhome" />
  41.             <ImageView
  42.                 android:id="@+id/img_mine"
  43.                 android:layout_width="20dp"
  44.                 android:layout_height="20dp"
  45.                 android:layout_weight="1"
  46.                 app:srcCompat="@drawable/mine" />
  47.         </LinearLayout>
  48.         <LinearLayout
  49.             android:layout_width="match_parent"
  50.             android:layout_height="match_parent"
  51.             android:layout_marginTop="2dp"
  52.             android:orientation="horizontal">
  53.             <TextView
  54.                 android:id="@+id/tv_home"
  55.                 android:layout_width="25dp"
  56.                 android:layout_height="wrap_content"
  57.                 android:layout_weight="1"
  58.                 android:gravity="center"
  59.                 android:text="首页"
  60.                 android:textColor="#cdd1f9"
  61.                 android:textSize="10sp" />
  62.             <TextView
  63.                 android:id="@+id/tv_mine"
  64.                 android:layout_width="25dp"
  65.                 android:layout_height="wrap_content"
  66.                 android:layout_weight="1"
  67.                 android:gravity="center"
  68.                 android:text="我的"
  69.                 android:textColor="#1A1B27"
  70.                 android:textSize="10sp" />
  71.         </LinearLayout>
  72.     </LinearLayout>
  73. </androidx.constraintlayout.widget.ConstraintLayout>
复制代码

4、搭建我的页面

   

     布局页面代码如下所示:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <androidx.constraintlayout.widget.ConstraintLayout 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.     tools:context=".Fragment.MineFragment">
  8.     <ImageView
  9.         android:id="@+id/imageView2"
  10.         android:layout_width="100dp"
  11.         android:layout_height="100dp"
  12.         android:layout_marginTop="16dp"
  13.         android:src="@drawable/touxiang"
  14.         app:layout_constraintEnd_toEndOf="parent"
  15.         app:layout_constraintStart_toStartOf="parent"
  16.         app:layout_constraintTop_toTopOf="parent" />
  17.     <TextView
  18.         android:id="@+id/tv_user"
  19.         android:layout_width="wrap_content"
  20.         android:layout_height="wrap_content"
  21.         android:layout_marginTop="24dp"
  22.         android:text="登录/注册"
  23.         android:textColor="#cdd1f9"
  24.         android:textSize="30sp"
  25.         android:textStyle="bold"
  26.         app:layout_constraintEnd_toEndOf="@+id/imageView2"
  27.         app:layout_constraintStart_toStartOf="@+id/imageView2"
  28.         app:layout_constraintTop_toBottomOf="@+id/imageView2" />
  29.     <LinearLayout
  30.         android:layout_width="0dp"
  31.         android:layout_height="0dp"
  32.         android:layout_marginStart="16dp"
  33.         android:layout_marginTop="24dp"
  34.         android:layout_marginEnd="16dp"
  35.         android:orientation="vertical"
  36.         app:layout_constraintBottom_toBottomOf="parent"
  37.         app:layout_constraintEnd_toEndOf="parent"
  38.         app:layout_constraintStart_toStartOf="parent"
  39.         app:layout_constraintTop_toBottomOf="@+id/tv_user">
  40.         <LinearLayout
  41.             android:layout_width="match_parent"
  42.             android:layout_height="wrap_content"
  43.             android:gravity="center"
  44.             android:orientation="horizontal">
  45.             <TextView
  46.                 android:id="@+id/textView3"
  47.                 android:layout_width="wrap_content"
  48.                 android:layout_height="wrap_content"
  49.                 android:layout_weight="1"
  50.                 android:text="版本信息"
  51.                 android:textColor="#cdd1f9"
  52.                 android:textSize="18sp" />
  53.             <TextView
  54.                 android:id="@+id/textView4"
  55.                 android:layout_width="wrap_content"
  56.                 android:layout_height="wrap_content"
  57.                 android:layout_marginRight="4dp"
  58.                 android:layout_weight="1"
  59.                 android:gravity="center|right"
  60.                 android:text="V1.0.0"
  61.                 android:textColor="#cdd1f9"
  62.                 android:textSize="16sp" />
  63.             <ImageView
  64.                 android:id="@+id/imageView3"
  65.                 android:layout_width="15dp"
  66.                 android:layout_height="15dp"
  67.                 android:src="@drawable/jiantou" />
  68.         </LinearLayout>
  69.         <View
  70.             android:id="@+id/view2"
  71.             android:layout_width="match_parent"
  72.             android:layout_height="2dp"
  73.             android:layout_marginTop="16dp"
  74.             android:background="#C8C8C8" />
  75.         <LinearLayout
  76.             android:layout_width="match_parent"
  77.             android:layout_height="wrap_content"
  78.             android:layout_marginTop="16dp"
  79.             android:orientation="horizontal">
  80.             <TextView
  81.                 android:id="@+id/textView5"
  82.                 android:layout_width="wrap_content"
  83.                 android:layout_height="wrap_content"
  84.                 android:layout_weight="1"
  85.                 android:text="关于我们"
  86.                 android:textColor="#cdd1f9"
  87.                 android:textSize="18sp" />
  88.             <ImageView
  89.                 android:id="@+id/imageView4"
  90.                 android:layout_width="15dp"
  91.                 android:layout_height="15dp"
  92.                 android:src="@drawable/jiantou" />
  93.         </LinearLayout>
  94.         <View
  95.             android:id="@+id/view3"
  96.             android:layout_width="match_parent"
  97.             android:layout_height="2dp"
  98.             android:layout_marginTop="16dp"
  99.             android:background="#C8C8C8" />
  100.         <LinearLayout
  101.             android:layout_width="match_parent"
  102.             android:layout_height="wrap_content"
  103.             android:layout_marginTop="16dp"
  104.             android:gravity="center"
  105.             android:orientation="horizontal">
  106.             <TextView
  107.                 android:id="@+id/tv_quit"
  108.                 android:layout_width="wrap_content"
  109.                 android:layout_height="wrap_content"
  110.                 android:layout_weight="1"
  111.                 android:text="退出登录"
  112.                 android:textColor="#cdd1f9"
  113.                 android:textSize="18sp" />
  114.             <ImageView
  115.                 android:id="@+id/imageView5"
  116.                 android:layout_width="15dp"
  117.                 android:layout_height="15dp"
  118.                 android:src="@drawable/jiantou" />
  119.         </LinearLayout>
  120.     </LinearLayout>
  121. </androidx.constraintlayout.widget.ConstraintLayout>
复制代码
 对应的JAVA实现解说:

  • 在onCreateView方法中,通过LayoutInflater将fragment_mine布局文件实例化为View对象,并通过findViewById方法初始化各个控件。
  • 在onCreateView方法中,根据用户是否已登录,设置体现的用户名或登岸/注册按钮的文本。如果用户已登录,则体现"Hi + 用户名",并将登岸/注册按钮设置为不可点击。如果用户未登录,则体现"登岸 | 注册",并为登岸/注册按钮设置点击事件,点击后跳转到LoginActivity。
  • 在tvQuit的点击事件中,判定用户是否已登录。如果用户未登录,则弹出提示信息。如果用户已登录,则实行退出登录的逻辑。
  • initView方法用于初始化各个控件,通过findViewById方法找到对应的控件并赋值给相应的成员变量。
接下来是对应java文件代码:
  1. package com.example.calculator.Fragment;
  2. import android.content.Intent;
  3. import android.os.Bundle;
  4. import android.view.LayoutInflater;
  5. import android.view.View;
  6. import android.view.ViewGroup;
  7. import android.widget.ImageView;
  8. import android.widget.TextView;
  9. import android.widget.Toast;
  10. import androidx.fragment.app.Fragment;
  11. import com.example.calculator.MainActivity;
  12. import com.example.calculator.R;
  13. import com.example.calculator.RegisterLogin.LoginActivity;
  14. public class MineFragment extends Fragment {
  15.     private ImageView imageView2;
  16.     private TextView tvUser;
  17.     private TextView textView3;
  18.     private TextView textView4;
  19.     private ImageView imageView3;
  20.     private View view2;
  21.     private TextView textView5;
  22.     private ImageView imageView4;
  23.     private View view3;
  24.     private TextView tvQuit;
  25.     private ImageView imageView5;
  26.     public MineFragment() {
  27.     }
  28.     @Override
  29.     public void onCreate(Bundle savedInstanceState) {
  30.         super.onCreate(savedInstanceState);
  31.     }
  32.     @Override
  33.     public View onCreateView(LayoutInflater inflater, ViewGroup container,
  34.                              Bundle savedInstanceState) {
  35.         View view = inflater.inflate(R.layout.fragment_mine, container, false);
  36.         initView(view);
  37.         if (!username.isEmpty()) {
  38.             tvUser.setText("Hi " + username);
  39.             tvUser.setClickable(false);
  40.         } else {
  41.             tvUser.setText("登陆 | 注册");
  42.             tvUser.setOnClickListener(new View.OnClickListener() {
  43.                 @Override
  44.                 public void onClick(View v) {
  45.                     Intent intent = new Intent(getActivity(), LoginActivity.class);
  46.                     startActivity(intent);
  47.                 }
  48.             });
  49.         }
  50.         tvQuit.setOnClickListener(new View.OnClickListener() {
  51.             @Override
  52.             public void onClick(View v) {
  53.                 // 判断是否已登录
  54.                 String username = mSharedPreferences.getString("username", "");
  55.                 if (username.isEmpty()) {
  56.                     Toast.makeText(getActivity(), "请先登录后在尝试!", Toast.LENGTH_SHORT).show();
  57.                     return;
  58.                 }
  59.             }
  60.         });
  61.         return view;
  62.     }
  63.     private void initView(View view) {
  64.         imageView2 = view.findViewById(R.id.imageView2);
  65.         tvUser = view.findViewById(R.id.tv_user);
  66.         textView3 = view.findViewById(R.id.textView3);
  67.         textView4 = view.findViewById(R.id.textView4);
  68.         imageView3 = view.findViewById(R.id.imageView3);
  69.         view2 = view.findViewById(R.id.view2);
  70.         textView5 = view.findViewById(R.id.textView5);
  71.         imageView4 = view.findViewById(R.id.imageView4);
  72.         view3 = view.findViewById(R.id.view3);
  73.         tvQuit = view.findViewById(R.id.tv_quit);
  74.         imageView5 = view.findViewById(R.id.imageView5);
  75.     }
  76. }
复制代码



        至此,完备的盘算器项目就创建完成了。
五、项目运行

1.图片演示

(1)运行app到模拟器上,体现启动页面:
   

  
(2)首页页面:
   

  (3)我的页面:
   

  (4)登录页面:
   

  (5)注册页面:
   

  2.视频演示

         Android Studio 实现盘算器App
            运行效果和功能很完备,至此就完成了非常简单的盘算器。大家可以跟着动手做一下,放上自己喜好的Logo,科技感真的不要太好!
六、项目总结

        在启动页面中,我们实现了一个倒计时功能,用于展示应用的启动画面,并在倒计时竣事后自动跳转到登岸注册页面。
        在登岸注册页面中,我们使用了SQLite数据库来存储用户的账号和密码信息。用户可以通过注册功能创建新的账号,并通过登岸功能进行账号的验证和登岸。
首页使用了FrameLayout进行页面的切换,通过底部导航栏或侧边栏可以切换差别的子页面。其中,盘算器页面实现了基本的数学运算功能,用户可以输入数字和操作符,盘算器会体现盘算结果。
        我的页面体现了当前登岸用户的用户名,并提供了退出登录功能,用户可以点击按钮退出当前账号。
        在整个项目标开发过程中,我们使用了Android Studio作为开发工具,使用Java语言进行编码。通过这个项目,我们学习和应用了很多常见的Android开发技术,如UI设计、事件处置惩罚、布局管理、数据存储等。



七、获取源码

   关注公众号《编程乐学》,背景复兴:23112301
  
  

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

篮之新喜

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表