Development of BMI

需求
计算BMI指数,给出结果及建议,支持网络检索

技术要点
1、基于ConstraintLayout可视化设计UI界面
2、SeekBar、FloatingActionButton、WebView控件的使用
3、注意合理使用float数据类型
4、逻辑控制,支持数据联动和动态显示隐藏效果
5、长文本字符串的定义显示及相关注意事项

效果演示图一:

效果演示图二:

效果演示图三:

踩过的坑

1、WebView和TextView控件动态显示和隐藏
在可视化设计时,先设计好一个,然后将其visibility属性设为GONE,之后再设计另一个;

2、在定好大致框架后,善于利用ConstraintLayout的Inference功能,减少工作量的同时,避免所见非所得情况的发生;

3、在定义字符串文本时,引入了%符号,需要设置相应的属性或者“用%%来表示1个%,和转意符号的用法相同;或者%前加转义\”,否则编译报错。

1
2
3
4
5
6
7
8
<string name="bmi_fat_hint" **formatted="false"**>
"\n\n\n过重:25-28\n\n"
"多动,选择有氧运动,有氧运动,是指那些以增强人体吸入、输送氧气以及与使用氧气能力为目的的耐久性运动。\n\n"
"有氧锻炼中,心率要达到“有效心率阈值”,并在这个区域保持20分钟以上时,才是最适合消耗脂肪的运动方式。\n\n"
"有效心率是指锻炼者达到本人最高心率(最大心率=220-年龄)60%-85%的心率范围。如一个40岁的人其最高心率为220-40=180,其有氧心率阈值为108-153次/分钟。\n\n"
"建议进行有氧锻炼时每周进行5次,每次20-30分钟。练习的次数更多时,其效果并不十分明显。\n\n"
"有氧运动的方式包括跑步、快步走、有节奏地骑自行车、游泳、爬山、上楼梯、做健身操、扭秧歌、跳健身舞等较长时间的耐力性运动。"
</string>

参考阅读

BMI指数
Android新特性介绍,ConstraintLayout完全解析
Android工程编译出现Multiple substitutions specified in non-positional format错误的分析
strings.xml文件中提供占位符来格式化数据
android自定义Seekbar您还将你的拖动数值显示在旁边固定的TextView上么
【Android学习】android布局中几个距离单位的区别:px、dp、sp
Android的px,dp和sp等单位的区别详解