首先第一步,一个点餐app,最先进入的就是打开时候的封面跳转界面了,因此,我们先来设计这个跳转界面:JumpActivity,
我们先设计好与之相对的xml,然后去JumpActivity里写逻辑,一些控件初始化等等就不讲了,但这里有一个双线程的操作,既要经过一定的时间,页面会自动跳转,也要具备,点击"跳过按钮",页面会手动跳转,这里需要用到Handler,先初始化一个Handler,然后初始化Runnable在run()方法中进行跳转到LoginActivity,也需要在Oncreate()方法中设置postDelayed()方法,制定延迟时间,同时也需要设置button的点击事件,进行跳转操作,跳转之前可以先

Handler.removeCallbacks(Runnable);

来取消postDelayed的方法里面的runnable,还有一个很重要的就是AndroidManifest.xml中将主Activity进行修改,换成JumpActivity。

下一步,我们就进入LoginActivity了,第一步肯定也是XML的Preview设计,不多说,来个RelativeLayout,整个4行,分别是:请输入账户,请输入密码,确定,注册。之后就是到LoginAtivity中,首先先控件初始化,然后需要设置点击事件,setOnClickListener,在点击事件前,也需要initIntent() ,获取账户密码,之后需要设置登录按钮的点击事件,先获取输入的字符串:

String username = mEtUsername.getText().toString();
String password = mEtPassword.getText().toString();

再设置判断,避免为null,再调用一个网络数据获取的类,其中传入参数:账户,密码,callback,在成功和失败的方法中写上需要的操作,同时,注册的话,设置跳转操作,到RegisterActivity,在注册操作和登录类似,

mBtnRegister.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {final String username = mEtUsername.getText().toString();String password = mEtPassword.getText().toString();String repassword = mEtRePassword.getText().toString();if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password)) {T.showToast("账号或者密码不能为空");return;}if (!password.equals(repassword)) {T.showToast("两次输入密码不一致");return;}startLoadingProgress();mUserBiz.register(username, password, new CommonCallback<User>() {@Overridepublic void onError(Exception e) {T.showToast(e.getMessage());Log.d("ee", e.getMessage());stopLoadingProgress();}@Overridepublic void onSuccess(User user) {stopLoadingProgress();T.showToast("注册成功,用户名为:" + user.getUsername());LoginActivity.launch(RegisterActivity.this,user.getUsername(), user.getPassword());finish();}});

之后便设置点餐的个人详情页面OrderActivity,设置自己需要的点餐主界面,带有自己头像和名字,已经点过的记录,可点击每条记录,进行页面跳转,可以查看具体的点餐信息(这个界面之后再说),这么界面下面的点击记录就需要用到recyclerview,设置item,也需要设置需要的item.xml,同时你需要设置上滑和下滑的功能,设置加载监听,

//设置开关mRefreshLayout.setMode(SwipeRefresh.Mode.BOTH);//设置颜色mRefreshLayout.setColorSchemeColors(Color.RED, Color.BLACK, Color.BLUE, Color.GRAY);mRefreshLayout.setOnRefreshListener(new SwipeRefresh.OnRefreshListener() {@Overridepublic void onRefresh() {loadData();}});mRefreshLayout.setOnPullUpRefreshListener(new SwipeRefreshLayout.OnPullUpRefreshListener() {@Overridepublic void onPullUpRefresh() {loadMore();}});

一个是上拉刷新数据,另一个是下拉刷新更多记录,

