基于Android的本地电子书阅读器的设计与实现Ebook(1)

学习Android时间不久,试着做了一个本地电子书阅读器APP,因为知识浅薄并不能像其他大佬一样实现各种繁杂的功能,但可以实现基本的阅读和记录读后感功能,尝试写一篇csdn聊以自慰。

开始前先展示一下我的阅读器APP图标:

现在进入我们进入正文,要想快速了解这个app,我们需要知道她的一些关键文件目录下的名称:
assets:
java:
res:
其中assets和menu是原来目录没有的,需要自己创建。

然后我们点开Ebook,映入眼帘的是一个登录界面:
对应的布局文件名activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:padding="15dp"tools:context=".MainActivity"android:background="@drawable/rebg"><EditTextandroid:id="@+id/main_et_account"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="160dp"android:layout_marginRight="10dp"android:layout_marginLeft="10dp"android:hint="请输入您的用户名"android:inputType="textPersonName" /><EditTextandroid:id="@+id/main_et_password"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="20dp"android:layout_marginRight="10dp"android:layout_marginLeft="10dp"android:hint="请输入您的密码"android:inputType="textPassword" /><Buttonandroid:id="@+id/main_btn_register"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_gravity="center"android:layout_marginTop="20dp"android:layout_marginRight="80dp"android:layout_marginLeft="80dp"android:background="@drawable/shape1"android:text="注   册"android:textColor="@color/black"android:textSize="30dp"android:textStyle="normal"/><Buttonandroid:id="@+id/main_btn_login"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_gravity="center"android:layout_marginTop="20dp"android:layout_marginRight="80dp"android:layout_marginLeft="80dp"android:background="@drawable/shape1"android:text="登录"android:textColor="@color/black"android:textSize="30dp"android:textStyle="normal" /></LinearLayout>

这里解释一下,如果想要让按键不是原来的方方正正的,要在drawable创建一个XML文件具体如下:
shape1

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"android:layout_height="match_parent"android:layout_width="match_parent"><corners android:radius="40dip"></corners><paddingandroid:bottom="5dp"android:left="10dp"android:right="10dp"android:top="5dp" /><solid android:color="@color/teal_200"/>
</shape>

对应的java名称MainActivity:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {//变量名注册private EditText myAccount;private EditText myPassword;private Button myRegisterBtn;private Button myLoginBtn;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//注册IDmyAccount = findViewById(R.id.main_et_account);myPassword = findViewById(R.id.main_et_password);myRegisterBtn = findViewById(R.id.main_btn_register);myLoginBtn = findViewById(R.id.main_btn_login);//注册监听器myRegisterBtn.setOnClickListener(this);myLoginBtn.setOnClickListener(this);}//设置监听事件public void onClick(View v){switch(v.getId()){case R.id.main_btn_login:login();break;case R.id.main_btn_register:Intent intent_Login_Register=new Intent(MainActivity.this,Register.class);startActivity(intent_Login_Register);break;}}//登录函数public void login(){String userName = myAccount.getText().toString();String userPassword = myPassword.getText().toString();if(judge()){if(isExist(userName,userPassword)){Intent intent_to_login= new Intent(MainActivity.this,MainLogin.class);startActivity(intent_to_login);Toast.makeText(this,"登录成功",Toast.LENGTH_LONG).show();}else{Toast.makeText(this,"登录失败",Toast.LENGTH_LONG).show();}}}//登录判断函数public boolean isExist(String na,String pa){String userName = na;String userPassword = pa;SharedPreferences sharedPreferences = getSharedPreferences("user",Context.MODE_PRIVATE);String name = sharedPreferences.getString("Name","");String password = sharedPreferences.getString("Password","");if(userName.equals(name) && userPassword.equals(password)){return true;}return false;}//判断函数public boolean judge(){String userName = myAccount.getText().toString();String userPassword = myPassword.getText().toString();if(userName.equals("")){Toast.makeText(this,"用户名不能为空",Toast.LENGTH_SHORT).show();return false;}else if(myPassword.length()<=5){Toast.makeText(this,"密码至少为六位数",Toast.LENGTH_SHORT).show();return false;}else if(myPassword.equals("")){Toast.makeText(this,"密码不能为空",Toast.LENGTH_SHORT).show();return false;}return true;}//生命周期protected void onResume() {super.onResume();}protected void onDestroy() {super.onDestroy();}protected void onPause() {super.onPause();}
}

