终极Android-PickerView实战指南:如何快速打造健身App的运动类型与时长选择功能

终极Android-PickerView实战指南:如何快速打造健身App的运动类型与时长选择功能

【免费下载链接】Android-PickerView This is a picker view for android , support linkage effect, timepicker and optionspicker.(时间选择器、省市区三级联动) 【免费下载链接】Android-PickerView 项目地址: https://gitcode.com/gh_mirrors/an/Android-PickerView

Android-PickerView是一款功能强大的Android选择器控件,支持时间选择器和选项选择器,特别适合健身App中实现运动类型与时长选择功能。本文将详细介绍如何利用这个开源库快速构建专业的选择界面,提升用户体验。

为什么选择Android-PickerView?

Android-PickerView是一个仿iOS风格的选择器控件,具有以下核心优势:

  • 双重选择功能:同时支持时间选择器(TimePickerView)和选项选择器(OptionsPickerView)
  • 高度可定制:支持自定义布局、颜色、文字大小等多种属性
  • 三级联动支持:完美实现如运动类型-子类型-难度等级的多级选择
  • 轻量级设计:核心库体积小,不增加App负担
  • 易用性强:简单几行代码即可实现复杂的选择功能

这些特性使Android-PickerView成为健身App开发的理想选择,特别是在需要用户选择运动类型、时长、强度等场景下。

快速集成步骤

1. 准备工作

首先,通过Git克隆项目到本地:

git clone https://gitcode.com/gh_mirrors/an/Android-PickerView

2. 添加依赖

在项目的build.gradle文件中添加依赖:

compile 'com.contrarywind:Android-PickerView:4.1.9'

或者使用Maven:

<dependency>
    <groupId>com.contrarywind</groupId>
    <artifactId>Android-PickerView</artifactId>
    <version>4.1.9</version>
    <type>pom</type>
</dependency>

实战:实现运动时长选择器

时间选择器是健身App中常用的功能,用于选择运动时长或记录运动开始/结束时间。

基础实现代码

// 时间选择器
TimePickerView pvTime = new TimePickerBuilder(MainActivity.this, new OnTimeSelectListener() {
    @Override
    public void onTimeSelect(Date date, View v) {
        // 处理选中的时间,例如显示到TextView
        tvTime.setText(getTime(date));
    }
}).build();

自定义运动时长选择器

针对健身App的特殊需求,我们可以定制一个只显示小时和分钟的时长选择器:

Calendar startDate = Calendar.getInstance();
startDate.set(0, 0, 0, 0, 0); // 起始时间:0小时0分钟

Calendar endDate = Calendar.getInstance();
endDate.set(0, 0, 0, 24, 0); // 结束时间:24小时0分钟

TimePickerView durationPicker = new TimePickerBuilder(this, new OnTimeSelectListener() {
    @Override
    public void onTimeSelect(Date date, View v) {
        // 计算选中的时长并显示
        long durationMinutes = (date.getTime() - startDate.getTimeInMillis()) / (1000 * 60);
        tvDuration.setText(String.format("运动时长: %d分钟", durationMinutes));
    }
})
.setType(new boolean[]{false, false, false, true, true, false}) // 只显示小时和分钟
.setRangDate(startDate, endDate) // 设置时间范围
.setTitleText("选择运动时长") // 设置标题
.setSubmitText("确定") // 确定按钮文字
.setCancelText("取消") // 取消按钮文字
.setContentSize(18) // 滚轮文字大小
.build();

下面是时间选择器的实际效果:

Android-PickerView时间选择器效果 Android-PickerView时间选择器用于选择运动时长

实战:实现运动类型选择器

选项选择器非常适合实现运动类型的选择,支持多级联动效果。

基础实现代码

// 条件选择器
OptionsPickerView pvOptions = new OptionsPickerBuilder(MainActivity.this, new OnOptionsSelectListener() {
    @Override
    public void onOptionsSelect(int options1, int option2, int options3 ,View v) {
        // 返回的分别是三个级别的选中位置
        String selectedSport = options1Items.get(options1) + " - " + 
                              options2Items.get(options1).get(option2);
        tvSportType.setText(selectedSport);
    }
}).build();

// 设置数据源
pvOptions.setPicker(sportTypes, sportSubTypes);

实现运动类型三级联动

