information bar

This commit is contained in:
ScorpioMiku
2018-10-01 16:19:24 +08:00
parent a0483f33e6
commit e8a1ef4066
6 changed files with 253 additions and 37 deletions

View File

@@ -36,10 +36,10 @@ public class MyUser {
private boolean is_active;
private String date_joined;
private int sex;
private String occupation_name;
private String occupation_name = "";
private List<?> groups;
private List<?> user_permissions;
private int age;
private int age = 0;
private float weight = 0;
private float height = 0;

View File

@@ -18,25 +18,20 @@ import android.widget.RelativeLayout;
import android.widget.TextView;
import com.ToxicBakery.viewpager.transforms.CubeOutTransformer;
import com.bigkoo.pickerview.builder.OptionsPickerBuilder;
import com.bigkoo.pickerview.listener.OnOptionsSelectListener;
import com.bigkoo.pickerview.view.OptionsPickerView;
import com.akexorcist.roundcornerprogressbar.RoundCornerProgressBar;
import com.cb.ratingbar.CBRatingBar;
import com.example.ninefourone.nutritionmaster.NutritionMaster;
import com.example.ninefourone.nutritionmaster.R;
import com.example.ninefourone.nutritionmaster.adapter.HomePagerAdapter;
import com.example.ninefourone.nutritionmaster.base.BaseActivity;
import com.example.ninefourone.nutritionmaster.bean.Occupation;
import com.example.ninefourone.nutritionmaster.camera.FoodMaterialCamera;
import com.example.ninefourone.nutritionmaster.modules.addinformation.AddActivity;
import com.example.ninefourone.nutritionmaster.modules.addinformation.AddInformationActivity;
import com.example.ninefourone.nutritionmaster.modules.information.InformationActivity;
import com.example.ninefourone.nutritionmaster.ui.InformationDialog;
import com.example.ninefourone.nutritionmaster.ui.NoScrollViewPager;
import com.example.ninefourone.nutritionmaster.utils.CalculateUtils;
import com.example.ninefourone.nutritionmaster.utils.ConstantUtils;
import com.example.ninefourone.nutritionmaster.utils.MessageUtils;
import com.example.ninefourone.nutritionmaster.utils.PermissionUtils;
import com.example.ninefourone.nutritionmaster.utils.WebUtils;
import com.flyco.tablayout.SlidingTabLayout;
import com.github.mikephil.charting.charts.RadarChart;
import com.github.mikephil.charting.components.Description;
@@ -48,7 +43,6 @@ import com.github.mikephil.charting.data.RadarDataSet;
import com.github.mikephil.charting.data.RadarEntry;
import com.github.mikephil.charting.formatter.IndexAxisValueFormatter;
import com.github.siyamed.shapeimageview.CircularImageView;
import com.google.gson.Gson;
import com.miguelcatalan.materialsearchview.MaterialSearchView;
import com.mxn.soul.flowingdrawer_core.ElasticDrawer;
import com.mxn.soul.flowingdrawer_core.FlowingDrawer;
@@ -57,16 +51,12 @@ import com.nightonke.boommenu.BoomButtons.OnBMClickListener;
import com.nightonke.boommenu.BoomMenuButton;
import com.orhanobut.logger.Logger;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;
public class MainActivity extends BaseActivity {
@@ -79,8 +69,8 @@ public class MainActivity extends BaseActivity {
NoScrollViewPager viewPager;
@BindView(R.id.sliding_tab_layout)
SlidingTabLayout slidingTabLayout;
@BindView(R.id.cb_rating_bar)
CBRatingBar cbRatingBar;
@BindView(R.id.score_bar)
CBRatingBar scoreBar;
@BindView(R.id.toolbar_user_avatar)
CircularImageView toolbarUserAvatar;
@BindView(R.id.drawer_user_avatar)
@@ -112,6 +102,12 @@ public class MainActivity extends BaseActivity {
LinearLayout addInforLl;
@BindView(R.id.show_information)
LinearLayout showInformation;
@BindView(R.id.bmi_bar)
RoundCornerProgressBar bmiBar;
@BindView(R.id.height_bar)
RoundCornerProgressBar heightBar;
@BindView(R.id.weight_bar)
RoundCornerProgressBar weightBar;
@Override
@@ -153,7 +149,8 @@ public class MainActivity extends BaseActivity {
* 初始化ViewPager
*/
private void initViewPager() {
HomePagerAdapter homePagerAdapter = new HomePagerAdapter(getSupportFragmentManager(), this);
HomePagerAdapter homePagerAdapter = new HomePagerAdapter(getSupportFragmentManager(),
this);
viewPager.setOffscreenPageLimit(3);
viewPager.setAdapter(homePagerAdapter);
//CubeInTransformer 内旋
@@ -318,7 +315,8 @@ public class MainActivity extends BaseActivity {
.listener(new OnBMClickListener() {
@Override
public void onBoomButtonClick(int index) {
Intent cameraIntent = new Intent(MainActivity.this, FoodMaterialCamera.class);
Intent cameraIntent = new Intent(MainActivity.this,
FoodMaterialCamera.class);
startActivity(cameraIntent);
}
});
@@ -354,7 +352,8 @@ public class MainActivity extends BaseActivity {
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
@NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
MessageUtils.MakeToast("权限赋予成功");
}
@@ -366,7 +365,8 @@ public class MainActivity extends BaseActivity {
* @param view
*/
@OnClick({R.id.navigation_layout, R.id.add_information_button, R.id.information_layout, R.id.user_occupation_text, R.id.adder_infor})
@OnClick({R.id.navigation_layout, R.id.add_information_button, R.id.information_layout,
R.id.user_occupation_text, R.id.adder_infor})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.navigation_layout:
@@ -389,15 +389,104 @@ public class MainActivity extends BaseActivity {
}
@RequiresApi(api = Build.VERSION_CODES.M)
@Override
protected void backChangeData() {
super.backChangeData();
initInforView();
if (NutritionMaster.user.getOccupation_name() == null) {
if (NutritionMaster.user.getOccupation_name().equals("")) {
} else {
userOccupationText.setText("职业: " + NutritionMaster.user.getOccupation_name());
}
initInformationBar();
}
/**
* 初始化个人信息的条状bar还有状态星级的UI
*/
@RequiresApi(api = Build.VERSION_CODES.M)
private void initInformationBar() {
scoreBar.setCanTouch(false);
if (NutritionMaster.user.getHeight() != 0 && NutritionMaster.user.getAge() != 0) {
float maxBmi = 40.0f;
float maxHeight = 250.0f;
float maxWeight = 130.0f;
float height = NutritionMaster.user.getHeight();
float weight = NutritionMaster.user.getWeight();
float age = NutritionMaster.user.getAge();
float averageWeight = 0;
float averageHeight = 0;
float averageBmi = 0;
int index = (int) (age >= 20 ? ((age - 20) / 5 + 17) : (age - 3));
if (NutritionMaster.user.getSex() == 0) {
//女性
averageWeight = ConstantUtils.averageGirlWeight.get(index);
averageHeight = ConstantUtils.averageGirlHeight.get(index);
averageBmi = CalculateUtils.BMI(averageHeight, averageWeight);
} else if (NutritionMaster.user.getSex() == 1) {
averageWeight = ConstantUtils.averageBoyWeight.get(index);
averageHeight = ConstantUtils.averageBoyHeight.get(index);
averageBmi = CalculateUtils.BMI(averageHeight, averageWeight);
} else {
Logger.e("非男非女?");
return;
}
float bmi = CalculateUtils.BMI(height, weight);
float bmiAverage = averageBmi / maxBmi * 100.0f;
float bmiSelf = bmi / maxBmi * 100.0f;
if (bmiAverage > bmiSelf) {
bmiBar.setMax(100);
bmiBar.setSecondaryProgress(bmiAverage);
bmiBar.setProgress(bmiSelf);
} else {
bmiBar.setMax(100);
bmiBar.setSecondaryProgress(bmiSelf);
bmiBar.setProgress(bmiAverage);
bmiBar.setProgressColor(getColor(R.color.color_bar_deeper));
bmiBar.setSecondaryProgressColor(getColor(R.color.color_bar_self));
}
float heightAverage = averageHeight / maxHeight * 100.0f;
float heightSelf = height / maxHeight * 100.0f;
if (heightAverage > heightSelf) {
heightBar.setMax(100);
heightBar.setSecondaryProgress(heightAverage);
heightBar.setProgress(heightSelf);
} else {
heightBar.setMax(100);
heightBar.setSecondaryProgress(heightSelf);
heightBar.setProgress(heightAverage);
heightBar.setProgressColor(getColor(R.color.color_bar_deeper));
heightBar.setSecondaryProgressColor(getColor(R.color.color_bar_self));
}
float weightAverage = averageWeight / maxWeight * 100.0f;
float weightSelf = weight / maxWeight * 100.0f;
if (weightAverage>weightSelf){
weightBar.setMax(100);
weightBar.setSecondaryProgress(weightAverage);
weightBar.setProgress(weightSelf);
}else{
weightBar.setMax(100);
weightBar.setSecondaryProgress(weightSelf);
weightBar.setProgress(weightAverage);
weightBar.setProgressColor(getColor(R.color.color_bar_deeper));
weightBar.setSecondaryProgressColor(getColor(R.color.color_bar_self));
}
Logger.d("bmi:" + averageBmi / maxBmi * 100.0f + "|" + bmi / maxBmi * 100.0f + "\n" +
"height:" + averageHeight / maxHeight * 100.0f + "|" + height / maxHeight * 100.0f + "\n" +
"weight" + averageWeight / maxWeight * 100.0f + "|" + weight / maxWeight * 100.0f);
}
}
}

View File

@@ -1,5 +1,7 @@
package com.example.ninefourone.nutritionmaster.utils;
import com.orhanobut.logger.Logger;
/**
* Created by ScorpioMiku on 2018/8/29.
*/
@@ -14,8 +16,9 @@ public class CalculateUtils {
*/
public static float BMI(float height, float weight) {
if (height > 10) {
height = height / 100;
height = height / 100.0f;
}
// Logger.d(height+"|"+weight / (height * height));
return weight / (height * height);
}

View File

@@ -76,4 +76,134 @@ public class ConstantUtils {
sexList.add("");
}
/**
* 全国平均体重 index 0 对应 3岁
*/
public static ArrayList<Float> averageBoyHeight = new ArrayList<>();
public static ArrayList<Float> averageGirlHeight = new ArrayList<>();
static {
averageBoyHeight.add(new Float(102.2));
averageBoyHeight.add(new Float(107.8));
averageBoyHeight.add(new Float(114));
averageBoyHeight.add(new Float(119.7));
averageBoyHeight.add(new Float(126.6));
averageBoyHeight.add(new Float(132));
averageBoyHeight.add(new Float(137.2));
averageBoyHeight.add(new Float(142.1));
averageBoyHeight.add(new Float(148.1));
averageBoyHeight.add(new Float(154.5));
averageBoyHeight.add(new Float(161.4));
averageBoyHeight.add(new Float(166.5));
averageBoyHeight.add(new Float(169.8));
averageBoyHeight.add(new Float(171.4));
averageBoyHeight.add(new Float(172.1));
averageBoyHeight.add(new Float(172));
averageBoyHeight.add(new Float(172.4)); //index 16 age 19
averageBoyHeight.add(new Float(171.9));
averageBoyHeight.add(new Float(171.6));
averageBoyHeight.add(new Float(170.8));
averageBoyHeight.add(new Float(169.9));
averageBoyHeight.add(new Float(169));
averageBoyHeight.add(new Float(168.7));
averageBoyHeight.add(new Float(168.3));
averageBoyHeight.add(new Float(167.5));
averageGirlHeight.add(new Float(100.9));
averageGirlHeight.add(new Float(106.5));
averageGirlHeight.add(new Float(112.7));
averageGirlHeight.add(new Float(118.1));
averageGirlHeight.add(new Float(125.1));
averageGirlHeight.add(new Float(130.5));
averageGirlHeight.add(new Float(136.3));
averageGirlHeight.add(new Float(142.6));
averageGirlHeight.add(new Float(149.3));
averageGirlHeight.add(new Float(153.7));
averageGirlHeight.add(new Float(157));
averageGirlHeight.add(new Float(158.7));
averageGirlHeight.add(new Float(159.4));
averageGirlHeight.add(new Float(159.8));
averageGirlHeight.add(new Float(159.9));
averageGirlHeight.add(new Float(159.4));
averageGirlHeight.add(new Float(160.4));//index 16 age 19
averageGirlHeight.add(new Float(159.9));//index 17 age 24
averageGirlHeight.add(new Float(159.6));
averageGirlHeight.add(new Float(159.1));
averageGirlHeight.add(new Float(158.5));
averageGirlHeight.add(new Float(157.8));
averageGirlHeight.add(new Float(157.7));
averageGirlHeight.add(new Float(157.7));// index 23 age 54
averageGirlHeight.add(new Float(156.8)); //index 24 age 59
}
/**
* 全国平均体重
*/
public static ArrayList<Float> averageBoyWeight = new ArrayList<>();
public static ArrayList<Float> averageGirlWeight = new ArrayList<>();
static {
averageBoyWeight.add(new Float(16.6));
averageBoyWeight.add(new Float(18.3));
averageBoyWeight.add(new Float(20.6));
averageBoyWeight.add(new Float(23));
averageBoyWeight.add(new Float(26.6));
averageBoyWeight.add(new Float(29.9));
averageBoyWeight.add(new Float(33.6));
averageBoyWeight.add(new Float(37.2));
averageBoyWeight.add(new Float(41.9));
averageBoyWeight.add(new Float(16.6));
averageBoyWeight.add(new Float(52));
averageBoyWeight.add(new Float(56.2));
averageBoyWeight.add(new Float(59.5));
averageBoyWeight.add(new Float(61.5));
averageBoyWeight.add(new Float(63.3));
averageBoyWeight.add(new Float(63.5));
averageBoyWeight.add(new Float(63.5));
averageBoyWeight.add(new Float(67.2));
averageBoyWeight.add(new Float(70.4));
averageBoyWeight.add(new Float(71.4));
averageBoyWeight.add(new Float(71.5));
averageBoyWeight.add(new Float(71.2));
averageBoyWeight.add(new Float(71.2));
averageBoyWeight.add(new Float(10.6));
averageBoyWeight.add(new Float(69.1));
averageGirlWeight.add(new Float(15.9));
averageGirlWeight.add(new Float(17.5));
averageGirlWeight.add(new Float(19.6));
averageGirlWeight.add(new Float(21.6));
averageGirlWeight.add(new Float(24.7));
averageGirlWeight.add(new Float(27.6));
averageGirlWeight.add(new Float(31.3));
averageGirlWeight.add(new Float(35.5));
averageGirlWeight.add(new Float(40.6));
averageGirlWeight.add(new Float(44.5));
averageGirlWeight.add(new Float(18));
averageGirlWeight.add(new Float(50.4));
averageGirlWeight.add(new Float(51.6));
averageGirlWeight.add(new Float(52.7));
averageGirlWeight.add(new Float(53));
averageGirlWeight.add(new Float(52.6));
averageGirlWeight.add(new Float(52.4));
averageGirlWeight.add(new Float(53.8));
averageGirlWeight.add(new Float(55.3));
averageGirlWeight.add(new Float(56.8));
averageGirlWeight.add(new Float(57.8));
averageGirlWeight.add(new Float(59));
averageGirlWeight.add(new Float(59.7));
averageGirlWeight.add(new Float(60.4));
averageGirlWeight.add(new Float(59.6));
}
}

View File

@@ -208,14 +208,13 @@
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/add_infor_ll"
android:layout_width="match_parent"
android:layout_height="200dp"
android:gravity="center"
android:id="@+id/add_infor_ll"
android:orientation="vertical">
<TextView
@@ -257,7 +256,7 @@
</LinearLayout>
<com.cb.ratingbar.CBRatingBar
android:id="@+id/cb_rating_bar"
android:id="@+id/score_bar"
android:layout_width="150dp"
android:layout_height="36dp"
android:layout_alignParentRight="true"
@@ -371,6 +370,7 @@
</LinearLayout>
<com.akexorcist.roundcornerprogressbar.RoundCornerProgressBar
android:id="@+id/bmi_bar"
android:layout_width="145dp"
android:layout_height="36dp"
android:layout_alignParentRight="true"
@@ -378,12 +378,9 @@
android:layout_marginTop="3dp"
app:rcBackgroundColor="@color/color_bar_background"
app:rcBackgroundPadding="5dp"
app:rcMax="100"
app:rcProgress="56.6"
app:rcProgressColor="@color/color_bar_self"
app:rcRadius="10dp"
app:rcReverse="false"
app:rcSecondaryProgress="74.1"
app:rcSecondaryProgressColor="@color/color_bar_deeper" />
</RelativeLayout>
@@ -446,7 +443,7 @@
<TextView
android:layout_width="wrap_content"
android:layout_height="8dp"
android:text="@string/standrad_information"
android:text="@string/average_information"
android:textSize="5sp" />
</LinearLayout>
@@ -457,6 +454,7 @@
</LinearLayout>
<com.akexorcist.roundcornerprogressbar.RoundCornerProgressBar
android:id="@+id/height_bar"
android:layout_width="145dp"
android:layout_height="36dp"
android:layout_alignParentRight="true"
@@ -464,12 +462,9 @@
android:layout_marginTop="3dp"
app:rcBackgroundColor="@color/color_bar_background"
app:rcBackgroundPadding="5dp"
app:rcMax="100"
app:rcProgress="16.6"
app:rcProgressColor="@color/color_bar_self"
app:rcRadius="10dp"
app:rcReverse="false"
app:rcSecondaryProgress="32.1"
app:rcSecondaryProgressColor="@color/color_bar_deeper" />
</RelativeLayout>
@@ -532,7 +527,7 @@
<TextView
android:layout_width="wrap_content"
android:layout_height="8dp"
android:text="@string/standrad_information"
android:text="@string/average_information"
android:textSize="5sp" />
</LinearLayout>
@@ -543,6 +538,7 @@
</LinearLayout>
<com.akexorcist.roundcornerprogressbar.RoundCornerProgressBar
android:id="@+id/weight_bar"
android:layout_width="145dp"
android:layout_height="36dp"
android:layout_alignParentRight="true"
@@ -550,12 +546,9 @@
android:layout_marginTop="3dp"
app:rcBackgroundColor="@color/color_bar_background"
app:rcBackgroundPadding="5dp"
app:rcMax="100"
app:rcProgress="32.6"
app:rcProgressColor="@color/color_bar_self"
app:rcRadius="10dp"
app:rcReverse="false"
app:rcSecondaryProgress="56.1"
app:rcSecondaryProgressColor="@color/color_bar_deeper" />
</RelativeLayout>

View File

@@ -1,6 +1,7 @@
<resources>
<string name="app_name">NutritionMaster</string>
<string name="self_information">当前值</string>
<string name="average_information">全国均值</string>
<string name="standrad_information">标准值</string>
<string name="pig">M1080.3,453.7c-77.2,88.2 -214.6,234.4 -214.6,234.4s22,160.2 35.3,269.7c5.9,55.9 -37.5,80.1 -86,58.1 -92.6,-43.4 -233.7,-111 -265.3,-126.4 -32.3,14.7 -174.2,81.6 -267.5,124.9 -49.2,21.3 -92.6,-2.2 -87.5,-58.1 12.5,-109.5 35.3,-269 35.3,-269S91.1,541.9 13.2,453.7c-27.9,-32.3 -9.6,-77.9 44.8,-86 111.7,-19.8 284.4,-51.4 284.4,-51.4s94.8,-163.1 154.3,-263.1C529.8,-7.8 552.6,-0.4 556.3,1c10.3,2.9 26.5,15.4 47,52.2 58.8,99.9 152.1,263.1 152.1,263.1s170.5,31.6 280.7,51.4c53.6,8.1 71.3,54.4 44.1,86z</string>
<string name="food_meterial_title">食材识别</string>