接下来作为app的新用户,点击注册进行用户注册:
activity_register.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"tools:context=".Register"android:background="@drawable/rebg"><EditTextandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="20dp"android:layout_marginRight="10dp"android:layout_marginLeft="10dp"android:ems="10"android:hint="请输入您的用户名"android:inputType="textPersonName"android:id="@+id/register_et_account"/><EditTextandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="20dp"android:layout_marginRight="10dp"android:layout_marginLeft="10dp"android:ems="10"android:hint="请输入您的密码"android:inputType="textPassword"android:id="@+id/register_et_password"/><EditTextandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="20dp"android:layout_marginRight="10dp"android:layout_marginLeft="10dp"android:ems="10"android:hint="请输入您的邮箱地址"android:inputType="textEmailAddress"android:id="@+id/register_et_email"/><EditTextandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="20dp"android:layout_marginRight="10dp"android:layout_marginLeft="10dp"android:ems="10"android:hint="请输入您的家庭地址"android:inputType="text"android:id="@+id/register_et_address"/><EditTextandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="20dp"android:layout_marginRight="10dp"android:layout_marginLeft="10dp"android:ems="10"android:hint="请输入您的手机号"android:inputType="phone"android:id="@+id/register_et_phone"/><Buttonandroid:layout_width="240dp"android:layout_height="wrap_content"android:text="取消"android:textStyle="bold"android:textSize="20dp"android:layout_marginTop="20dp"android:layout_marginRight="80dp"android:layout_marginLeft="80dp"android:background="@drawable/shape1"android:textColor="@color/black"android:layout_gravity="center"android:id="@+id/register_btn_no" /><Buttonandroid:layout_width="240dp"android:layout_height="wrap_content"android:text="确认"android:textStyle="bold"android:textSize="20dp"android:layout_marginTop="20dp"android:layout_marginRight="80dp"android:layout_marginLeft="80dp"android:background="@drawable/shape1"android:textColor="@color/black"android:layout_gravity="center"android:id="@+id/register_btn_yes"/>
</LinearLayout>

Register:

public class Register extends AppCompatActivity implements View.OnClickListener {//变量名注册private EditText myAccount;private EditText myPassword;private EditText myEmail;private EditText myAddress;private EditText myPhone;private Button myyesbtn;private Button mynobtn;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_register);//注册idmyAccount = findViewById(R.id.register_et_account);myAddress = findViewById(R.id.register_et_address);myEmail = findViewById(R.id.register_et_email);myPassword = findViewById(R.id.register_et_password);myPhone = findViewById(R.id.register_et_phone);myyesbtn = findViewById(R.id.register_btn_yes);mynobtn = findViewById(R.id.register_btn_no);//注册监听器myyesbtn.setOnClickListener(this);mynobtn.setOnClickListener(this);}
//设置监听事件@Overridepublic void onClick(View v) {switch (v.getId()){case R.id.register_btn_yes:register();break;case R.id.register_btn_no:Intent intent_Register_no = new Intent(Register.this,MainActivity.class);startActivity(intent_Register_no);break;}}//注册核心函数public void register(){if(judge()){String userName = myAccount.getText().toString();String userPassword = myPassword.getText().toString();String userPhone = myPhone.getText().toString();String userEmail = myEmail.getText().toString();String userAddress = myAddress.getText().toString();if(isExist(userName)){Toast.makeText(this,"用户名已存在",Toast.LENGTH_SHORT).show();return;}saveSharedPreferences(userName,userPassword,userPhone,userEmail,userAddress);Toast.makeText(this,"注册成功",Toast.LENGTH_SHORT).show();Intent intent_to_Login = new Intent(Register.this,MainActivity.class);startActivity(intent_to_Login);finish();}}//存储判断函数public boolean isExist(String na){String userName = na;SharedPreferences sharedPreferences = getSharedPreferences("user",Context.MODE_PRIVATE);String name = sharedPreferences.getString("Name","defaultName");if(userName == name ){return true;}return false;}//存储函数public void saveSharedPreferences(String na,String pa,String ph,String em,String ad){String userName = na;String userPassword = pa;String userPhone = ph;String userEmail = em;String userAddress = ad;SharedPreferences sharedPreferences = getSharedPreferences("user",Context.MODE_PRIVATE);SharedPreferences.Editor editor = sharedPreferences.edit();editor.putString("Name",userName);editor.putString("Email",userEmail);editor.putString("Address",userAddress);editor.putString("Password",userPassword);editor.putString("Phone",userPhone);editor.commit();}//判断函数public boolean judge(){String userName = myAccount.getText().toString();String userPassword = myPassword.getText().toString();if(userName.equals("")){Toast.makeText(this,"用户名不能为空",Toast.LENGTH_SHORT).show();return false;}else if(myPassword.length()<=5){Toast.makeText(this,"密码至少为六位数",Toast.LENGTH_SHORT).show();return false;}else if(myPassword.equals("")){Toast.makeText(this,"密码不能为空",Toast.LENGTH_SHORT).show();return false;}else if(myPhone.equals("")){Toast.makeText(this,"电话号码不能为空",Toast.LENGTH_SHORT).show();return false;}else if(myEmail.equals("")){Toast.makeText(this,"电子邮箱不能为空",Toast.LENGTH_SHORT).show();return false;}else if(myAddress.equals("")){Toast.makeText(this,"地址不能为空",Toast.LENGTH_SHORT).show();return false;}else if(myPhone.length()!=11){Toast.makeText(this,"请输入有效电话号码",Toast.LENGTH_SHORT).show();return false;}return true;}}

到此,注册完后就可以返回登录界面,输入正确用户名和密码登录Ebook啦。

接下来会继续按照用户的视角来介绍Ebook,并展示相关代码。

基于Android的本地电子书阅读器的设计与实现Ebook(1)相关推荐

