Android Studio实现简单的健身系统,一起锻炼身体吧

一、系统背景

近年来,随着生活质量的不断提高,大学生更加追求饮食的享受,比如在周末经常会出去吃火锅和烧烤,但是吃完了也不运动,很快就长肉了。长时间饮食不规律,身体还会出现不良症状。所以,越来越多的人都去健身房办卡健身,希望保持身体健康,在此背景下,健身系统应运而生。

二、系统概述

进入应用,首先是欢迎界面,等待3s后跳转到登录界面,我们先注册账号,使用MD5加密,安全性更强。选择记住密码的话,会在下次进入应用时自动填充账号密码,否则不会。登录成功进入主页面,可以选择个人信息或者运动项目。选择个人信息,可以修改信息,修改完之后会更新数据库中User表的数据。下方还会显示名言警句,每次打开都会显示不同的内容。选择运动项目,进入项目列表,选择任意运动项目,会进入锻炼界面,这里有锻炼视频,下方有计时功能,可以进行开始锻炼、暂停锻炼、停止锻炼和结束锻炼。

涉及知识点:MD5加密,文件存储,Sqlite数据库,VideoView视频播放器,Thread多线程编程,OkHttp网络通信框架,Toolbar工具栏,RecycleView列表,Handler异步消息机制,ViewPager轮播图,Json数据解析,Glide图片加载库。

三、开发环境

本项目开发的Android Studio版本比较早,只要你的Android Studio是近两年从官网下载的,都是满足的。
在这里插入图片描述

四、系统结构

我们展开Android视图下的目录,也就是源代码文件,下面介绍每个包的内容。

  • activity是ExerciseActivity等活动,主要活动都在这里,命名也遵循大驼峰命名法。
  • adapter是列表布局的适配器,因为运动项目都是以列表呈现,轮播图也如此,将我们准备的数据源按照我们设定的方式显示到屏幕上,就是用的适配器。
  • app是应用基础,比如欢迎、登录和注册。
  • bean实体类,大家肯定很熟悉了,数据库存储肯定用到数据表,那么bean就起到了表结构的作用,直接根据bean进行建表,这里是谚语bean、运动项目bean和用户bean。
  • database就是sqlite数据库,通过DatabaseHelper帮助类对象访问数据库,UserDao进行用户表的数据库操作。
  • http是发送和接收Http请求的工具类,使用OkHttp网络通信框架,client发送http请求,并获取服务器返回的数据,然后使用GSON进行Json解析。

在这里插入图片描述

五、详细设计

5.1、RecycleView

RecycleView列表使用起来很简单,四行代码引用下就可以。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".Activity.SportActivity">
    <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>


</LinearLayout>

设置下子项的布局,CardView里面嵌套个ImageView,主要是CardView的radius要设置下。

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_margin="5dp"
    app:cardCornerRadius="15dp">
    <ImageView
        android:id="@+id/sport_image"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:scaleType="centerCrop"
        android:background="@drawable/p7"/>

</androidx.cardview.widget.CardView>

然后创建Adapter,重写父类方法,主要是ViewHolder进行控件绑定,这里只展示这部分代码。

    static class ViewHolder extends RecyclerView.ViewHolder{
        CardView cardView;
        ImageView sportImage;
        public ViewHolder(View itemView) {
            super(itemView);
            cardView = (CardView) itemView;
            sportImage = itemView.findViewById(R.id.sport_image);
        }
    }

写完Adapter代码之后,在主函数里面,就是创建数据源,创建适配器,然后设置适配器,三步完成列表的显示。

	initSport();
	RecyclerView recyclerView = findViewById(R.id.recycler_view);
	GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 1);
	recyclerView.setLayoutManager(gridLayoutManager);
	// 创建适配器,同时加载数据源
	sportAdapter = new SportAdapter(sportList);
	// 设置适配器
	recyclerView.setAdapter(sportAdapter);

5.2、ViewPager

首先到处搜索资源图片,然后创建数组存放它们的id。然后创建图片列表和点列表,设置图片view的宽高,将图片view加载到集合中,创建图片对应的指示器小圆点,将小圆点添加到布局当中,为了方便操作,将小圆点加入统一管理的集合。

	 // 设置滑动页面
    private void initPager() {
        ivList = new ArrayList<>();
        pointList = new ArrayList<>();
        for (int i = 0; i < imgIds.length; i++) {
            ImageView iv = new ImageView(this);
            iv.setImageResource(imgIds[i]);
            iv.setScaleType(ImageView.ScaleType.FIT_XY);
            // 设置图片view的宽高
            LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
                    LinearLayout.LayoutParams.MATCH_PARENT);
            iv.setLayoutParams(lp);
            // 将图片view加载到集合中
            ivList.add(iv);
            // 创建图片对应的指示器小圆点
            ImageView piv = new ImageView(this);
            piv.setImageResource(R.drawable.point_normal);
            LinearLayout.LayoutParams plp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
                    LinearLayout.LayoutParams.WRAP_CONTENT);
            plp.setMargins(20, 0, 0, 0);
            piv.setLayoutParams(plp);
            // 将小圆点添加到布局当中
            pointLayout.addView(piv);
            // 为了方便操作,将小圆点加入统一管理的集合
            pointList.add(piv);
        }
        pointList.get(0).setImageResource(R.drawable.point_focus);
        pagerAdapter = new PagerAdapter(this, ivList);
        viewPager.setAdapter(pagerAdapter);
    }

