Android课程设计(健康管理软件开发)
Android 课程设计
Android开发使用软件(RecyclerView+ListView+SQLite)
一个实用的健康管理软件,可以查询各种食物的热量,每天健身打卡,发表动态,可以点击图片链接进入淘宝首页,在个人中心可以修改收货地址,添加购物车,记录健康资料、每日饮食(收货地址和购物车仅关联此软件)
实现的功能
- 用户登录 ,进入首页自动跳转至登录页面;
- 登录成功,进入首页 查询各种食物的热量 ;
- 健康打卡页面 ,可以进行每日健身打卡,自定义添加打卡项目;
- 发布动态页面 ,可以添加图片(此处功能还需完善);
- 商店页面 ,点击图片链接进入淘宝首页;
- 个人中心 ,查看、修改购物车、收货地址、健康资料,记录每日饮食。
使用框架
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显示食物列表
查询
- 连接数据库
- 弹出提示框显示
- 首页
-RecyclerView显示打卡记录
1.添加打卡
2.勾选checkbox进行打卡,弹出提示
- 发布动态页面
-EditText输入
1.调用图库插入图片
2.插入标签
商店页面
WebView,第三方框架banner 图片轮播效果(未显示)
1.点击图片链接进入淘宝首页
个人中心
RecyclerView显示动态,三种类型Dialog应用
1.复选框显示购物车
2.半自定义记录每日饮食
3.查看健康记录
4.单选框设置收货地址
改进:
1.EditText图文混排依然存在问题,可以调用图库但图片不能显示
Android课程设计(健康管理软件开发)相关推荐
- c语言课设宿舍管理程序,C语言程序课程设计宿舍管理软件.doc
C语言程序课程设计宿舍管理软件.doc 课程设计(论文) 题 目 名 称 宿舍管理软件 课 程 名 称 C语言程序课程设计 学 生 姓 名 学 号 系 .专 业 信息工程系.信息大类 指 导 教 师 ...
- Android课程设计本地游戏厅app开发(已开源)
Android课程设计本地游戏厅app开发(已开源) 见链接
- android课程设计健身,健身软件课程设计.doc
健身软件课程设计 通信建模与仿真课程设计文档 健身日记 小 组 名: wingman 小组成员: 肖键 潘凌 周治杰 何朝云 2015年07月03日 Communication Modeling an ...
- android课程设计健身,健身软件课程设计-毕业论文.doc
健身软件课程设计-毕业论文 通信建模与仿真课程设计文档 健身日记 小 组 名: wingman 小组成员: 肖键 潘凌 周治杰 何朝云 2015年07月03日 Communication Modeli ...
- android课程设计健身,健身软件课程设计本科毕业设计论文.doc
健身软件课程设计本科毕业设计论文 通信建模与仿真课程设计文档 健身日记 小 组 名: wingman 小组成员: 肖键 潘凌 周治杰 何朝云 2015年07月03日 Communication Mod ...
- android课程设计健身,健身软件课程设计_毕业论文设计.doc
健身软件课程设计_毕业论文设计 通信建模与仿真课程设计文档 健身日记 小 组 名: wingman 小组成员: 肖键 潘凌 周治杰 何朝云 2015年07月03日 Communication Mode ...
- java编码规范文档 下载_软件项目实训及课程设计指导——制定待开发项目中各种文档的规范...
软件项目实训及课程设计指导--制定待开发项目中各种形式文档的规范 1.制定对课程设计项目开发过程中的规范性要求 (1)从"形式"到"内容"两个方面控制和要求开发 ...
- 基于 Android 系统手机通讯录管理软件【100010322】
基于 Android 系统手机通讯录管理软件 第一章 绪论 1.1 项目研究背景 经过多年的发展,移动终端不再仅是通讯网络的终端,还将成为互联网的终端.因此,移动终端的应用软件和需要的服务将会有很大的 ...
- [附源码]计算机毕业设计Python+uniapp基于Android的大学生健康管理APPo1q3h(程序+源码+LW+远程部署)
[附源码]计算机毕业设计Python+uniapp基于Android的大学生健康管理APPo1q3h(程序+源码+LW+远程部署) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目 ...
最新文章
- iframe,window,滚动栏的一些问题
- 23.C++类对象的指针为空时,调用成员函数不会挂掉
- matlab 抽样判决代码,matlab抽样判决器
- 前端学习(2319):angular2概述
- 如何通过对方IP地址查对方的MAC
- 华为VLAN间互访配置
- 超级好用的坐标转换软件
- oracle实例包括哪几部分,数据库的实例组成部分及作用是什么?一个oracle数据库可以有多个实例吗?...
- thinkPHP定义路由
- Java:下拉列表绑定后台数据
- 内核编程的主要调用源
- IDEA连接服务器执行python程序
- 车牌正则oracle,中国车牌号正则表达式
- 脑电数据处理分析教程汇总(eeglab, mne-python)
- AMD录用前IBM中国总裁周伟焜为公司董事会成员
- 9-Nagel-Schreckenberg交通流模型-公路堵车概率模型
- 第六章 利用深度Q学习来实现最优控制的智能体
- 树模型(1)-入门指南
- 详解matlab均衡算法equalize()
- 关联规则—频繁项集Apriori算法