private void loadMore() {mOrderBiz.listByPage(++mCurrentPage, new CommonCallback<List<Order>>() {@Overridepublic void onError(Exception e) {stopLoadingProgress();T.showToast(e.getMessage());mRefreshLayout.setPullUpRefreshing(false);mCurrentPage--;String message = e.getMessage();if (message.contains("用户未登录")) {toLoginActivity();}}@Overridepublic void onSuccess(List<Order> response) {stopLoadingProgress();if (response.size() == 0) {T.showToast("木有历史订单啦~~~");mRefreshLayout.setPullUpRefreshing(false);return;}T.showToast("更新订单成功~~~");mDatas.addAll(response);mAdapter.notifyDataSetChanged();mRefreshLayout.setPullUpRefreshing(false);}});}private void loadData() {mOrderBiz.listByPage(0, new CommonCallback<List<Order>>() {@Overridepublic void onError(Exception e) {stopLoadingProgress();T.showToast(e.getMessage());if (mRefreshLayout.isRefreshing()) {mRefreshLayout.setRefreshing(false);}if (e.getMessage().contains("用户未登录")) {toLoginActivity();}}@Overridepublic void onSuccess(List<Order> response) {stopLoadingProgress();T.showToast("更新订单成功~~~");mDatas.clear();mDatas.addAll(response);mAdapter.notifyDataSetChanged();if (mRefreshLayout.isRefreshing()) {mRefreshLayout.setRefreshing(false);}}});}

其中CommonCallback<List>()是点餐列表的回调数据,分别写了成功和失败的效果,其次便是recyclerview设置适配器,和加载图片

 mAdapter = new OrderAdapter(this, mDatas);mRecyclerView.setLayoutManager(new LinearLayoutManager(this));mRecyclerView.setAdapter(mAdapter);Picasso.with(this).load(R.drawable.icon).placeholder(R.drawable.pictures_no).transform(new CircleTransform()).into(mIvIcon);

有一个挺好的方法就是onKeyDown可以每次关闭app,再次打开,不用重新输入密码,会自动跳到这个activity

 @Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK) {Intent home = new Intent(Intent.ACTION_MAIN);home.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);home.addCategory(Intent.CATEGORY_HOME);startActivity(home);return true;}return super.onKeyDown(keyCode, event);}

之后可以设置下,刚刚上面提到的查看点餐记录细节的activity:OrderdetailActivity,在这里,你只需要图片的加载,文本和一些数据的打印就行。
再者,你需要进入到点餐的界面ProductListActivity,通常是一个toolbar返回,加上recyclerview,最下面是结账的一个LInearLayout,通常是一半显示数量,一半显示支付和价钱。而activity里面的方法和Orderdetailacitvity类似,并且具体的ProductDeatilActivity也是和点餐主界面的Detail界面类似,这些经过修改可以套用,我认为最大的区别以及最重要的是数据直接的传递回调和复用等等,接下来就讲讲Order和Product的界面的数据之间的关系。
其中CommonCallback是自己写的一个回调接口,用于数据的回调,接收,数据的转化。
Order是用来存放一些方法,get(),set()和一些获取数据的方法,OerderBiz是Okhttp的网络操作,把对应URl地址上的json数据获取到某些数列集合里,就是前面Order创建的容器。而OrderAdapter的recyclerview适配器,用来把Order里的数据填充进item里,而OerderDetailActivity和OrderActivity则是把数据显示出来。同理,Product,ProductBiz和ProductListActivity和ProductDetailActivity也同样如此。

