Android 课程设计

Android开发使用软件(RecyclerView+ListView+SQLite)

一个实用的健康管理软件,可以查询各种食物的热量,每天健身打卡,发表动态,可以点击图片链接进入淘宝首页,在个人中心可以修改收货地址,添加购物车,记录健康资料、每日饮食(收货地址和购物车仅关联此软件)

实现的功能

  1. 用户登录 ,进入首页自动跳转至登录页面;
  2. 登录成功,进入首页 查询各种食物的热量
  3. 健康打卡页面 ,可以进行每日健身打卡,自定义添加打卡项目
  4. 发布动态页面 ,可以添加图片(此处功能还需完善);
  5. 商店页面 ,点击图片链接进入淘宝首页
  6. 个人中心 ,查看、修改购物车、收货地址、健康资料,记录每日饮食

使用框架

1.使用第三方图像框架 Fresco 图片圆形设置(头像)

1.添加依赖

dependencies {compile 'com.facebook.fresco:fresco:0.14.1'
}

2.初始化

public class MyApplication extends Application{@Overridepublic void onCreate() {super.onCreate();Fresco.initialize(this);}
}

3.修改 manifest

android:name=".MyApplication"

4.添加网络权限

<uses-permission android:name="android.permission.INTERNET"/>

5.文件布局

xmlns:fresco="http://schemas.android.com/apk/res-auto"

使用

<com.facebook.drawee.view.SimpleDraweeViewandroid:id="@+id/headimg"android:layout_width="50dp"android:layout_height="50dp"android:layout_marginTop="160dp"app:layout_constraintStart_toStartOf="@+id/textView6"app:layout_constraintTop_toTopOf="@+id/imageView6"app:srcCompat="@drawable/headimg"android:background="@drawable/headimg"fresco:roundAsCircle="true"fresco:roundedCornerRadius="20dp" />

6.使用

SimpleDraweeView draweeView = (SimpleDraweeView) findViewById(R.id.headimg);Uri uri = Uri.parse("headimg.jpg");draweeView.setImageURI(uri);

1.使用第三方框架banner 图片轮播效果
1.依赖

//轮播依赖implementation'com.youth.banner:banner:1.4.10'
//Glide框架implementation "com.github.bumptech.glide:glide:4.6.1"

2.添加权限到 AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET" /> //网络权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> //读取SD卡

3.在布局文件中添加Banner

<com.youth.banner.Bannerandroid:id="@+id/banner"android:layout_width="match_parent"android:layout_height="100dp"android:layout_marginTop="50dp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/imageButton" />

4.实现

protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_shop);initView();
}
public void initView() {mBanner = findViewById(R.id.mBanner);//图片资源int[] imageResourceID = new int[]{R.mipmap.i1, R.mipmap.i2, R.mipmap.i3, R.mipmap.i4,R.mipmap.i5, R.mipmap.i6};List<Integer> imgeList = new ArrayList<>();//轮播标题String[] mtitle = new String[]{"图片1", "图片2", "图片3", "图片4","图片5","图片6"};List<String> titleList = new ArrayList<>();for (int i = 0; i < imageResourceID.length; i++) {imgeList.add(imageResourceID[i]);//图片资源循环titleList.add(mtitle[i]);//标题循环设置//设置图片加载器,通过Glide加载图片mBanner.setImageLoader(new ImageLoader() {@Overridepublic void displayImage(Context context, Object path, ImageView imageView) {Glide.with(ShopActivity.this).load(path).into(imageView);}});//轮播的动画效果mBanner.setBannerAnimation(Transformer.Accordion);mBanner.setImages(imgeList);//设置图片资源mBanner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE);//设置banner显示样式(带标题的样式)mBanner.setBannerTitles(titleList); //设置标题集合(当banner样式有显示title时)//设置指示器位置mBanner.setIndicatorGravity(BannerConfig.CENTER);mBanner.setDelayTime(1000);//设置轮播时间3秒切换下一图mBanner.setOnBannerListener(this);//设置监听mBanner.start();//开始进行banner渲染}}@Overrideprotected void onStart() {super.onStart();mBanner.startAutoPlay();//开始轮播}@Overrideprotected void onStop() {super.onStop();mBanner.stopAutoPlay();//结束轮播}//对轮播图设置点击监听事件@Overridepublic void OnBannerClick(int position) {Toast.makeText(this, "你点击了第" + (position + 1) + "张轮播图", Toast.LENGTH_SHORT).show();}

UI设计

1.带有弹出收缩动画的扇形菜单

插入链接与图片

参考博客
链接: Android菜单动画扇形收缩.


1.布局文件

<Buttonandroid:id="@+id/button9"android:layout_width="60dp"android:layout_height="60dp"android:layout_gravity="bottom|end"android:layout_marginBottom="40dp"android:layout_marginRight="40dp"android:gravity="center"android:text="照片"android:textColor="#000000"android:visibility="gone"android:background="@drawable/circle_green"/><Buttonandroid:id="@+id/button10"android:layout_width="60dp"android:layout_height="60dp"android:layout_gravity="bottom|end"android:layout_marginBottom="40dp"android:layout_marginRight="40dp"android:gravity="center"android:text="标签"android:textColor="#000000"android:visibility="gone"android:background="@drawable/circle_green"/><ImageViewandroid:id="@+id/img_publish"android:layout_width="60dp"android:layout_height="60dp"android:layout_gravity="bottom|end"android:layout_marginEnd="20dp"android:layout_marginRight="20dp"android:layout_marginBottom="20dp"android:src="@drawable/cd2_2"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent" />

2.Activity

@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_show);imgPublish = (ImageView) findViewById(R.id.img_publish);imgPublish.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.img_publish:if (!isMenuOpen) {showOpenAnim(80);imgPublish.setImageResource(R.mipmap.cd2_2);}else {showCloseAnim(80);imgPublish.setImageResource(R.mipmap.cd2_2);}break;}}//打开扇形菜单的属性动画, dp为半径长度private void showOpenAnim(int dp) {button9.setVisibility(View.VISIBLE);button10.setVisibility(View.VISIBLE);//for循环来开始小图标的出现动画for (int i = 0; i < buttons.size(); i++) {AnimatorSet set = new AnimatorSet();//标题1与x轴负方向角度为20°,标题2为100°,转换为弧度double a = -Math.cos(20 * Math.PI / 180 * (i * 2 + 1));double b = -Math.sin(20 * Math.PI / 180 * (i * 2 + 1));double x = a * dip2px(dp);double y = b * dip2px(dp);set.playTogether(ObjectAnimator.ofFloat(buttons.get(i), "translationX", (float) (x * 0.25), (float) x),ObjectAnimator.ofFloat(buttons.get(i), "translationY", (float) (y * 0.25), (float) y), ObjectAnimator.ofFloat(buttons.get(i), "alpha", 0, 1).setDuration(2000));set.setInterpolator(new BounceInterpolator());set.setDuration(500).setStartDelay(100);set.start();set.addListener(new Animator.AnimatorListener() {@Overridepublic void onAnimationStart(Animator animation) {}@Overridepublic void onAnimationEnd(Animator animation) {//菜单状态置打开isMenuOpen = true;}@Overridepublic void onAnimationCancel(Animator animation) {}@Overridepublic void onAnimationRepeat(Animator animation) {}});}//转动加号大图标本身45°ObjectAnimator rotate = ObjectAnimator.ofFloat(imgPublish, "rotation", 0, 90).setDuration(300);rotate.setInterpolator(new BounceInterpolator());rotate.start();}//关闭扇形菜单的属性动画,参数与打开时相反private void showCloseAnim(int dp) {//for循环来开始小图标的出现动画for (int i = 0; i < buttons.size(); i++) {AnimatorSet set = new AnimatorSet();double a = -Math.cos(20 * Math.PI / 180 * (i * 2 + 1));double b = -Math.sin(20 * Math.PI / 180 * (i * 2 + 1));double x = a * dip2px(dp);double y = b * dip2px(dp);set.playTogether(ObjectAnimator.ofFloat(buttons.get(i), "translationX", (float) x, (float) (x * 0.25)),ObjectAnimator.ofFloat(buttons.get(i), "translationY", (float) y, (float) (y * 0.25)),ObjectAnimator.ofFloat(buttons.get(i), "alpha", 1, 0).setDuration(2000));
//      set.setInterpolator(new AccelerateInterpolator());set.setDuration(500);set.start();set.addListener(new Animator.AnimatorListener() {@Overridepublic void onAnimationStart(Animator animation) {}@Overridepublic void onAnimationEnd(Animator animation) {button9.setVisibility(View.GONE);button10.setVisibility(View.GONE);//菜单状态置关闭isMenuOpen = false;}@Overridepublic void onAnimationCancel(Animator animation) {}@Overridepublic void onAnimationRepeat(Animator animation) {}});}//转动加号大图标本身45°ObjectAnimator rotate = ObjectAnimator.ofFloat(imgPublish, "rotation", 0, 90).setDuration(300);rotate.setInterpolator(new BounceInterpolator());rotate.start();}private int dip2px(int value) {float density = getResources().getDisplayMetrics().density;return (int) (density * value + 0.5f);}

演示

  • 点击进入
    自动跳转
//android实现欢迎界面的自动跳转,就是打开某一个安卓手机应用,出现的欢迎界面停留几秒钟,自动进入应用程序的主界面。//在onCreate里设置个Timer,然后建立Intent指向你要调用Activity。设置Timer 10妙后执行startActivity就行了。final Intent it = new Intent(this, Login2Activity.class); //你要转向的ActivityTimer timer = new Timer();TimerTask task = new TimerTask() {@Overridepublic void run() {startActivity(it); //执行}};timer.schedule(task, 1000 * 5); //5秒后
  • 首页
    Activity跳转传值,获取登录时输入的用户名
    -RecyclerView显示食物列表
    查询
  1. 连接数据库
  2. 弹出提示框显示
  • 首页
    -RecyclerView显示打卡记录
    1.添加打卡
    2.勾选checkbox进行打卡,弹出提示

  • 发布动态页面
    -EditText输入
    1.调用图库插入图片
    2.插入标签

  • 商店页面
    WebView,第三方框架banner 图片轮播效果(未显示)
    1.点击图片链接进入淘宝首页

  • 个人中心
    RecyclerView显示动态,三种类型Dialog应用
    1.复选框显示购物车
    2.半自定义记录每日饮食
    3.查看健康记录
    4.单选框设置收货地址