然后就是轮播图的监听器,实现手动滑动,然后利用Handler消息机制进行自动滑动。

    // 设置页面滑动的监听器
    private void setVPListener() {
        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                for (int i = 0; i < pointList.size(); i++) {
                    pointList.get(i).setImageResource(R.drawable.point_normal);
                }
                pointList.get(position).setImageResource(R.drawable.point_focus);
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
    }

5.3、OkHttp

通常情况下,我们都应该将这些通用的网络操作提取到一个公共的类里,并提供一个静态方法,当想要发起网络请求的时候,只需要简单调用这个方法即可。HttpURLConnection的写法很复杂,使用OkHttp会变得非常简单,接口设计非常人性化,使得我们只需要编写少量的代码就能完成较为复杂的网络操作。

public class HttpUtil {
    public static void sendOkHttpRequest(String address, okhttp3.Callback callback) {
        OkHttpClient client = new OkHttpClient();
        Request request = new Request.Builder()
                .url(address)
                .build();
        client.newCall(request).enqueue(callback);
    }
}

Http请求结果都回调到了okhttp3.Callback当中,所以直接获取response的body的string(),获取数据然后进行显示,解析和显示方法进行了封装。

HttpUtil.sendOkHttpRequest(URLUtils.index_url, new okhttp3.Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Toast.makeText(PersonActivity.this, "今日励志古言接口次数已用完。", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                // 得到服务器返回的数据
                String result = response.body().string();
                parseShowData(result);
            }
        });

六、运行演示

Android Studio实现一个健身系统

七、系统总结

本次健身系统可以说是非常简单了,非常适合刚学习Android的同学进行练习。在简单的同时包含了很多常用知识点,比如MD5加密,文件存储,Sqlite数据库,VideoView视频播放器,Thread多线程编程,OkHttp网络通信框架,Json数据解析等。相信掌握之后,会更好地打牢android基础。

八、源码获取

♻️下面两种方式都可以获取源代码
1️⃣ 点击直接下载 Android Studio 健身系统
2️⃣关注公众号《 萌新加油站 》,后台回复: 健身

🚀这有你错过的精彩内容
Android Studio实现选课系统
Android Studio实现外卖订餐系统
Android Studio实现考试管理系统
Android Studio实现天气预报系统
Android Studio实现图书馆订座系统

祸福无门,惟人自召;善恶之报,如影随身。

  • 46
    点赞
  • 133
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 41
    评论
### 回答1: Android Studio作为Android开发的主流开发工具,可以帮助我们实现淘宝购物系统。首先,我们需要构建一个基本的Android应用架构,包括activity和fragment等组件。然后,我们需要使用Java编写与服务器进行通信的代码来获取产品和订单信息。进行这一步需要注意数据的安全性和准确性,并提供足够的错误处理来缓解用户的问题。 接下来,在应用程序中创建用户的账户和购物车,有助于提高用户准确订购产品和提供更快速的付款流程。商品的购物车功能需要与服务器进行交互,确保在购物车中添加或删除的所有商品与服务器保持同步。 考虑到购物应用的UI设计,我们需要采用响应式界面,并有一个直观的布局,使用户可以轻松地搜索和浏览商品,以及添加和删除购物车中的商品。同时,我们需要考虑到数据的缓存,这样用户可以在断网时继续选择商品,缓存商品数据和交易状态,以确保同步更新,以便将货物交送给客户。 最后,我们需要考虑支付系统的配置,这可能涉及到与支付网关的通信工作或与银行协商。我们需要使用熟悉的API和界面来确保我们可以接受各种支付方式,同时确保交易的安全性和无误。 总的来说,Android Studio是一个非常强大的开发工具,可以帮助我们实现淘宝购物系统,并使其易于使用和方便的。我们只需要遵循最佳实践并投入足够的时间和精力,应该可以创建一个流畅而高效的应用程序。 ### 回答2: 实现淘宝购物系统需要用到Android Studio的多个功能和处理技能。首先,需要实现用户注册和登录,使用户能够登录并使用淘宝系统的各种功能。这需要运用Android Studio的界面设计和用户验证功能,包括网络通信功能,以确保用户能够进行登录操作。 在淘宝购物系统中,用户能够浏览和搜索商品,并将商品加入购物车。需要在Android Studio中创建视图和适配器,可实现商品列表的显示,同时构建购物车和管理商品数据的数据库。这需要运用Android Studio的数据存储技术以及视图设计技能。 。 用户可以进行付款和交货等操作。从Android Studio中使用许多付款和交货API来完成这些过程,并相应地更新系统和物品状态。这需要掌握Android Studio中的数据传递和API调用技能。 此外,淘宝购物系统还涉及到推荐和店铺的功能,需要使用Android Studio的推荐引擎技术和视图设计技能来处理。实现推荐系统和店铺数据的显示,使用户能够追踪他们的好友和其他外部来源,也需要掌握Android Studio的社交媒体数据和API处理技能。 总体而言,实现淘宝购物系统需要使用许多Android Studio技巧。需要熟悉使用用户验证、视图设计、数据存储、API和推荐引擎等功能。掌握这些技能后,就可以创造一个完整的淘宝购物体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 41
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

振华OPPO

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值