寒假在慕课网(www.imooc.com)买了一门安卓实战课,老师是“刘某人”,讲的比较基础,但很适合Android新手,表示对基础能力提升还是很有帮助的。假期因为一些原因,加上自己的懒惰,花了差不多一个寒假才学完,明天我的大二下学期就开始正式上课了,想想还有点激动呢,哈哈。自己也要认识到,大二啦!专科生的我马上就要实习啦,马上就要成为大三老学长了,╮(╯▽╰)╭ 。。。。。。

废话不多说,既然学完了,是时候做个总结的时候了,这160块钱的课可不能白花。就从功能实现的角度进行总结吧。

先来看下项目的文件结构:

分别是adapter application entity fragment reciverservice ui utils view,还有一个独立出来的MainActivity。MainActivity就是软件的主界面,adapter里面各种自定义适配器,application里BaseApplication负责整个软件的管理,entity里存储各种实体类,fragment里是装在ViewPager里的四个Fragment,reciver里是自定义广播接收器,service里短信服务,ui存储软件中的很多界面逻辑,utils是项目的工具文件夹,view里自定义布局。此外,项目中还用到一个开源的二维码库。

  1. 软件主体框架

    TabLayout + ViewPager + Fragment

    关键就是下面的代码了

    //给ViewPage设置Adapter
    mViewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {@Overridepublic Fragment getItem(int position) {return mFragments.get(position); //返回需要的对应的Fragment}@Overridepublic int getCount() {return mFragments.size();//返回Fragment的数量,也就是ViewPager的数量}@Overridepublic CharSequence getPageTitle(int position) {return mTitles.get(position);//返回ViewPager的标题}
    });
    mTablayout.setupWithViewPager(mViewPager);//设置Tablayout的点击与ViewPager同步
    

    就是这么简单,就实现了很常见的软件界面。之前还用过很多方法实现类似界面,实现的具体细节早就忘了,看来不总结还是不行的啊,有机会还得再回过头查查。

  2. 登录与注册

    登录模块使用的是BMOB后端云服务器,很强大的服务器,配置也很简单,只需使用固定的代码将用户名和密码传送给服务器,服务器返回数据进行判断即可。注册也是类似。

    private void login() {String name = et_name.getText().toString().trim();//用户名String password = et_pass.getText().toString().trim();//密码if (!TextUtils.isEmpty(name) && !TextUtils.isEmpty(password)) {dialog.show();user = new BmobUser();user.setUsername(name);user.setPassword(password);user.login(new SaveListener<MyUser>() {@Overridepublic void done(MyUser myUser, BmobException e) {dialog.dismiss();if (e == null) {//账号密码正确if (!user.getEmailVerified()) {//账号存在但未在邮箱进行验证Toast.makeText(LoginActivity.this, "请前往邮箱验证", Toast.LENGTH_LONG).show();} else {startActivity(new Intent(LoginActivity.this, MainActivity.class));finish();}} else {Toast.makeText(LoginActivity.this, "登录失败:" + e, Toast.LENGTH_LONG).show();}}});} else {Toast.makeText(this, "输入框不能为空", Toast.LENGTH_LONG).show();}
    }
    注册
    if (!TextUtils.isEmpty(name) && !TextUtils.isEmpty(pass) && !TextUtils.isEmpty(password) && !TextUtils.isEmpty(email)&& !TextUtils.isEmpty(age)) {if (pass.equals(password)) {MyUser user = new MyUser();user.setUsername(name);user.setSex(isGender);user.setAge(Integer.parseInt(age));if (!TextUtils.isEmpty(desc)) {user.setIntroduce(desc);} else {user.setIntroduce("这个人很懒,什么都没有留下!");}user.setPassword(password);user.setEmail(email);user.signUp(new SaveListener<MyUser>() {@Overridepublic void done(MyUser myUser, BmobException e) {if (e == null) {finish();L.i("userid:" + myUser.getObjectId());Toast.makeText(RegisteredActivity.this, "注册成功,请前往邮箱验证", Toast.LENGTH_LONG).show();} else {Toast.makeText(RegisteredActivity.this, "注册失败:" + e, Toast.LENGTH_LONG).show();}}});} else {Toast.makeText(this, "两次输入不相同", Toast.LENGTH_LONG).show();}
    } else {Toast.makeText(this, "输入框不能为空", Toast.LENGTH_LONG).show();
    }
    

    Bmob的使用真的如此简单,简单到不能再简单。

  3. 自定义Dialog

    public class CustomDialog extends Dialog {/*** 标准** @param context 上下文* @param layout  布局* @param style   主题*/public CustomDialog(Context context, int layout, int style) {this(context, WindowManager.LayoutParams.MATCH_PARENT,WindowManager.LayoutParams.WRAP_CONTENT, layout, style,Gravity.CENTER);}/*** 有动画** @param context 上下文* @param width   宽* @param height  高* @param layout  布局* @param style   主题* @param gravity 方位* @param anim    动画*/public CustomDialog(Context context, int width, int height, int layout,int style, int gravity, int anim) {super(context, style);setContentView(layout);Window window = getWindow();WindowManager.LayoutParams params = window.getAttributes();params.width = WindowManager.LayoutParams.MATCH_PARENT;params.height = WindowManager.LayoutParams.WRAP_CONTENT;params.gravity = gravity;window.setAttributes(params);window.setWindowAnimations(anim);}/*** 无动画** @param context 上下文* @param width   宽* @param height  高* @param layout  布局* @param style   主题* @param gravity 方位*/public CustomDialog(Context context, int width, int height, int layout,int style, int gravity) {this(context, width, height, layout, style, gravity,R.style.pop_anim_style);}
    }
    

    然后在代码中dialog.setCancelable(BOOLEAN)里使用true/false控制dialog的显示和隐藏 。

    软件github下载地址:https://github.com/SunnyGZY/SmartButler

