掌握 Android 中的菜单及导航框架。
掌握自定义布局。
掌握 Android 中的数据存储。
要求实现体育、财经、娱乐、科技等多个新闻版块(或者自定义),并可以自由通过导航菜单切换。
对每条新闻可以打开,进行阅读详细信息,包含丰富的图片和文字。
对每条新闻可以进行点赞和评论。
新闻数据: 如果动手能力较强,可以尝试自己动手用 PHP、JSP 等搭后台,利用Android 网络编程,或者通过网络爬虫,爬取相关的新闻素材。
一、设计内容
当代社会是信息大爆炸时代,随着PC互联网日趋饱和,智能手机技术的不断突破,移动互联网发生了井喷式的快速发展,各种智能终端伴随着通讯技术的进步成为新的阅读平台。其中移动新闻客户端就是其迅速发展的一种新闻阅读应用。新闻客户端在新闻呈现方式上,采用了图文并茂方式,既发挥了门户网站新闻报道方式的专长,又使新闻阅读实现了真正意义上的“随时随地,想看就看”,同时也可以对新闻进行评论、点赞、收藏和分享等操作,使人机可以进行良好的交互。本新闻客户端可以让用户注册、登录,然后登录成功后,新闻客户端可以通过网络请求,将本地PC服务器返回的json数据解析显示在用户的手机界面上,使Android用户可以更加方便、快捷的获取新闻资讯。
本新闻客户端主要的功能是向用户提供多个新闻板块的阅读、评论、收藏等。
本新闻客户端系统主要有以下几项功能:
1、新用户注册相应账号并且输入新用户名、身份证和电话号码以及密码。
2、 用户登录系统前可以通过身份证、手机号对用户的密码进行修改。
3、 用户登录相应账号并且输入对应密码才能进入客户端进行相应操作。
4、 自由通过导航菜单切换新闻模块,选择自己感兴趣的新闻以及下滑选择新闻过程中设计了置顶重阅功能。
5、点击每条新闻可以打开,进行阅读详细信息,包含丰富的图片和文字。
6、对每条新闻可以进行收藏、评论、点赞和分享。
7、用户登录系统后可以通过直接对用户的密码进行修改,然后用新密码重新登录。
根据系统功能要求,可以将系统分解成几个模块来分别设计应用程序界面,如图 1-1所示。
图1-1 新闻客户端系统功能模块图
新闻客户端系统是新闻阅读的一个组成部分。它为其它系统如新闻来源服务器端等提供新闻展示等,可以用户更加方便、快捷的获取新闻资讯。这些系统也可以使用同一个数据库或者相互调用所需的数据。
新闻客户端系统的数据流程大致如图1-2所示。
图1-2 新闻客户端系统数据流程图
根据上一节图1-2新闻客户端系统数据流程图,可以列出以下数据项、数据结构。
记录用户登录信息所需的数据项和数据结构:
用户登录表:用户名、身份证号、电话号码、密码。
下图2-1是本系统所需数据的 E-R 模型图。
图2-1 新闻客户端系统所需数据的 E-R 模型图
根据系统E-R图,需要设计1个数据表来存放用户的基本信息。这个数据表如表1所示。
表1 用户登录信息表
二、实现方法
1.1 新用户注册相应账号并且输入新用户名、身份证和电话号码以及密码
1.2 用户登录系统前可以通过身份证、手机号对用户的密码进行修改
1.3 用户登录系统进入主界面进行相应操作
1.4 通过主界面导航菜单切换不同类型新闻模块
1.5 点击新闻进行阅读详细信息且可以进行收藏、评论、点赞和分享
1.6 系统内部对用户的密码进行修改
完成数据库创建和功能说明以后,我们可以进行下一步工作,即设计用户界面。我们的系统主要有以下几个界面:
2.1 用户账号密码信息注册界面
2.2 用户账号密码登录界面
2.3 用户密码修改界面
2.4 新闻客户端主界面
2.5 热点新闻界面
2.6 生活新闻界面
2.7 科技新闻界面
2.8 娱乐新闻界面
2.9 密码修改界面
2.10 新闻客户端开屏动画界面
用户账号密码信息注册界面请见如图3-1用户账号密码信息注册界面。在这个注册界面中,需要用户输入自己专属的用户账号、身份证号码、手机号码以确保用户身份的唯一性。然后账号密码且需要与确认密码完全相同,若账号密码与确认密码不同的话会提醒用户两次密码输入不相同,请重新输入密码。同时也用if-else来判断输入的内容是否符合格式要求,比如用户身份证号码位数没有18位,即不符合当下身份证号码的数据长度,身份证的输入框会清空并且提示身份证号码格式不正确,让用户重新输入。若全部符合且正确输入,则使用MyHelper类创建的对象,然后调用execSQL去执行SQL语句创建数据库以及登录表,然后再调用结合insert-values将注册的内容写入到数据库中的登录表login。
实现用户账号密码信息注册界面判断用户注册信息正确与否的部分主要代码:
if (name.length() == 0) { Toast.makeText(this, "用户名不能为空!", Toast.LENGTH_LONG).show(); break; } else { if (idcard.length() == 0) { Toast.makeText(this, "身份证号码不能为空!", Toast.LENGTH_LONG).show(); break; } else { if(idcard.length()!=18){ Toast.makeText(this, "身份证号码格式不正确!",Toast.LENGTH_LONG).show(); mEtidcard.setText(""); break; } else{ if (phone.length() == 0) { Toast.makeText(this, "手机号码不能为空!", Toast.LENGTH_LONG).show(); break; } else { if(phone.length() != 11){ Toast.makeText(this, "手机号码格式不正确!", Toast.LENGTH_LONG).show(); mEtphone.setText(""); break; }else{ if (psd.length() == 0) { Toast.makeText(this, "密码不能为空!", Toast.LENGTH_LONG).show(); break; } else { if (psdag.length() == 0) { Toast.makeText(this, "确认密码不能为空!", Toast.LENGTH_LONG).show(); break; } else { if (psdag.equals(psd)) { xrr = myHelper.getReadableDatabase(); Cursor cursor = xrr.rawQuery("select * from login where idcard=? ", new String[]{idcard}); if (cursor.getCount() != 0) { Toast.makeText(this, "该用户已经存在,不能重新注册!", Toast.LENGTH_LONG).show(); mEtusername.setText(""); mEtidcard.setText(""); mEtphone.setText(""); mEtpsw.setText(""); mEtpswagain.setText(""); break; } else { values.put("userid", name); values.put("idcard", idcard); values.put("phone", phone); values.put("password", psd); long id = xr.insert("login", null, values); Toast.makeText(this, "注册成功,请重新登录系统", Toast.LENGTH_LONG).show(); xr.close(); Intent intent = new Intent(this, MainActivity.class); startActivity(intent); } } else { Toast.makeText(this, "两次密码输入不相同,请重新输入!", Toast.LENGTH_LONG).show(); mEtpsw.setText(""); mEtpswagain.setText(""); break; } } } } }}}}
图3-1用户账号密码信息注册界面
用户账号密码登录界面请见如图3-2用户账号密码登录界面。在这个登录界面中,需要用户输入之前已经注册过的用户名和用户密码。然后通过使用MyHelper类创建的对象,然后调用rawQuery去执行SQL语句进行查询登录表login中的数据,最后若数据库中登录表的用户密码与注册密码不同的话会清空输入框让用户重新输入账号和密码,若匹配相同,则进入系统主界面。
实现用户账号密码登录界面判断用户输入账号密码是否匹配的部分主要代码:
username = mEtuser.getText().toString(); password = mEtpsw.getText().toString(); xr = myHelper.getReadableDatabase(); Cursor cursor = xr.rawQuery("select * from login where userid=? and password=?",new String[]{username,password}); if(cursor.getCount()==0){ Toast.makeText(this,"账户或者密码错误,请重新输入!",Toast.LENGTH_LONG).show(); mEtuser.setText(""); mEtpsw.setText(""); }else{ Toast.makeText(this,"登录成功,欢迎您使用易闻",Toast.LENGTH_LONG).show(); cursor.close(); xr.close(); Intent intent = new Intent(this,zhujiemian.class); intent.putExtra("names",mEtuser.getText().toString().trim()); startActivity(intent); }
图3-2用户账号密码登录界面
新闻客户端主界面请见如图3-4(1)新闻客户端主界面,且包含图3-4(2)新闻置顶重阅、图3-4(3)新闻详读。在这个新闻客户端主界面中,用户首先可以直接点击详细阅读新闻,同时也可以通过导航菜单进行切换不同版块的新闻进行浏览阅读且可评论、点赞及转发、收藏和分享,同时在浏览新闻的过程中也可以点击Toolbar置顶进行重阅,还可以进行用户系统内部密码修改和退出系统回到用户账号登录界面,在实现新闻阅读采用的是Tomcat搭建好PC服务器,然后通过解析JSON文件进行新闻内容显示。
实现新闻客户端主界面导航菜单切换新闻模块的部分主要代码:
public boolean onNavigationItemSelected(MenuItem item) { // Handle navigation view item clicks here. int id = item.getItemId(); if (id == R.id.hot_news) { //热点新闻 initView(); fillData(1); System.out.println("截至点a"); } else if (id == R.id.life_news) { //生活新闻 initView(); fillData(2); System.out.println("截至点b"); } else if (id == R.id.scince_news) { //科技新闻 initView(); fillData(3); System.out.println("截至点c"); } else if (id == R.id.happy_news) { //娱乐新闻 initView(); fillData(4); System.out.println("截至点d"); } else if (id == R.id.modify_p) { Intent intent1 = new Intent(this,ModifypersonActivity.class); intent1.putExtra("names",username); startActivity(intent1); System.out.println("截至点e"); } else if (id == R.id.back_m) { Intent intent = new Intent(this,MainActivity.class); startActivity(intent); System.out.println("截至点f"); }
图3-4(1)新闻客户端主界面
图3-4(2)新闻置顶重阅
图3-4(3)新闻详读
以上只是简单新闻客户端APP部分设计内容和源代码资源,如果想要简单新闻客户端APP全部资源请点击下面资源链接进行下载,希望能帮助到你!
独家资源:点击资源下载链接
1、安装Android Studio的最新最简最详细安装教程
2、RelativeLayout布局实验(Android Studio)
3、android studio中出现com.google.gson.JsonSyntaxException: com.google.gson.stream.类似错误的一种解决方案
4、在手机上app中链接或者浏览器上访问电脑上Tomcat搭建的服务器以及其内容
5、Android studio开发APP时设置更改启动时的主界面程序