以下是一个完整的运动类型三级联动选择实现:

// 准备运动类型数据
List<String> sportTypes = new ArrayList<>();
List<List<String>> sportSubTypes = new ArrayList<>();
List<List<List<String>>> sportLevels = new ArrayList<>();

// 添加运动类型数据(此处省略数据初始化代码)

OptionsPickerView sportPicker = new OptionsPickerBuilder(this, new OnOptionsSelectListener() {
    @Override
    public void onOptionsSelect(int options1, int option2, int options3, View v) {
        String selected = sportTypes.get(options1) + " > " +
                         sportSubTypes.get(options1).get(option2) + " > " +
                         sportLevels.get(options1).get(option2).get(options3);
        tvSelectedSport.setText(selected);
    }
})
.setTitleText("选择运动类型")
.setSubmitText("确定")
.setCancelText("取消")
.setContentSize(18)
.setLinkage(true) // 启用联动
.build();

// 设置数据源
sportPicker.setPicker(sportTypes, sportSubTypes, sportLevels);

下面是选项选择器的实际效果:

Android-PickerView选项选择器效果 Android-PickerView选项选择器用于选择运动类型

高级自定义:打造专属选择器样式

Android-PickerView支持高度自定义,可以根据App的整体风格调整选择器样式。

夜间模式示例

pvTime = new TimePickerBuilder(this, new OnTimeSelectListener() {
    @Override
    public void onTimeSelect(Date date,View v) {
        tvTime.setText(getTime(date));
    }
})
.setTitleText("选择运动时间")
.setTitleBgColor(0xFF333333) // 标题背景颜色
.setBgColor(0xFF000000) // 滚轮背景颜色
.setTitleColor(Color.WHITE) // 标题文字颜色
.setSubmitColor(Color.CYAN) // 确定按钮文字颜色
.setCancelColor(Color.CYAN) // 取消按钮文字颜色
.build();

自定义布局

如果默认布局不符合需求,可以通过以下方式自定义布局:

pvCustomOptions = new OptionsPickerBuilder(this, new OnOptionsSelectListener() {
    @Override
    public void onOptionsSelect(int options1, int option2, int options3, View v) {
        // 处理选择结果
    }
})
.setLayoutRes(R.layout.pickerview_custom_options, new CustomListener() {
    @Override
    public void customLayout(View v) {
        // 自定义布局中的控件初始化及事件处理
        TextView tvSubmit = v.findViewById(R.id.tv_finish);
        ImageView ivCancel = v.findViewById(R.id.iv_cancel);
        
        tvSubmit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                pvCustomOptions.returnData(tvSubmit);
            }
        });
        
        ivCancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                pvCustomOptions.dismiss();
            }
        });
    }
})
.build();

自定义布局文件位于pickerview/src/main/res/layout/pickerview_custom_options.xml,你可以根据需要修改布局结构和样式。

常见问题解决方案

1. 时间选择器月份设置问题

Calendar组件的月份是从0开始的(0-11代表1-12月),设置时需特别注意:

// 错误示例
startDate.set(2023, 1, 1); // 这会设置为2023年2月1日

// 正确示例
startDate.set(2023, 0, 1); // 设置为2023年1月1日

2. 数据联动问题

如果需要禁用联动功能,可通过以下方式设置:

.setLinkage(false) // 设置为false禁用联动,默认true

3. 滚轮循环问题

设置滚轮是否循环滚动:

.setCyclic(true) // 启用循环滚动,默认false

总结

Android-PickerView是一个功能强大且高度可定制的选择器库,非常适合在健身App中实现运动类型与时长选择功能。通过本文介绍的方法,你可以快速集成并定制出符合App风格的选择器,提升用户体验。

项目的完整示例代码可以在app/src/main/java/com/bigkoo/pickerviewdemo/MainActivity.java中找到,你可以参考这些示例来实现自己的功能。

无论是简单的时间选择还是复杂的多级联动选择,Android-PickerView都能满足你的需求,帮助你打造专业的健身App用户界面。

【免费下载链接】Android-PickerView This is a picker view for android , support linkage effect, timepicker and optionspicker.(时间选择器、省市区三级联动) 【免费下载链接】Android-PickerView 项目地址: https://gitcode.com/gh_mirrors/an/Android-PickerView

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

抵扣说明:

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

余额充值