智能管家项目总结(1)相关推荐

  1. 干货速递—吐血整理的20个物联网云智能开源项目,个个都是精品!【速来白嫖】

    转载请注明文章出处: https://blog.csdn.net/weixin_44985880/article/details/107874561 Hello!大家好,我是灰小猿,一个最会写bug的 ...

  2. arduino项目_quot;Arduino智能车项目quot;实战班开班!

    想自己设计一辆智能车吗?爱捷青少年创客编程中心针对老学员推出了特惠课程--"Arduino智能车"项目实战班.整个课程围绕智能车的控制方式,涉及直流电机控制.红外遥控.超声测距.显 ...

  3. 智能家居 (8) ——智能家居项目整合(网络控制线程、语音控制线程,火灾报警线程)

    目录 mainPro.c(主函数) 指令工厂 inputCommand.h voiceControl.c(语音控制) socketControl.c(网络线程) 控制工厂 contrlEquipmen ...

  4. 全球最大的LoRaWAN智能路灯项目刚刚启动

    NNNCo 与技术提供商 Wellness TechGroup 合作推出 LoRaWAN无线网关模块在世界上最大的物联网应用智能街道照明项目之一. 该项目将覆盖200平方公里,为超过130万人提供物联 ...

  5. arduino代码_arduino智能小车项目——01、配件介绍及代码部分教程

    各位小伙伴大家好: 本期我们开始制作智能小车项目,这因该是资源包里面难度相对较大的项目. 所以我们从易到难把项目进行分解,先从实现较为简单的功能开始. 本期我们的目标是实现小车的自主运动,代码部分也相 ...

  6. 深度ip转换器手机版app_手机大师智能管家app下载-手机大师智能管家app官网版 v1.0.0...

    手机大师智能管家app:针对各种手机垃圾快速在线清除的软件,利用这款软件可以快速的清除各种不同的手机垃圾,而且还可以一键在线加速,更好的享受手机加速带来的便捷,同时针对各种文件清理也更加的简单,让你更 ...

  7. 物联网智能家居项目---智能卧室

    智能卧室 介绍 设计需求 功能介绍 准备 软件准备 硬件准备 项目制作 库文件调用和变量定义 超声波测距函数 初始化 变量赋值和LCD显示屏显示温湿度 功能实现 后续 介绍 设计需求 为了提高用户生活 ...

  8. android 智能家居 pdf,智能家居项目化教程.pdf

    作 者 :曾文波,伦硕波,黄日胜,钟建坤编著 出版发行 : 北京:中国水利水电出版社 , 2019.03 ISBN号 :978-7-5170-6858-7 页 数 : 151 原书定价 : 27.00 ...

  9. 钢铁侠要为Facebook的智能管家配音,really?

    此智能管家即将在本月公布,到时一见分晓. 每一年,Facebook的CEO扎克伯格都会为自己定一个年度目标,在今年1月份,扎克伯格就曾表示,计划在2016年打造一个类似于"钢铁侠" ...

  10. 10天基于STM32F401RET6智能锁项目实战第1天(环境搭建和新建工程)

    10天基于STM32F401RET6智能锁项目实战第1天(环境搭建和新建工程) 一.环境搭建 二.新建工程 一.环境搭建 1.安装keil5 2.安装支持包 这里按照需求安装支持包,有F4和F1的支持 ...

最新文章

  1. STM32 USART串口DMA 接收和发送的源码详解!
  2. sql limit 子句_Java 8流中的常见SQL子句及其等效项
  3. 腾讯状告前工程师开发游戏抄袭《王者荣耀》,赔偿 1940 万元!
  4. python和java哪个好学-学Python 好还是java 好?
  5. mysql innodb 多核cpu_没有改变,但MySQL InnoDB超载CPU
  6. Daily Scrum 11/06
  7. Java学习笔记【2】:抛出异常
  8. 【Excel】数据的排序、筛选和分类汇总
  9. 央行最新公布2019支付牌照持牌机构公司列表,共255家(附清单)
  10. html姓名签到,方案二-签到搜索界面-姓名.html
  11. android 检测是否模拟器,Android全面检测设备是否模拟器
  12. Android app包下fragment详细使用
  13. 今生,让我们记住盖茨!
  14. python画名字廖华兴_python第二周基本图形绘制
  15. 什么是UN38.3认证_UN38.3测试标准
  16. 华为奔赴“空间智能”,全屋智能的逻辑变了吗?
  17. 博士申请 | ​悉尼科技大学澳大利亚人工智能研究院招收联邦学习全奖博士生...
  18. staruml 4.0下载安装
  19. [创业-19]:财务报表 - 所有者权益之实收资本
  20. 交付dubbo服务到k8s

热门文章

  1. SSD、eMMC、UFS的区别
  2. marked转换html失败,解析markdown之marked
  3. 中文编程从入门到精通中文编程语言教学视频
  4. java解压缩/压缩/加密压缩/加密解压缩 ZIP4J ZIP文件压缩与解压缩学习
  5. 使用 TestFlight 进行 iOS App 内测
  6. 程序猿生存指南-7 相亲之路(下)
  7. 我只想保持本色,和少年的心气。
  8. 浙大计算机就业方向,浙大四大 王牌专业,毕业后工作待遇高,发展前景非常广阔...
  9. php海外话费充值游戏币,海外(国外)充值话费方法
  10. 操作系统进程进行系统调用详细过程