改进
1.EditText图文混排依然存在问题,可以调用图库但图片不能显示

Android课程设计(健康管理软件开发)相关推荐

  1. c语言课设宿舍管理程序,C语言程序课程设计宿舍管理软件.doc

    C语言程序课程设计宿舍管理软件.doc 课程设计(论文) 题 目 名 称 宿舍管理软件 课 程 名 称 C语言程序课程设计 学 生 姓 名 学 号 系 .专 业 信息工程系.信息大类 指 导 教 师 ...

  2. Android课程设计本地游戏厅app开发(已开源)

    Android课程设计本地游戏厅app开发(已开源) 见链接

  3. android课程设计健身,健身软件课程设计.doc

    健身软件课程设计 通信建模与仿真课程设计文档 健身日记 小 组 名: wingman 小组成员: 肖键 潘凌 周治杰 何朝云 2015年07月03日 Communication Modeling an ...

  4. android课程设计健身,健身软件课程设计-毕业论文.doc

    健身软件课程设计-毕业论文 通信建模与仿真课程设计文档 健身日记 小 组 名: wingman 小组成员: 肖键 潘凌 周治杰 何朝云 2015年07月03日 Communication Modeli ...

  5. android课程设计健身,健身软件课程设计本科毕业设计论文.doc

    健身软件课程设计本科毕业设计论文 通信建模与仿真课程设计文档 健身日记 小 组 名: wingman 小组成员: 肖键 潘凌 周治杰 何朝云 2015年07月03日 Communication Mod ...

  6. android课程设计健身,健身软件课程设计_毕业论文设计.doc

    健身软件课程设计_毕业论文设计 通信建模与仿真课程设计文档 健身日记 小 组 名: wingman 小组成员: 肖键 潘凌 周治杰 何朝云 2015年07月03日 Communication Mode ...

  7. java编码规范文档 下载_软件项目实训及课程设计指导——制定待开发项目中各种文档的规范...

    软件项目实训及课程设计指导--制定待开发项目中各种形式文档的规范 1.制定对课程设计项目开发过程中的规范性要求 (1)从"形式"到"内容"两个方面控制和要求开发 ...

  8. 基于 Android 系统手机通讯录管理软件【100010322】

    基于 Android 系统手机通讯录管理软件 第一章 绪论 1.1 项目研究背景 经过多年的发展,移动终端不再仅是通讯网络的终端,还将成为互联网的终端.因此,移动终端的应用软件和需要的服务将会有很大的 ...

  9. [附源码]计算机毕业设计Python+uniapp基于Android的大学生健康管理APPo1q3h(程序+源码+LW+远程部署)

    [附源码]计算机毕业设计Python+uniapp基于Android的大学生健康管理APPo1q3h(程序+源码+LW+远程部署) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目 ...

最新文章

  1. iframe,window,滚动栏的一些问题
  2. 23.C++类对象的指针为空时,调用成员函数不会挂掉
  3. matlab 抽样判决代码,matlab抽样判决器
  4. 前端学习(2319):angular2概述
  5. 如何通过对方IP地址查对方的MAC
  6. 华为VLAN间互访配置
  7. 超级好用的坐标转换软件
  8. oracle实例包括哪几部分,数据库的实例组成部分及作用是什么?一个oracle数据库可以有多个实例吗?...
  9. thinkPHP定义路由
  10. Java:下拉列表绑定后台数据
  11. 内核编程的主要调用源
  12. IDEA连接服务器执行python程序
  13. 车牌正则oracle,中国车牌号正则表达式
  14. 脑电数据处理分析教程汇总(eeglab, mne-python)
  15. AMD录用前IBM中国总裁周伟焜为公司董事会成员
  16. 9-Nagel-Schreckenberg交通流模型-公路堵车概率模型
  17. 第六章 利用深度Q学习来实现最优控制的智能体
  18. 树模型(1)-入门指南
  19. 详解matlab均衡算法equalize()
  20. 关联规则—频繁项集Apriori算法

热门文章

  1. Matlab:实现Samtec SMA边缘发射表面安装射频连接器(附完整源码)
  2. 时间同步服务器:时间同步的三种方式
  3. 博物馆里有2493台旧手机:你最怀念的是哪一台?
  4. 4075 染色(并查集)
  5. ROS2 机器人操作系统入门和安装以及如何使用 .NET 进行开发
  6. 微软明年关闭诺基亚功能手机应用商店
  7. exagear Pro wine3.0和wine4.0数据包,exagear国外版数据包下载
  8. 牛是怎么死的?(至少30岁的人才能读懂)
  9. 朴素贝叶斯分类器与Fisher线性判别实践——水果识别为例
  10. java 获取上个月的所有日期