点餐app的初步总结相关推荐

  1. 开题报告-基于Android的外卖点餐APP的设计与实现

    目录 1.课题研究立项依据 2.文献综述 3.课题研究的基本内容及预期目标或成果 4.课题的研究方案 5.研究进度安排 6.主要参考文献 1.课题研究立项依据 (内容格式要求:字体为5号宋体,行距为固 ...

  2. 【行业】点餐App未来必须面对的三大难题

    打车软件火了之后,点餐App又成为网民生活中另外一个焦点. 与当初打车软件间的你争我夺相比,本轮以外卖平台为主要战场.以补贴为主要形式的的点餐App大战可谓惨烈,让人瞠目结舌.以饿了么的补贴和美团的补 ...

  3. 【附源码】Java计算机毕业设计安卓高速铁路配餐app论文(程序+LW+部署)

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  4. 计算机毕设之 餐厅点餐app

    1 简介 今天向大家介绍一个帮助往届学生完成的毕业设计项目,餐厅点餐app. 计算机毕业生设计,课程设计需要帮助的可以找我 2 设计概要 21世纪是信息化时代,随着信息技术和网络技术的发展,信息化已经 ...

  5. node.js毕业设计安卓基于Android的手机点餐App系统(程序+APP+LW)

    该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程.欢迎交流 项目运行 环境配置: Node.js+ Vscode + Mysql5.7 + HBuilderX+Navicat11+Vue ...

  6. Android期末项目:美食点餐APP的设计与实现

    目录 1 项目基本信息 1.1 项目名称 1.2 开发运行环境 1.3 使用的核心类及组件 2 项目需求分析 2.1 APP管理员 2.2 APP用户 3 项目开发过程 3.1 APP功能模块 3.2 ...

  7. java计算机毕业设计基于安卓Android的校园外卖点餐APP

    项目介绍 餐饮行业是一个传统的行业.根据当前发展现状,网络信息时代的全面普及,餐饮行业也在发生着变化,单就点餐这一方面,利用手机点单正在逐步进入人们的生活.传统的点餐方式,不仅会耗费大量的人力.时间, ...

  8. android avm灰色,APICloud AVM多端开发案例深度解析(上)--点餐app开发

    AVM多端开发是APICloud定义的一套新的代码编写标准(DSL):基于标准Web Components组件化思想,兼容Vue / React语法特性,通过一次编码,分别编译为Android和iOS ...

  9. 扫码点餐系统源码 外卖点餐小程序源码 点餐APP全套源码

    1. 开发语言:JAVA 2. 数据库:MySQL 3. 原生小程序 4. Sass 模式 5. 带调试视频 门店独立管理后台,可打包微信小程序,H5,APP,LBS定位附近门店,可导航前往下单,订单 ...

  10. 基于android的安卓订餐多商家点餐app

    本系统是基于Android平台开发,在用户的移动手持设备在接入网络的情况下,用户可以实时查询餐厅的位置,并方便的完成点餐及订餐的操作.使用本系统,在就餐高峰期可以提前预约座位并完成点餐,省去了到餐厅后 ...

最新文章

  1. 常年霸榜 Amazon 数据结构与算法领域 TOP3
  2. Python任意网段Web端口信息探测工具
  3. python基础——logging、OS、sys、random、string模块(0424)
  4. 【职场】如何才能成功的创业,创业成功的本质是什么
  5. vaadin 10+_Vaadin 10+作为CUBA UI的未来
  6. Notes of the scrum meeting(2013/10/23)
  7. 数据结构链表之单向链表:Python3 实现单向链表——1
  8. iOS UIWebView打电话
  9. 一个简单demo通过em实现‘响应式设计、em、文字图标svg’
  10. JAVA调用NuSoap服务
  11. 在ListView中使用DropDownList绑定数据……好麻烦
  12. self = [super init]的解释
  13. 苹果Mac 桌面下方Dock 的App icon名称出现乱码怎么办?一个简单指令帮你解决
  14. python数据库操作——NoSQL数据库之连接MongoDB、Redis数据库
  15. mybatis中关联关系,一对多,一对一,多对多,数据库建立方式,怎么体现这种逻辑关系,嵌套查询,嵌套结果查询,包含测试
  16. 《软件工程》— 实用软件工程——习题答案
  17. PS学习笔记9-渐变工具
  18. git add 后git reset --hard xxx的代码丢失,代码如何找回
  19. IP被封检测和端口被封检测方法分享
  20. The NPF driver isn't running. You may have trouble capturing or listing interfaces

热门文章

  1. php composer.phar install,解决composer.phar安装问题
  2. VUCA时代:软件架构解决复杂性之道
  3. C51连接远程服务器
  4. CSS 网页定位与布局
  5. ntp的同步方式slew step的区别
  6. 【LOJ 10064】黑暗城堡
  7. vue 自动打开浏览器
  8. 新生代公链再攻「不可能三角」
  9. 苹果app退款_苹果 App Store 已购买的应用如何申请退款?
  10. 【Python】import class/import module