  1. 基于Android的本地电子书阅读器的设计与实现Ebook(3)

    之前写这个只是抱着半玩的心态,没有想到有这么多网友愿意驻足浏览,十分的惊喜.这里浅浅说一下我并不是专门学软件开发的,所以如果有什么错误请多指教. 接上回分解.现在我们来到第二个界面"感悟&q ...

  2. 基于Android的本地电子书阅读器的设计与实现Ebook(终章)

    昨天写到最后实在是卡的受不了了,今天把这个写完. 最后就是补充几个xml,不知道前面有没有放,在这里补充下. 应该有五个是遗漏的: 我在这里按照顺序依次给出代码,就不标名字了 <?xml ver ...

  3. 基于Android的文本语音朗读器的设计与实现(有声小说APP)

    摘 要 随着时代的发展,越来越多的信息正在产生,人们对信息的获取也越来越重视,从传统的看书到现在的网络,看视频,听广播.多年来,人们获取信息的方式发生了变化.随着人们进入信息时代和网络文学的发展,人们 ...

  4. 张利国,龚海平,王植萌.android移动开发入门与进阶,开题报告-基于Android的手机音乐播放器的设计与实现.doc...

    盐城师范学院 毕业设计开题报告 题 目: 基于android的手机音乐播放器 的设计与实现 姓 名: 二级学院: 信息工程学院 专 业: 软件工程 班 级: 12(1) 学 号: 指导教师: 职称: ...

  5. Android电子书阅读器的设计与实现

    Android电子书阅读器 包括Android客服端和jsp服务端 主要有,在线图书,本地图书,用户设置,书签管理,JSP后台,可以管理用户帐号,图书信息管理 我的QQ 609085431

  6. 基于android的在线音乐播放器app设计

    Android是Google公司公布的基于Linux内核的手机操作系统,其代码属于完全开放,为开源软件开发人员提供使用方便的框架和平台.,本文以Android开发平台为基础,介绍了音乐播放器的开发.首 ...

  7. [内附完整源码和文档] 基于Android的手机音乐播放器的设计与实现

    摘 要 随着Android系统和移动互联网的快速崛起,手机已经成为人们生活不可缺的一部分,在现代人的生活中,人们生活节奏的加快,生活压力越来越大,碎片化的时间越来越多,那么一个可以在碎片化的时间内调节 ...

  8. 基于Android的手机音乐播放器的设计与实现

    源码及论文下载:http://www.byamd.xyz/tag/android/ 摘 要 随着Android系统和移动互联网的快速崛起,手机已经成为人们生活不可缺的一部分,在现代人的生活中,人们生活 ...

  9. 基于android系统的音乐播放器,基于Android系统的音乐播放器软件设计与实现.doc

    基于Android平台的音乐播放器 The Development of Mobile Music Player Based on Android platform system 学生学号: 学生姓名 ...

最新文章

  1. C++ while 循环与 do...while 循环
  2. Proe5.0导出PDF至配置文件的相关方法,VC++
  3. MMKV集成与原理,吊打面试官系列!
  4. 交换机putty怎么调试_使用在300和500系列托管型交换机的一个控制台连接通过PuTTY访问CLI...
  5. java取整数位_java获取整数的各位数值
  6. WebSocket使用sendObject(Object arg0)向页面方法发送对象
  7. Step ‘Publish JUnit test result report’ failed: No test report files were found问题解决
  8. 计算机网络共享无访问权限,Win7局域网访问WIN7共享文件夹提示无访问权限的多种解决方法...
  9. 绘画技巧:怎样才能画好拟人化兽人?
  10. linux 中gnu的含义是,GNU是什么意思
  11. .jpeg 格式图片URL在浏览器里默认是下载
  12. 读左飞老师的《大学背景到底对你影响有多大》后感
  13. 到2020年,烟台重点林区视频监控率将达90%以上
  14. 实用计算机基础,计算机基础知识考题5[实用].pdf
  15. Axure谷歌浏览器扩展程序下载及安装方法(免翻墙)
  16. openstack搭建教程
  17. 一道积分不等式的最优估计探索
  18. 试读《Java特种兵(上册)》
  19. 《算法图解》—— 读书总结
  20. .net EF框架—增删改查—ajax删除

热门文章

  1. NOIP 提高组 2012 / 洛谷P1080 国王游戏 题解
  2. window 10 中文家庭版安装,配置,测试ISS服务器
  3. (OK) Android命令行测试BT,WIFI,Sensor工作状态 — svc
  4. 什么是域名解析?多线服务器怎么设置域名解析呢?
  5. 2020云盘点:信创云蓬勃发展,带动中国云计算市场快速增长
  6. 流媒体的几种播放方式
  7. C++ 不要忘记指针变量的初始化
  8. Vue相关软件的安装
  9. 有关宾大1900页数学书笔记的更新说明
  10. 抽拉式服务器显示器拆卸,显示器底座怎么拆卸