diff --git a/README.md b/README.md index e4bf6bb..7484a4e 100644 --- a/README.md +++ b/README.md @@ -234,6 +234,6 @@ * POST新建用户信息`params`示例 * 1♂ 0♀ - * `occupation_name`,`physical_name`的值必须和数据库对应 + * `occupation_name`,`physique`的值必须和数据库对应 ![](http://ww1.sinaimg.cn/large/0077h8xtly1fvjbfh6vm1j30r70eh3zj.jpg) diff --git a/app/build.gradle b/app/build.gradle index 5fcb4c4..ce04b2a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,6 +75,8 @@ dependencies { implementation 'com.github.bumptech.glide:glide:3.8.0' implementation 'com.android.support:support-v4:19.1.0' + //picker + implementation 'com.contrarywind:Android-PickerView:4.1.6' //okhttp 网络通信库 implementation 'com.squareup.okhttp3:okhttp:3.11.0' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 262fe2c..3055424 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -24,6 +24,11 @@ + + + + + - + - + + + \ No newline at end of file diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/NutritionMaster.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/NutritionMaster.java index ff65488..67edc29 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/NutritionMaster.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/NutritionMaster.java @@ -4,9 +4,21 @@ import android.app.Activity; import android.app.Application; import android.os.Bundle; +import com.example.ninefourone.nutritionmaster.bean.MyUser; + +import com.example.ninefourone.nutritionmaster.bean.Occupation; +import com.example.ninefourone.nutritionmaster.utils.ConstantUtils; +import com.example.ninefourone.nutritionmaster.utils.WebUtils; +import com.google.gson.Gson; import com.orhanobut.logger.AndroidLogAdapter; import com.orhanobut.logger.Logger; +import java.io.IOException; + +import okhttp3.Call; +import okhttp3.Callback; +import okhttp3.Response; + /** * Created by ScorpioMiku on 2018/8/26. @@ -16,11 +28,14 @@ public class NutritionMaster extends Application { public static NutritionMaster mInstance; private int appCount = 0; + public static MyUser user; + @Override public void onCreate() { super.onCreate(); mInstance = this; init(); + initUser(); } /** @@ -64,6 +79,7 @@ public class NutritionMaster extends Application { } }); + initOccupations(); } public static NutritionMaster getInstance() { @@ -79,4 +95,37 @@ public class NutritionMaster extends Application { return appCount > 0; } + + /** + * 初始化用户信息 + */ + private void initUser() { + user = new MyUser(); + user.setUsername("ScorpioMiku"); + } + + /** + * 初始化职业常量 + */ + private void initOccupations() { + + WebUtils.getAllOccupations(new Callback() { + @Override + public void onFailure(Call call, IOException e) { + e.printStackTrace(); + } + + @Override + public void onResponse(Call call, Response response) throws IOException { + Occupation[] occupations = new Gson().fromJson(response.body().string(), Occupation[].class); +// Logger.d(Arrays.toString(occupations)); + for (int i = 0; i < occupations.length; i++) { + ConstantUtils.occupationList.add(occupations[i].getOccupation_name()); + } + } + }); + + } + + } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/CardAdapter.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/CardAdapter.java index a2dd942..80f5bc3 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/CardAdapter.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/CardAdapter.java @@ -39,7 +39,7 @@ public class CardAdapter extends RecyclerView.Adapter { @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @Override public void onBindViewHolder(CardHolder holder, int position) { - holder.bindView(mList.get(position).getPictureId(), mList.get(position).getTitle(), context); + holder.bindView(mList.get(position).getPictureId(), mList.get(position), context); } @Override @@ -51,13 +51,13 @@ public class CardAdapter extends RecyclerView.Adapter { * 右划 */ public void swipe2Right() { - Logger.d("右划"); +// Logger.d("右划"); } /** * 左划 */ public void swipe2left() { - Logger.d("左划"); +// Logger.d("左划"); } } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/CardHolder.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/CardHolder.java index 8a6a3b8..6a0610b 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/CardHolder.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/CardHolder.java @@ -11,6 +11,7 @@ import android.widget.TextView; import com.bumptech.glide.Glide; import com.example.ninefourone.nutritionmaster.R; +import com.example.ninefourone.nutritionmaster.bean.DailyCard; import com.example.ninefourone.nutritionmaster.modules.viewpagerfragments.customization.CustomizationActivity; import com.orhanobut.logger.Logger; @@ -41,12 +42,13 @@ public class CardHolder extends RecyclerView.ViewHolder { } @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) - public void bindView(int picId, String text, final Context context) { - tvName.setText(text); + public void bindView(int picId, DailyCard dailyCard, final Context context) { + tvName.setText(dailyCard.getTitle()); + tvSign.setText(dailyCard.getDescription()); // ivPhoto.setImageDrawable(context.getDrawable(picId)); Glide.with(context).load(picId).into(ivPhoto); i = new Intent(context, CustomizationActivity.class); - i.putExtra("SEND_CODE", text); + i.putExtra("SEND_CODE", dailyCard.getTitle()); // Logger.d(text); itemView.setOnClickListener(new View.OnClickListener() { @Override @@ -54,7 +56,6 @@ public class CardHolder extends RecyclerView.ViewHolder { context.startActivity(i); } }); - } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/base/BaseActivity.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/base/BaseActivity.java index d1f44e1..614d9e1 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/base/BaseActivity.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/base/BaseActivity.java @@ -4,6 +4,10 @@ import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; +import com.example.ninefourone.nutritionmaster.NutritionMaster; +import com.example.ninefourone.nutritionmaster.bean.MyUser; +import com.orhanobut.logger.Logger; + import butterknife.ButterKnife; import butterknife.Unbinder; @@ -13,16 +17,18 @@ import butterknife.Unbinder; public abstract class BaseActivity extends AppCompatActivity { private Unbinder unbinder; + protected MyUser user; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); + this.user = NutritionMaster.user; setContentView(getLayoutId()); unbinder = ButterKnife.bind(this); initViews(savedInstanceState); initToolBar(); - } + } /** @@ -85,4 +91,22 @@ public abstract class BaseActivity extends AppCompatActivity { super.onDestroy(); unbinder.unbind(); } + + protected void upUser() { + NutritionMaster.user = user; + Logger.d("用户信息已改"+NutritionMaster.user.toString()); + } + + @Override + protected void onResume() { + super.onResume(); + backChangeData(); + } + + /** + * 填写完信息返回Activity调用 + */ + protected void backChangeData() { + + } } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/base/BaseDialog.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/base/BaseDialog.java new file mode 100644 index 0000000..ccb41a6 --- /dev/null +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/base/BaseDialog.java @@ -0,0 +1,30 @@ +package com.example.ninefourone.nutritionmaster.base; + +import android.content.Context; +import android.support.annotation.NonNull; +import android.support.v7.app.AlertDialog; + +import com.example.ninefourone.nutritionmaster.NutritionMaster; +import com.example.ninefourone.nutritionmaster.bean.MyUser; + +/** + * Created by ScorpioMiku on 2018/10/1. + */ + +public abstract class BaseDialog extends AlertDialog.Builder { + + protected AlertDialog dialog; + + public BaseDialog(@NonNull Context context) { + super(context); + } + + protected void upUser(MyUser user) { + NutritionMaster.user = user; + } + + public void showDialog() { + dialog.show(); + } + +} diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/base/BaseFragment.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/base/BaseFragment.java index 6631ea7..fb21713 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/base/BaseFragment.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/base/BaseFragment.java @@ -9,6 +9,10 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import com.example.ninefourone.nutritionmaster.NutritionMaster; +import com.example.ninefourone.nutritionmaster.bean.MyUser; +import com.orhanobut.logger.Logger; + import butterknife.ButterKnife; import butterknife.Unbinder; @@ -17,6 +21,7 @@ import butterknife.Unbinder; */ public abstract class BaseFragment extends Fragment { + private MyUser user; private View parentView; private FragmentActivity activity; protected boolean isPrepared; @@ -39,6 +44,7 @@ public abstract class BaseFragment extends Fragment { super.onViewCreated(view, savedInstanceState); unbinder = ButterKnife.bind(this, view); initView(savedInstanceState); + this.user = NutritionMaster.user; } @@ -50,7 +56,6 @@ public abstract class BaseFragment extends Fragment { public abstract void initView(Bundle state); - @Override public void onResume() { super.onResume(); @@ -150,5 +155,9 @@ public abstract class BaseFragment extends Fragment { protected void finishTask() { } + protected void upUser() { + NutritionMaster.user = user; + Logger.d("用户信息已改"+NutritionMaster.user.toString()); + } } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/FoodMaterial.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/FoodMaterial.java index 02b9b02..1ebf997 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/FoodMaterial.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/FoodMaterial.java @@ -1,5 +1,7 @@ package com.example.ninefourone.nutritionmaster.bean; +import java.util.List; + public class FoodMaterial { /** diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/MyUser.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/MyUser.java index c95884d..feebe0d 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/MyUser.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/MyUser.java @@ -100,8 +100,8 @@ public class MyUser { return physical_name; } - public void setPhysical_name(String physical_name) { - this.physical_name = physical_name; + public void setPhysique(Physique physique) { + this.physique = physique; } public String getPassword() { diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/Physique.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/Physique.java index 3c2c7ee..3b0b8fd 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/Physique.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/Physique.java @@ -14,14 +14,6 @@ public class Physique { private ElementsBean elements; private List cure_material; - @Override - public String toString() { - return "Physique{" + - "physical_name='" + physical_name + '\'' + - ", elements=" + elements + - ", cure_material=" + cure_material + - '}'; - } public String getPhysical_name() { return physical_name; @@ -47,6 +39,62 @@ public class Physique { this.cure_material = cure_material; } + + private String imageUrl; + private String expression; + private String characteristic; + private String mentality; + private String matters; + + + public String getImageUrl() { + return imageUrl; + } + + public void setImageUrl(String imageUrl) { + this.imageUrl = imageUrl; + } + + public String getExpression() { + return expression; + } + + public void setExpression(String expression) { + this.expression = expression; + } + + public String getCharacteristic() { + return characteristic; + } + + public void setCharacteristic(String characteristic) { + this.characteristic = characteristic; + } + + public String getMentality() { + return mentality; + } + + public void setMentality(String mentality) { + this.mentality = mentality; + } + + public String getMatters() { + return matters; + } + + public void setMatters(String matters) { + this.matters = matters; + } + + @Override + public String toString() { + return "Physique{" + + "physical_name='" + physical_name + '\'' + + ", cure_material=" + cure_material + + '}'; + } + public static class ElementsBean { /** * id : 81 @@ -343,5 +391,6 @@ public class Physique { public void setThiamine(float thiamine) { this.thiamine = thiamine; } + } } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/User.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/User.java deleted file mode 100644 index 54c888c..0000000 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/User.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.example.ninefourone.nutritionmaster.bean; - -/** - * Created by ScorpioMiku on 2018/8/30. - */ - -public class User { - private float height; - private float weight; - private float BMI; - private String sex; - private int age; - private String job; -} diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/camera/FoodMaterialCamera.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/camera/FoodMaterialCamera.java index 2477de1..0c15f16 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/camera/FoodMaterialCamera.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/camera/FoodMaterialCamera.java @@ -7,6 +7,7 @@ import android.hardware.Camera; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; +import android.view.Display; import android.view.Surface; import android.view.View; import android.view.Window; @@ -17,6 +18,7 @@ import android.widget.TextView; import com.example.ninefourone.nutritionmaster.R; import com.example.ninefourone.nutritionmaster.utils.MessageUtils; +import com.orhanobut.logger.Logger; import butterknife.BindView; import butterknife.ButterKnife; @@ -42,6 +44,8 @@ public class FoodMaterialCamera extends AppCompatActivity { private CameraPreview mPreview; private int mCameraId = Camera.CameraInfo.CAMERA_FACING_BACK; + private int widthPixel; + private float heightPixel; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { @@ -55,6 +59,9 @@ public class FoodMaterialCamera extends AppCompatActivity { //注意:上面两个设置必须写在setContentView前面 setContentView(R.layout.cameras_layout); ButterKnife.bind(this); + Display display = getWindowManager().getDefaultDisplay(); + widthPixel = display.getWidth(); + heightPixel = display.getHeight() * (14.0f / 16); if (!checkCameraHardware(this)) { MessageUtils.MakeToast("不支持相机"); @@ -65,6 +72,12 @@ public class FoodMaterialCamera extends AppCompatActivity { setCameraDisplayOrientation(this, mCameraId, mCamera); } + @Override + public void onWindowFocusChanged(boolean hasFocus) { + super.onWindowFocusChanged(hasFocus); + + } + /** * 检查当前设备是否有相机 * @@ -109,8 +122,10 @@ public class FoodMaterialCamera extends AppCompatActivity { Camera c = null; try { c = Camera.open(); + Camera.Parameters mParameters = c.getParameters(); - mParameters.setPictureSize(720, 1280); + Logger.d(widthPixel+", "+heightPixel); + mParameters.setPictureSize(widthPixel, (int) heightPixel); c.setParameters(mParameters); } catch (Exception e) { e.printStackTrace(); diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/MainActivity.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/MainActivity.java index 22c45e4..2ee2ccd 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/MainActivity.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/MainActivity.java @@ -2,7 +2,7 @@ package com.example.ninefourone.nutritionmaster.modules; import android.annotation.SuppressLint; import android.content.Intent; -import android.graphics.Color; +import android.graphics.Paint; import android.os.Build; import android.os.Bundle; import android.support.annotation.NonNull; @@ -12,19 +12,26 @@ import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.View; -import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; +import android.widget.RelativeLayout; +import android.widget.TextView; import com.ToxicBakery.viewpager.transforms.CubeOutTransformer; +import com.akexorcist.roundcornerprogressbar.RoundCornerProgressBar; +import com.bumptech.glide.Glide; 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.camera.FoodMaterialCamera; -import com.example.ninefourone.nutritionmaster.modules.addinformation.AddActivity; +import com.example.ninefourone.nutritionmaster.modules.addinformation.AddInformationActivity; +import com.example.ninefourone.nutritionmaster.modules.addinformation.AddPhysiqueActivity; import com.example.ninefourone.nutritionmaster.modules.information.InformationActivity; 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.flyco.tablayout.SlidingTabLayout; @@ -64,8 +71,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) @@ -85,6 +92,26 @@ public class MainActivity extends BaseActivity { LinearLayout informationLayout; @BindView(R.id.title_layout) AppBarLayout titleLayout; + @BindView(R.id.user_nick_name) + TextView userNickName; + @BindView(R.id.user_occupation_text) + TextView userOccupationText; + @BindView(R.id.container) + RelativeLayout container; + @BindView(R.id.adder_infor) + TextView adderInfor; + @BindView(R.id.add_infor_ll) + 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; + @BindView(R.id.tool_bar_nickname) + TextView toolBarNickname; @Override @@ -105,7 +132,6 @@ public class MainActivity extends BaseActivity { } else { titleLayout.setBackgroundColor(getColor(R.color.bar_open)); } - } @Override @@ -123,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 内旋 @@ -136,7 +163,7 @@ public class MainActivity extends BaseActivity { @Override public void initToolBar() { - + toolBarNickname.setText(user.getUsername()); } @Override @@ -151,7 +178,7 @@ public class MainActivity extends BaseActivity { super.onCreate(savedInstanceState); // TODO: add setContentView(...) invocation ButterKnife.bind(this); - Logger.d("oncreate"); +// Logger.d("oncreate"); setSupportActionBar(toolBar); getSupportActionBar().setDisplayShowTitleEnabled(false); askPermission(); @@ -159,7 +186,7 @@ public class MainActivity extends BaseActivity { @Override public boolean onCreateOptionsMenu(Menu menu) { - Logger.d("oncreateMenu"); +// Logger.d("oncreateMenu"); getMenuInflater().inflate(R.menu.menu_main, menu); MenuItem item = menu.findItem(R.id.id_action_search); searchView.setMenuItem(item); @@ -168,7 +195,7 @@ public class MainActivity extends BaseActivity { @Override public boolean onPrepareOptionsMenu(Menu menu) { - Logger.d("prepareMenu"); +// Logger.d("prepareMenu"); return super.onPrepareOptionsMenu(menu); } @@ -277,6 +304,7 @@ public class MainActivity extends BaseActivity { } + /** * 初始化悬浮按钮 */ @@ -287,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); } }); @@ -298,6 +327,23 @@ public class MainActivity extends BaseActivity { boomMenuButton.addBuilder(builder2); } + + /** + * 初始化个人信息界面(UI) + */ + private void initInforView() { +// Logger.d(NutritionMaster.user.toString()); + adderInfor.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG); + if (NutritionMaster.user.getHeight() != 0) { + showInformation.setVisibility(View.VISIBLE); + adderInfor.setVisibility(View.INVISIBLE); + } else { + showInformation.setVisibility(View.INVISIBLE); + adderInfor.setVisibility(View.VISIBLE); + } + + } + /** * 请求权限 */ @@ -306,27 +352,140 @@ 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("权限赋予成功"); } - @OnClick({R.id.navigation_layout, R.id.add_information_button}) + + /** + * 点击事件 + * + * @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}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.navigation_layout: mDrawer.openMenu(); break; case R.id.add_information_button: - Intent intent = new Intent(MainActivity.this, AddActivity.class); + Intent intent = new Intent(MainActivity.this, AddPhysiqueActivity.class); startActivity(intent); break; + case R.id.information_layout: + Intent informationIntent = new Intent(MainActivity.this, InformationActivity.class); + startActivity(informationIntent); + break; + case R.id.adder_infor: + Intent i = new Intent(MainActivity.this, AddInformationActivity.class); + startActivity(i); + break; } } - @OnClick(R.id.information_layout) - public void onViewClicked() { - Intent intent = new Intent(MainActivity.this, InformationActivity.class); - startActivity(intent); + + @RequiresApi(api = Build.VERSION_CODES.M) + @Override + protected void backChangeData() { + super.backChangeData(); + initInforView(); + 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); + + + } } } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/addinformation/AddActivity.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/addinformation/AddActivity.java deleted file mode 100644 index 970588d..0000000 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/addinformation/AddActivity.java +++ /dev/null @@ -1,167 +0,0 @@ -package com.example.ninefourone.nutritionmaster.modules.addinformation; - -import android.os.Bundle; -import android.support.annotation.Nullable; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.CardView; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.view.Window; -import android.view.WindowManager; -import android.widget.BaseAdapter; -import android.widget.Button; -import android.widget.ImageView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import com.example.ninefourone.nutritionmaster.R; -import com.example.ninefourone.nutritionmaster.utils.ConstantUtils; -import com.example.ninefourone.nutritionmaster.utils.MessageUtils; -import com.github.czy1121.view.TurnCardListView; - -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.OnClick; - -public class AddActivity extends AppCompatActivity { - - @BindView(R.id.card_list) - TurnCardListView cardList; - @BindView(R.id.bottom_content) - RelativeLayout bottomContent; - @BindView(R.id.back_button) - ImageView backButton; - @BindView(R.id.result_layout) - CardView resultLayout; - - - // private int[] colors = {0xff3F51B5, 0xff673AB7, 0xff006064, 0xffC51162, 0xffFFEB3B, 0xff795548, 0xff9E9E9E}; - private int[] colors = {0xffdef6f9, 0xffd6eeec, 0xffB2EBF2, 0xffB2DFDB, 0xff8ed0ca, 0xff80CBC4, 0xff4DB6AC, 0xff3c948b}; - private Button[] firstButtons = new Button[ConstantUtils.questionList.length]; - private Button[] secondButtons = new Button[ConstantUtils.questionList.length]; - private Button[] thirdButtons = new Button[ConstantUtils.questionList.length]; - private TextView[] titleViews = new TextView[ConstantUtils.questionList.length]; - - private Button[][] buttonList; - - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - requestWindowFeature(Window.FEATURE_NO_TITLE); - //设置全屏 - getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, - WindowManager.LayoutParams.FLAG_FULLSCREEN); - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_add); - ButterKnife.bind(this); - buttonList = new Button[][]{ - firstButtons, - secondButtons, - thirdButtons - }; - initAddView(); - } - - private void initAddView() { - BaseAdapter adapter = new BaseAdapter() { - - - @Override - public int getCount() { - return colors.length; - } - - @Override - public Object getItem(int position) { - return position; - } - - @Override - public long getItemId(int position) { - return position; - } - - @Override - public View getView(final int position, View child, ViewGroup parent) { - - child = LayoutInflater.from(parent.getContext()).inflate(R.layout.add_item, parent, false); - child.findViewById(R.id.image).setBackgroundColor(colors[position]); - titleViews[position] = child.findViewById(R.id.title_view); - titleViews[position].setText(ConstantUtils.questionList[position]); - - firstButtons[position] = child.findViewById(R.id.choose_first); - firstButtons[position].setBackgroundColor(colors[position] + 30); - - - secondButtons[position] = child.findViewById(R.id.choose_second); - secondButtons[position].setBackgroundColor(colors[position] + 30); - - - thirdButtons[position] = child.findViewById(R.id.choose_third); - thirdButtons[position].setBackgroundColor(colors[position] + 30); - - - if (position != ConstantUtils.questionList.length - 1) { - firstButtons[position].setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - firstButtons[position].setBackgroundColor(colors[position] - 60); - secondButtons[position].setBackgroundColor(colors[position] + 30); - thirdButtons[position].setBackgroundColor(colors[position] + 30); - cardList.turnTo(position + 1); - } - }); - } else { - firstButtons[position].setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - resultLayout.setVisibility(View.VISIBLE); - cardList.setVisibility(View.INVISIBLE); - } - }); - } - secondButtons[position].setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - firstButtons[position].setBackgroundColor(colors[position] + 30); - thirdButtons[position].setBackgroundColor(colors[position] + 30); - secondButtons[position].setBackgroundColor(colors[position] - 60); - cardList.turnTo(position + 1); - } - }); - thirdButtons[position].setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - firstButtons[position].setBackgroundColor(colors[position] + 30); - secondButtons[position].setBackgroundColor(colors[position] + 30); - thirdButtons[position].setBackgroundColor(colors[position] - 60); - cardList.turnTo(position + 1); - } - }); - - for (int i = 0; i < ConstantUtils.answerList[position].length; i++) { - buttonList[i][position].setText(ConstantUtils.answerList[position][i]); - buttonList[i][position].setVisibility(View.VISIBLE); - } - return child; - } - - }; - - cardList.setAdapter(adapter); - cardList.setOnTurnListener(new TurnCardListView.OnTurnListener() { - @Override - public void onTurned(int position) { - bottomContent.setBackgroundColor(colors[position] - 60); - } - }); - - - } - - @OnClick(R.id.back_button) - public void onViewClicked() { - finish(); - } -} diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/addinformation/AddInformationActivity.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/addinformation/AddInformationActivity.java new file mode 100644 index 0000000..dc112fe --- /dev/null +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/addinformation/AddInformationActivity.java @@ -0,0 +1,179 @@ +package com.example.ninefourone.nutritionmaster.modules.addinformation; + +import android.content.Context; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.ImageView; +import android.widget.TextView; + +import com.bigkoo.pickerview.builder.OptionsPickerBuilder; +import com.bigkoo.pickerview.listener.OnOptionsSelectListener; +import com.bigkoo.pickerview.view.OptionsPickerView; +import com.example.ninefourone.nutritionmaster.NutritionMaster; +import com.example.ninefourone.nutritionmaster.R; +import com.example.ninefourone.nutritionmaster.base.BaseActivity; +import com.example.ninefourone.nutritionmaster.bean.MyUser; +import com.example.ninefourone.nutritionmaster.modules.MainActivity; +import com.example.ninefourone.nutritionmaster.utils.ConstantUtils; +import com.example.ninefourone.nutritionmaster.utils.MessageUtils; + +public class AddInformationActivity extends BaseActivity { + private TextView ageTextView; + private TextView heightTextView; + private TextView weightTextView; + private TextView sexTextView; + private TextView occupationTextView; + + private ImageView ageImageView; + private ImageView sexImageView; + private ImageView heightImageView; + private ImageView weightImageView; + private ImageView occupationImageView; + + private Button okButton; + + private OptionsPickerView agePicker; + private OptionsPickerView weightPicker; + private OptionsPickerView heightPicker; + private OptionsPickerView sexPicker; + private OptionsPickerView occupationPicker; + + private Context context; + + @Override + public int getLayoutId() { + return R.layout.add_information_activity; + } + + @Override + public void initViews(Bundle savedInstanceState) { + + context = this; + ageImageView = findViewById(R.id.age_image_view); + sexImageView = findViewById(R.id.sex_image_view); + heightImageView = findViewById(R.id.height_image_view); + weightImageView = findViewById(R.id.weight_image_view); + occupationImageView = findViewById(R.id.occupation_image_view); + + + ageTextView = findViewById(R.id.age_text_view); + sexTextView = findViewById(R.id.sex_text_view); + weightTextView = findViewById(R.id.weight_text_view); + heightTextView = findViewById(R.id.height_text_view); + occupationTextView = findViewById(R.id.occupation_text_view); + + okButton = findViewById(R.id.ok_button); + + occupationPicker = new OptionsPickerBuilder(context, new OnOptionsSelectListener() { + @Override + public void onOptionsSelect(int options1, int options2, int options3, View v) { + occupationTextView.setText(ConstantUtils.occupationList.get(options1)); + } + }).build(); + occupationPicker.setPicker(ConstantUtils.occupationList); + + agePicker = new OptionsPickerBuilder(context, new OnOptionsSelectListener() { + @Override + public void onOptionsSelect(int options1, int options2, int options3, View v) { + ageTextView.setText(ConstantUtils.ageList.get(options1)); + } + }).build(); + agePicker.setPicker(ConstantUtils.ageList); + agePicker.setSelectOptions(25); + + + sexPicker = new OptionsPickerBuilder(context, new OnOptionsSelectListener() { + @Override + public void onOptionsSelect(int options1, int options2, int options3, View v) { + sexTextView.setText(ConstantUtils.sexList.get(options1)); + } + }).build(); + sexPicker.setPicker(ConstantUtils.sexList); + + + heightPicker = new OptionsPickerBuilder(context, new OnOptionsSelectListener() { + @Override + public void onOptionsSelect(int options1, int options2, int options3, View v) { + heightTextView.setText(ConstantUtils.heightList.get(options1)); + } + }).build(); + heightPicker.setPicker(ConstantUtils.heightList); + heightPicker.setSelectOptions(119); + + weightPicker = new OptionsPickerBuilder(context, new OnOptionsSelectListener() { + @Override + public void onOptionsSelect(int options1, int options2, int options3, View v) { + weightTextView.setText(ConstantUtils.weightList.get(options1)); + } + }).build(); + weightPicker.setPicker(ConstantUtils.weightList); + weightPicker.setSelectOptions(59); + + + occupationImageView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + occupationPicker.show(); + } + }); + + ageImageView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + agePicker.show(); + } + }); + sexImageView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + sexPicker.show(); + } + }); + heightImageView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + heightPicker.show(); + } + }); + weightImageView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + weightPicker.show(); + } + }); + + okButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + + if (ageTextView.getText().toString().equals("年龄") || weightTextView.getText().toString().equals("体重") + || sexTextView.getText().toString().equals("性别") || heightTextView.getText().toString().equals("身高")|| + occupationTextView.getText().toString().equals("职业")) { + MessageUtils.MakeToast("请点击图片填写所有信息"); + } else { + user.setHeight(Integer.valueOf(heightTextView.getText().toString().split("c")[0])); + user.setWeight(Integer.valueOf(weightTextView.getText().toString().split("k")[0])); + user.setAge(Integer.valueOf(ageTextView.getText().toString().split("岁")[0])); + user.setSex(sexTextView.getText().toString()); + user.setOccupation_name(occupationTextView.getText().toString()); + upUser(); + MessageUtils.MakeToast("信息填写成功"); + finish(); + } + + } + }); + + } + + @Override + public void initToolBar() { + + } + + @Override + public void onPointerCaptureChanged(boolean hasCapture) { + + } +} diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/addinformation/AddPhysiqueActivity.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/addinformation/AddPhysiqueActivity.java new file mode 100644 index 0000000..cb99a0b --- /dev/null +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/addinformation/AddPhysiqueActivity.java @@ -0,0 +1,428 @@ +package com.example.ninefourone.nutritionmaster.modules.addinformation; + +import android.os.Bundle; +import android.support.v7.widget.CardView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.Window; +import android.view.WindowManager; +import android.widget.BaseAdapter; +import android.widget.Button; +import android.widget.ImageView; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import com.bumptech.glide.Glide; +import com.example.ninefourone.nutritionmaster.R; +import com.example.ninefourone.nutritionmaster.base.BaseActivity; +import com.example.ninefourone.nutritionmaster.bean.Physique; +import com.example.ninefourone.nutritionmaster.utils.ConstantUtils; +import com.example.ninefourone.nutritionmaster.utils.MessageUtils; +import com.github.czy1121.view.TurnCardListView; +import com.github.siyamed.shapeimageview.CircularImageView; +import com.orhanobut.logger.Logger; + +import java.util.Arrays; + +import butterknife.BindView; +import butterknife.ButterKnife; +import butterknife.OnClick; + +public class AddPhysiqueActivity extends BaseActivity { + + + @BindView(R.id.card_list) + TurnCardListView cardList; + @BindView(R.id.back_button) + ImageView backButton; + @BindView(R.id.result_layout) + CardView resultLayout; + @BindView(R.id.bottom_content) + RelativeLayout bottomContent; + @BindView(R.id.physique_image) + CircularImageView physiqueImage; + @BindView(R.id.physique_name_text_view) + TextView physiqueNameTextView; + @BindView(R.id.expression_text_view) + TextView expressionTextView; + @BindView(R.id.characteristic_text_view) + TextView characteristicTextView; + @BindView(R.id.mentality_text_view) + TextView mentalityTextView; + @BindView(R.id.matters_text_view) + TextView mattersTextView; + + + private String result = ""; + private String physique = "平和质"; + private float[] counter = {0, 0, 0, 0, 0, 0, 0, 0, -1}; + private String[] physiques = {"淤血质", "阴虚质", "阳虚质", "痰湿质", "湿热质", "气郁质", "气虚质", "平和质"}; + + // private int[] colors = {0xff3F51B5, 0xff673AB7, 0xff006064, 0xffC51162, 0xffFFEB3B, 0xff795548, 0xff9E9E9E}; + private int[] colors = {0xffdef6f9, 0xffd6eeec, 0xffB2EBF2, 0xffB2DFDB, 0xff8ed0ca, 0xff80CBC4, 0xff4DB6AC, 0xff3c948b}; + private Button[] firstButtons = new Button[ConstantUtils.questionList.length]; + private Button[] secondButtons = new Button[ConstantUtils.questionList.length]; + private Button[] thirdButtons = new Button[ConstantUtils.questionList.length]; + private TextView[] titleViews = new TextView[ConstantUtils.questionList.length]; + + private Button[][] buttonList; + + + @Override + public int getLayoutId() { + return R.layout.activity_add; + } + + @Override + public void initViews(Bundle savedInstanceState) { +// setContentView(); + ButterKnife.bind(this); + buttonList = new Button[][]{ + firstButtons, + secondButtons, + thirdButtons + }; + initAddView(); + } + + @Override + public void initToolBar() { + + } + + private void initAddView() { + BaseAdapter adapter = new BaseAdapter() { + + @Override + public int getCount() { + return colors.length; + } + + @Override + public Object getItem(int position) { + return position; + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public View getView(final int position, View child, ViewGroup parent) { + + + child = LayoutInflater.from(parent.getContext()).inflate(R.layout.add_item, parent, + false); + child.findViewById(R.id.image).setBackgroundColor(colors[position]); + titleViews[position] = child.findViewById(R.id.title_view); + titleViews[position].setText(ConstantUtils.questionList[position]); + + firstButtons[position] = child.findViewById(R.id.choose_first); + firstButtons[position].setBackgroundColor(colors[position] + 30); + + + secondButtons[position] = child.findViewById(R.id.choose_second); + secondButtons[position].setBackgroundColor(colors[position] + 30); + + + thirdButtons[position] = child.findViewById(R.id.choose_third); + thirdButtons[position].setBackgroundColor(colors[position] + 30); + + + if (position != ConstantUtils.questionList.length - 1) { + firstButtons[position].setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + firstButtons[position].setBackgroundColor(colors[position] - 60); + secondButtons[position].setBackgroundColor(colors[position] + 30); + thirdButtons[position].setBackgroundColor(colors[position] + 30); + cardList.turnTo(position + 1); + result += "1"; + } + }); + } else { + firstButtons[position].setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + getResult(); + resultLayout.setVisibility(View.VISIBLE); + cardList.setVisibility(View.INVISIBLE); + MessageUtils.MakeToast("已将体质信息上传至个人信息"); + + } + }); + } + secondButtons[position].setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + firstButtons[position].setBackgroundColor(colors[position] + 30); + thirdButtons[position].setBackgroundColor(colors[position] + 30); + secondButtons[position].setBackgroundColor(colors[position] - 60); + cardList.turnTo(position + 1); + result += "2"; + } + }); + thirdButtons[position].setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + firstButtons[position].setBackgroundColor(colors[position] + 30); + secondButtons[position].setBackgroundColor(colors[position] + 30); + thirdButtons[position].setBackgroundColor(colors[position] - 60); + cardList.turnTo(position + 1); + result += "3"; + } + }); + + for (int i = 0; i < ConstantUtils.answerList[position].length; i++) { + buttonList[i][position].setText(ConstantUtils.answerList[position][i]); + buttonList[i][position].setVisibility(View.VISIBLE); + } + return child; + } + + }; + + cardList.setAdapter(adapter); + cardList.setOnTurnListener(new TurnCardListView.OnTurnListener() { + @Override + public void onTurned(int position) { + bottomContent.setBackgroundColor(colors[position] - 60); + firstButtons[position].setEnabled(true); + secondButtons[position].setEnabled(true); + thirdButtons[position].setEnabled(true); + } + }); + + + } + + @OnClick(R.id.back_button) + public void onViewClicked() { + finish(); + } + + /** + * 判断体质 + */ + private void getResult() { + + float margin = 0.75f; + + String code = result.substring(1); + char[] codes = code.toCharArray(); + Logger.d(Arrays.toString(codes)); + + switch ((int) (codes[0]) - 48) { + case 1: + counter[0]++; + counter[1]++; + + counter[3] += margin; + break; + case 2: + counter[2]++; + counter[4]++; + counter[5]++; + counter[5] += 0.3; + + counter[3] += margin; + break; + case 3: + counter[6]++; + counter[7]++; + + counter[3] += margin; + break; + default: + Logger.e((int) (codes[0]) + " 没执行"); + } + switch ((int) (codes[1]) - 48) { + case 1: + counter[0]++; + + counter[2] += margin; + counter[3] += margin; + counter[6] += margin; + break; + case 2: + counter[4]++; + + counter[2] += margin; + counter[3] += margin; + counter[6] += margin; + break; + case 3: + counter[1]++; + counter[5]++; + counter[7]++; + + counter[2] += margin; + counter[3] += margin; + counter[6] += margin; + break; + } + switch ((int) (codes[2]) - 48) { + case 1: + counter[1]++; + counter[4]++; + + counter[0] += margin; + counter[2] += margin; + counter[5] += margin; + counter[6] += margin; + + break; + case 2: + counter[3]++; + + counter[0] += margin; + counter[2] += margin; + counter[5] += margin; + counter[6] += margin; + break; + case 3: + counter[7]++; + + counter[0] += margin; + counter[2] += margin; + counter[5] += margin; + counter[6] += margin; + break; + } + switch ((int) (codes[3]) - 48) { + case 1: + counter[0]++; + + counter[2]++; + counter[5]++; + counter[6]++; + + counter[3] += margin; + counter[4] += margin; + break; + case 2: + counter[7]++; + counter[1]++; + + counter[3] += margin; + counter[4] += margin; + break; + case 3: + break; + } + switch ((int) (codes[4]) - 48) { + case 1: + counter[3]++; + + counter[1] += margin; + counter[2] += margin; + counter[4] += margin; + counter[5] += margin; + counter[6] += margin; + break; + case 2: + counter[5]++; + + counter[1] += margin; + counter[2] += margin; + counter[4] += margin; + counter[5] += margin; + counter[6] += margin; + + break; + case 3: + counter[7]++; + + counter[1] += margin; + counter[2] += margin; + counter[4] += margin; + counter[5] += margin; + counter[6] += margin; + break; + } + switch ((int) (codes[5]) - 48) { + case 1: + counter[2]++; + counter[2]++; + + counter[0] += margin; + counter[3] += margin; + counter[4] += margin; + counter[5] += margin; + counter[6] += margin; + break; + case 2: + counter[1]++; + counter[1]++; + + counter[0] += margin; + counter[3] += margin; + counter[4] += margin; + counter[5] += margin; + counter[6] += margin; + break; + case 3: + counter[7]++; + + counter[0] += margin; + counter[3] += margin; + counter[4] += margin; + counter[5] += margin; + counter[6] += margin; + break; + } + + int maxIndex = -1; + for (int i = 0; i < counter.length; i++) { + if (counter[i] > counter[8]) { + maxIndex = i; + counter[8] = counter[i]; + } + } + physique = physiques[maxIndex]; + Logger.d(Arrays.toString(counter) + "\n" + physique); + Physique phy = new Physique(); + phy.setPhysical_name(physique); + phy.setCharacteristic(ConstantUtils.physiquesCharacteristics[maxIndex]); + phy.setExpression(ConstantUtils.physiquesExpressions[maxIndex]); + phy.setMentality(ConstantUtils.physiquesMentalitys[maxIndex]); + phy.setMatters(ConstantUtils.physiquesMatters[maxIndex]); + phy.setImageUrl(ConstantUtils.physiquesImageUrls[maxIndex]); + user.setPhysique(phy); + upUser(); + loadInformation(phy); + + } + + @Override + public void onPointerCaptureChanged(boolean hasCapture) { + + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + requestWindowFeature(Window.FEATURE_NO_TITLE); + //设置全屏 + getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, + WindowManager.LayoutParams.FLAG_FULLSCREEN); + super.onCreate(savedInstanceState); + // TODO: add setContentView(...) invocation + ButterKnife.bind(this); + } + + /** + * 加载显示的信息 + * + * @param physique + */ + private void loadInformation(Physique physique) { + Glide.with(AddPhysiqueActivity.this).load(physique.getImageUrl()).into(physiqueImage); + physiqueNameTextView.setText(physique.getPhysical_name()); + expressionTextView.setText(physique.getExpression()); + characteristicTextView.setText(physique.getCharacteristic()); + mentalityTextView.setText(physique.getMentality()); + mattersTextView.setText(physique.getMatters()); + } +} diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/login/LoginActivity.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/login/LoginActivity.java new file mode 100644 index 0000000..c75dae3 --- /dev/null +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/login/LoginActivity.java @@ -0,0 +1,352 @@ +package com.example.ninefourone.nutritionmaster.modules.login; + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.annotation.TargetApi; +import android.content.pm.PackageManager; +import android.support.annotation.NonNull; +import android.support.design.widget.Snackbar; +import android.support.v7.app.AppCompatActivity; +import android.app.LoaderManager.LoaderCallbacks; + +import android.content.CursorLoader; +import android.content.Loader; +import android.database.Cursor; +import android.net.Uri; +import android.os.AsyncTask; + +import android.os.Build; +import android.os.Bundle; +import android.provider.ContactsContract; +import android.text.TextUtils; +import android.view.KeyEvent; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.inputmethod.EditorInfo; +import android.widget.ArrayAdapter; +import android.widget.AutoCompleteTextView; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; + +import java.util.ArrayList; +import java.util.List; + +import com.example.ninefourone.nutritionmaster.R; + +import static android.Manifest.permission.READ_CONTACTS; + +/** + * A login screen that offers login via email/password. + */ +public class LoginActivity extends AppCompatActivity implements LoaderCallbacks { + + /** + * Id to identity READ_CONTACTS permission request. + */ + private static final int REQUEST_READ_CONTACTS = 0; + + /** + * A dummy authentication store containing known user names and passwords. + * TODO: remove after connecting to a real authentication system. + */ + private static final String[] DUMMY_CREDENTIALS = new String[]{ + "foo@example.com:hello", "bar@example.com:world" + }; + /** + * Keep track of the login task to ensure we can cancel it if requested. + */ + private UserLoginTask mAuthTask = null; + + // UI references. + private AutoCompleteTextView mEmailView; + private EditText mPasswordView; + private View mProgressView; + private View mLoginFormView; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_login); + // Set up the login form. + mEmailView = (AutoCompleteTextView) findViewById(R.id.email); + populateAutoComplete(); + + mPasswordView = (EditText) findViewById(R.id.password); + mPasswordView.setOnEditorActionListener(new TextView.OnEditorActionListener() { + @Override + public boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) { + if (id == EditorInfo.IME_ACTION_DONE || id == EditorInfo.IME_NULL) { + attemptLogin(); + return true; + } + return false; + } + }); + + Button mEmailSignInButton = (Button) findViewById(R.id.email_sign_in_button); + mEmailSignInButton.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View view) { + attemptLogin(); + } + }); + + mLoginFormView = findViewById(R.id.login_form); + mProgressView = findViewById(R.id.login_progress); + } + + private void populateAutoComplete() { + if (!mayRequestContacts()) { + return; + } + + getLoaderManager().initLoader(0, null, this); + } + + private boolean mayRequestContacts() { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { + return true; + } + if (checkSelfPermission(READ_CONTACTS) == PackageManager.PERMISSION_GRANTED) { + return true; + } + if (shouldShowRequestPermissionRationale(READ_CONTACTS)) { + Snackbar.make(mEmailView, R.string.permission_rationale, Snackbar.LENGTH_INDEFINITE) + .setAction(android.R.string.ok, new View.OnClickListener() { + @Override + @TargetApi(Build.VERSION_CODES.M) + public void onClick(View v) { + requestPermissions(new String[]{READ_CONTACTS}, REQUEST_READ_CONTACTS); + } + }); + } else { + requestPermissions(new String[]{READ_CONTACTS}, REQUEST_READ_CONTACTS); + } + return false; + } + + /** + * Callback received when a permissions request has been completed. + */ + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, + @NonNull int[] grantResults) { + if (requestCode == REQUEST_READ_CONTACTS) { + if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + populateAutoComplete(); + } + } + } + + + /** + * Attempts to sign in or register the account specified by the login form. + * If there are form errors (invalid email, missing fields, etc.), the + * errors are presented and no actual login attempt is made. + */ + private void attemptLogin() { + if (mAuthTask != null) { + return; + } + + // Reset errors. + mEmailView.setError(null); + mPasswordView.setError(null); + + // Store values at the time of the login attempt. + String email = mEmailView.getText().toString(); + String password = mPasswordView.getText().toString(); + + boolean cancel = false; + View focusView = null; + + // Check for a valid password, if the user entered one. + if (!TextUtils.isEmpty(password) && !isPasswordValid(password)) { + mPasswordView.setError(getString(R.string.error_invalid_password)); + focusView = mPasswordView; + cancel = true; + } + + // Check for a valid email address. + if (TextUtils.isEmpty(email)) { + mEmailView.setError(getString(R.string.error_field_required)); + focusView = mEmailView; + cancel = true; + } else if (!isEmailValid(email)) { + mEmailView.setError(getString(R.string.error_invalid_email)); + focusView = mEmailView; + cancel = true; + } + + if (cancel) { + // There was an error; don't attempt login and focus the first + // form field with an error. + focusView.requestFocus(); + } else { + // Show a progress spinner, and kick off a background task to + // perform the user login attempt. + showProgress(true); + mAuthTask = new UserLoginTask(email, password); + mAuthTask.execute((Void) null); + } + } + + private boolean isEmailValid(String email) { + //TODO: Replace this with your own logic + return email.contains("@"); + } + + private boolean isPasswordValid(String password) { + //TODO: Replace this with your own logic + return password.length() > 4; + } + + /** + * Shows the progress UI and hides the login form. + */ + @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2) + private void showProgress(final boolean show) { + // On Honeycomb MR2 we have the ViewPropertyAnimator APIs, which allow + // for very easy animations. If available, use these APIs to fade-in + // the progress spinner. + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) { + int shortAnimTime = getResources().getInteger(android.R.integer.config_shortAnimTime); + + mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE); + mLoginFormView.animate().setDuration(shortAnimTime).alpha( + show ? 0 : 1).setListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE); + } + }); + + mProgressView.setVisibility(show ? View.VISIBLE : View.GONE); + mProgressView.animate().setDuration(shortAnimTime).alpha( + show ? 1 : 0).setListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + mProgressView.setVisibility(show ? View.VISIBLE : View.GONE); + } + }); + } else { + // The ViewPropertyAnimator APIs are not available, so simply show + // and hide the relevant UI components. + mProgressView.setVisibility(show ? View.VISIBLE : View.GONE); + mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE); + } + } + + @Override + public Loader onCreateLoader(int i, Bundle bundle) { + return new CursorLoader(this, + // Retrieve data rows for the device user's 'profile' contact. + Uri.withAppendedPath(ContactsContract.Profile.CONTENT_URI, + ContactsContract.Contacts.Data.CONTENT_DIRECTORY), ProfileQuery.PROJECTION, + + // Select only email addresses. + ContactsContract.Contacts.Data.MIMETYPE + + " = ?", new String[]{ContactsContract.CommonDataKinds.Email + .CONTENT_ITEM_TYPE}, + + // Show primary email addresses first. Note that there won't be + // a primary email address if the user hasn't specified one. + ContactsContract.Contacts.Data.IS_PRIMARY + " DESC"); + } + + @Override + public void onLoadFinished(Loader cursorLoader, Cursor cursor) { + List emails = new ArrayList<>(); + cursor.moveToFirst(); + while (!cursor.isAfterLast()) { + emails.add(cursor.getString(ProfileQuery.ADDRESS)); + cursor.moveToNext(); + } + + addEmailsToAutoComplete(emails); + } + + @Override + public void onLoaderReset(Loader cursorLoader) { + + } + + private void addEmailsToAutoComplete(List emailAddressCollection) { + //Create adapter to tell the AutoCompleteTextView what to show in its dropdown list. + ArrayAdapter adapter = + new ArrayAdapter<>(LoginActivity.this, + android.R.layout.simple_dropdown_item_1line, emailAddressCollection); + + mEmailView.setAdapter(adapter); + } + + + private interface ProfileQuery { + String[] PROJECTION = { + ContactsContract.CommonDataKinds.Email.ADDRESS, + ContactsContract.CommonDataKinds.Email.IS_PRIMARY, + }; + + int ADDRESS = 0; + int IS_PRIMARY = 1; + } + + /** + * Represents an asynchronous login/registration task used to authenticate + * the user. + */ + public class UserLoginTask extends AsyncTask { + + private final String mEmail; + private final String mPassword; + + UserLoginTask(String email, String password) { + mEmail = email; + mPassword = password; + } + + @Override + protected Boolean doInBackground(Void... params) { + // TODO: attempt authentication against a network service. + + try { + // Simulate network access. + Thread.sleep(2000); + } catch (InterruptedException e) { + return false; + } + + for (String credential : DUMMY_CREDENTIALS) { + String[] pieces = credential.split(":"); + if (pieces[0].equals(mEmail)) { + // Account exists, return true if the password matches. + return pieces[1].equals(mPassword); + } + } + + // TODO: register the new account here. + return true; + } + + @Override + protected void onPostExecute(final Boolean success) { + mAuthTask = null; + showProgress(false); + + if (success) { + finish(); + } else { + mPasswordView.setError(getString(R.string.error_incorrect_password)); + mPasswordView.requestFocus(); + } + } + + @Override + protected void onCancelled() { + mAuthTask = null; + showProgress(false); + } + } +} + diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/bodyinformation/BodyInformationFragment.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/bodyinformation/BodyInformationFragment.java index 9cc37d4..30b36c2 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/bodyinformation/BodyInformationFragment.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/bodyinformation/BodyInformationFragment.java @@ -56,6 +56,8 @@ public class BodyInformationFragment extends BaseFragment { private ISportStepInterface iSportStepInterface; + private ServiceConnection coon; + @Override public int getLayoutResId() { @@ -94,7 +96,7 @@ public class BodyInformationFragment extends BaseFragment { //开启计步 Intent stepCounterStart = new Intent(getActivity(), TodayStepService.class); getActivity().startService(stepCounterStart); - getActivity().bindService(stepCounterStart, new ServiceConnection() { + coon = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { iSportStepInterface = ISportStepInterface.Stub.asInterface(service); @@ -111,7 +113,8 @@ public class BodyInformationFragment extends BaseFragment { public void onServiceDisconnected(ComponentName name) { } - }, Context.BIND_AUTO_CREATE); + }; + getActivity().bindService(stepCounterStart, coon, Context.BIND_AUTO_CREATE); } /** @@ -172,4 +175,9 @@ public class BodyInformationFragment extends BaseFragment { ChartDrawer.initSingleLineChart(stepLineChart, stepPointValues, "步数"); } + @Override + public void onDestroy() { + super.onDestroy(); + getActivity().unbindService(coon); + } } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/customization/CustomizationFragment.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/customization/CustomizationFragment.java index daebe4e..88d4bf9 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/customization/CustomizationFragment.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/customization/CustomizationFragment.java @@ -15,6 +15,7 @@ import com.example.ninefourone.nutritionmaster.bean.DailyCard; import com.example.ninefourone.nutritionmaster.cardconfig.CardConfig; import com.example.ninefourone.nutritionmaster.cardconfig.CardItemTouchCallBack; import com.example.ninefourone.nutritionmaster.cardconfig.SwipeCardLayoutManager; +import com.example.ninefourone.nutritionmaster.utils.CalculateUtils; import com.example.ninefourone.nutritionmaster.utils.ConstantUtils; import java.util.ArrayList; @@ -80,11 +81,20 @@ public class CustomizationFragment extends BaseFragment { @Override protected void loadData() { super.loadData(); - for (int i = 1; i <= 7; i++) { + for (int i = CalculateUtils.getWeek(); i <= 7; i++) { // mDataList.add("周" + ConstantUtils.arab2Chinese(i) + "美食普"); DailyCard dailyCard = new DailyCard( "周" + ConstantUtils.arab2Chinese(i) + "美食普", - "这里放描述", + ConstantUtils.dailyDescibes[i-1], + picList[i - 1] + ); + mDataList.add(dailyCard); + } + for (int i = 1; i < CalculateUtils.getWeek(); i++) { +// mDataList.add("周" + ConstantUtils.arab2Chinese(i) + "美食普"); + DailyCard dailyCard = new DailyCard( + "周" + ConstantUtils.arab2Chinese(i) + "美食普", + ConstantUtils.dailyDescibes[i-1], picList[i - 1] ); mDataList.add(dailyCard); diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/ui/InformationDialog.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/ui/InformationDialog.java new file mode 100644 index 0000000..6b9cf5e --- /dev/null +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/ui/InformationDialog.java @@ -0,0 +1,128 @@ +package com.example.ninefourone.nutritionmaster.ui; + +import android.content.Context; +import android.support.annotation.NonNull; +import android.view.View; +import android.widget.Button; +import android.widget.ImageView; + + +import android.widget.TextView; + +import com.bigkoo.pickerview.builder.OptionsPickerBuilder; +import com.bigkoo.pickerview.listener.OnOptionsSelectListener; +import com.bigkoo.pickerview.view.OptionsPickerView; +import com.example.ninefourone.nutritionmaster.R; +import com.example.ninefourone.nutritionmaster.base.BaseDialog; +import com.example.ninefourone.nutritionmaster.utils.ConstantUtils; + +/** + * Created by ScorpioMiku on 2018/10/1. + */ + +public class InformationDialog extends BaseDialog { + + + private TextView ageTextView; + private TextView heightTextView; + private TextView weightTextView; + private TextView sexTextView; + + private ImageView ageImageView; + private ImageView sexImageView; + private ImageView heightImageView; + private ImageView weightImageView; + + private Button okButton; + + private OptionsPickerView agePicker; + private OptionsPickerView weightPicker; + private OptionsPickerView heightPicker; + private OptionsPickerView sexPicker; + + + public InformationDialog(@NonNull Context context) { + super(context); + dialog = create(); + + + View view = View.inflate(context, R.layout.add_information_activity, null); + dialog.setView(view); + + ageImageView = view.findViewById(R.id.age_image_view); + sexImageView = view.findViewById(R.id.sex_image_view); + heightImageView = view.findViewById(R.id.height_image_view); + weightImageView = view.findViewById(R.id.weight_image_view); + + + ageTextView = view.findViewById(R.id.age_text_view); + sexTextView = view.findViewById(R.id.sex_text_view); + weightTextView = view.findViewById(R.id.weight_text_view); + heightTextView = view.findViewById(R.id.height_text_view); + + okButton = view.findViewById(R.id.ok_button); + + agePicker = new OptionsPickerBuilder(context, new OnOptionsSelectListener() { + @Override + public void onOptionsSelect(int options1, int options2, int options3, View v) { + ageTextView.setText(ConstantUtils.ageList.get(options1)); + } + }).build(); + agePicker.setPicker(ConstantUtils.ageList); + + + sexPicker = new OptionsPickerBuilder(context, new OnOptionsSelectListener() { + @Override + public void onOptionsSelect(int options1, int options2, int options3, View v) { + sexTextView.setText(ConstantUtils.ageList.get(options1)); + } + }).build(); + sexPicker.setPicker(ConstantUtils.sexList); + + + heightPicker = new OptionsPickerBuilder(context, new OnOptionsSelectListener() { + @Override + public void onOptionsSelect(int options1, int options2, int options3, View v) { + heightTextView.setText(ConstantUtils.ageList.get(options1)); + } + }).build(); + heightPicker.setPicker(ConstantUtils.heightList); + + + weightPicker = new OptionsPickerBuilder(context, new OnOptionsSelectListener() { + @Override + public void onOptionsSelect(int options1, int options2, int options3, View v) { + weightTextView.setText(ConstantUtils.ageList.get(options1)); + } + }).build(); + weightPicker.setPicker(ConstantUtils.weightList); + + + ageImageView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + agePicker.show(); + } + }); + sexImageView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + sexPicker.show(); + } + }); + heightImageView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + heightPicker.show(); + } + }); + weightImageView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + weightPicker.show(); + } + }); + + + } +} diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/CalculateUtils.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/CalculateUtils.java index 65f90e8..a17fe70 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/CalculateUtils.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/CalculateUtils.java @@ -1,5 +1,9 @@ package com.example.ninefourone.nutritionmaster.utils; +import com.orhanobut.logger.Logger; + +import java.util.Calendar; + /** * Created by ScorpioMiku on 2018/8/29. */ @@ -14,8 +18,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); } @@ -56,4 +61,15 @@ public class CalculateUtils { return "重度肥胖"; } } + + /** + * 获取星期几 + * + * @return + */ + public static int getWeek() { + Calendar calendar = Calendar.getInstance(); + Logger.d( calendar.get(Calendar.DAY_OF_WEEK)); + return calendar.get(Calendar.DAY_OF_WEEK)-1; + } } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/ConstantUtils.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/ConstantUtils.java index f1bc04c..6a3767d 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/ConstantUtils.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/ConstantUtils.java @@ -7,6 +7,10 @@ import java.util.ArrayList; */ public class ConstantUtils { + + public static String[] dailyDescibes = {"快乐陪周一", "幸运伴周二", "轻松有周三", "温馨携周四", + "愉悦同周五", "休闲找周六", "潇洒属周日"}; + public static String arab2Chinese(int number) { switch (number) { case 1: @@ -36,19 +40,231 @@ public class ConstantUtils { "舌底经络颜色", "口腔整体情况", "整体生活精神状况", - "性格特点", - "食物温度偏向", + "生活中的小问题", + "饮用水温度偏向", "揭晓结果" }; public static String[][] answerList = new String[][]{ {"开始吧"}, - {"偏暗红", "偏白", "淡红"}, - {"暗红", "细红", "不明显"}, + {"深红", "偏白", "淡红"}, + {"暗紫", "细红", "不明显"}, {"口舌干燥", "口黏苔腻", "还算正常"}, {"沉寂易疲劳", "精力充沛"}, - {"内向", "开朗"}, + {"多汗无力、易胖", "多愁善感", "都不"}, {"烫的", "冷的", "没有特别喜欢的"}, {"查看"} }; + + public static ArrayList occupationList = new ArrayList<>(); + + public static ArrayList ageList = new ArrayList<>(); + + public static ArrayList sexList = new ArrayList<>(); + + public static ArrayList heightList = new ArrayList<>(); + + public static ArrayList weightList = new ArrayList<>(); + + static { + for (int i = 1; i <= 200; i++) { + if (i < 100) { + ageList.add(i + "岁"); + } + heightList.add(i + 50 + "cm"); + if (i < 150) { + weightList.add(i + "kg"); + } + } + sexList.add("男"); + sexList.add("女"); + } + + /** + * 全国平均体重 index 0 对应 3岁 + */ + public static ArrayList averageBoyHeight = new ArrayList<>(); + + public static ArrayList 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 averageBoyWeight = new ArrayList<>(); + public static ArrayList 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)); + + } + + + public static String[] physiquesImageUrls = { + "https://ws1.sinaimg.cn/large/0067fcixly1fvtqro2rrhj30c90eydgu.jpg", + "https://ws1.sinaimg.cn/large/0067fcixly1fvtqro060mj30c90go755.jpg", + "https://ws1.sinaimg.cn/large/0067fcixly1fvtqrnxrnmj30c90go3zp.jpg", + "https://ws1.sinaimg.cn/large/0067fcixly1fvtqwvxzwjj30c90goaav.jpg", + "https://ws1.sinaimg.cn/large/0067fcixly1fvtqrnuqb3j30c90goaar.jpg", + "https://ws1.sinaimg.cn/large/0067fcixly1fvtqrogotyj30c90goq3u.jpg", + "https://ws1.sinaimg.cn/large/0067fcixly1fvtqrodvjij30b70cvdlq.jpg", + "https://ws1.sinaimg.cn/large/0067fcixly1fvtqro7ij0j30970dpafy.jpg" + }; + + public static String[] physiquesExpressions = { + "平素面色晦暗,皮肤偏暗或色素沉着,容易出现瘀斑,易患疼痛,口唇暗淡或紫,舌质暗有点、片状瘀斑,舌下静脉曲张。" + + "眼眶暗黑,鼻部暗滞,发易脱落,皮肤发干,或有出血倾向、吐血,女性多见痛经、闭经、或经血中多有血块,或经色紫黑有块。", + "手足心热,平常容易口燥咽干,鼻微干,口渴喜冷饮,大便干燥,面色潮红、有烘热感,眼睛干涩视物昏花,唇红微干," + + "皮肤偏干、易生皱纹,眩晕耳鸣,睡眠差,小便短涩。", + "四季怕冷,手足不温,喜热饮食,精神不振,睡眠偏多。面色柔白,目周晦暗,口唇色淡,毛发易落,大便溏稀,小便清长。", + "面部皮肤油脂较多,多汗且黏,胸闷,痰多,面色淡黄而暗,眼胞微浮,容易困倦,口黏腻或甜,身重不爽,喜食肥甘甜黏,大便正常或不实,小便不多或微混,平素舌体胖大。", + "平素面垢油光,容易口苦口干,身重困倦,易生痤疮,体偏胖或苍瘦,心烦懈怠,眼目红赤,大便燥结或黏滞,小便短赤,男易阴囊潮湿,女易带下增多等。", + "性格内向不稳定,忧郁脆弱,敏感多疑,对精神刺激适应能力较差,平常忧郁面貌,神情多烦闷不乐。胸胁胀满,或走窜疼痛,多伴善太息,或嗳气呃逆,或咽间有异物感,或乳房胀痛,睡眠较差,食欲减退,惊悸怔忡,健忘,痰多,大便多干,小便正常。", + "平常说话语音低怯,气短懒言,容易疲乏,精神不振,易出汗。面色偏黄或晄白,目光少神,唇色少华,毛发不华,容易头晕,记忆力减退,大便不成形,或便后仍觉未尽,小便正常或偏多。", + "面色、肤色润泽,头发稠密有光泽,目光有神,鼻色明润,嗅觉、味觉良好,唇色红润,不易疲劳,精力充沛,耐受寒热,睡眠良好,食欲好,二便正常。" + }; + + public static String[] physiquesCharacteristics = { + "瘀血质的人,血行不畅,临床常呈现肤色晦暗、色素沉着、瘀斑、性格抑郁、健忘,舌质紫黯或有瘀点、舌下络脉紫黯或增粗,脉涩。易患痛证、血证、症瘕等。", + "阴虚质的人,阴液亏少,耐冬不耐夏,临床常呈现口燥咽干、手足心热、喜冷饮、大便干燥,舌红少津,脉细数。一般体形偏瘦,易患虚劳、遗精、失眠等。", + "阳虚质的人,阳气不足,临床常呈现畏寒怕冷、手足不暖、喜热饮食、精神不振,舌淡胖嫩,脉迟沉。一般性格内向,易患痰饮、肿胀、泄泻等。", + "痰湿质的人,痰湿凝聚,临床常以形体肥胖、多汗无力、胸闷痰多、腹部肥满、口黏苔腻等痰湿表现为主要特征。", + "湿热质的人,湿热内蕴,临床常呈现面垢油光、口苦、心烦急躁、口苦口干、身重困倦、大便粘滞不畅或燥结、小便短黄、男性易阴囊潮湿、女性带下增多,易生痤疮,舌质偏红、苔黄腻,脉滑数。", + "气郁质的人,气机郁滞,临床常呈现精神抑郁、忧虑脆弱、多愁善感、易患脏燥、梅核气、百合病等病症。舌淡红、苔薄白,脉弦。", + "气虚质的人,元气不足,临床常呈现疲乏气短、自汗懒言、语音低弱、精神不振、肌肉松软不实,舌淡红、边有齿痕,脉虚。易患感冒、内脏下垂、病后康复缓慢等。", + "平和质的人,阴阳气血调和,体态适中、面色红润、精力充沛、体形匀称健壮、耐受寒热、睡眠良好、患病较少,对自然环境和社会环境适应能力较强。" + }; + + public static String[] physiquesMentalitys = { + "性情急躁,心情易烦,健忘。", + "性情急躁,外向好动,活泼。", + "性格多沉静、内向。", + "性格偏温和,稳重,恭谦,豁达,多善于忍耐。", + "性情多急躁易怒。", + "性格内向不稳定,忧郁脆弱,敏感多疑。", + "情绪不稳定,胆小,不喜欢冒险。", + "性格随和开朗。" + }; + public static String[] physiquesMatters = { + "瘀血质气机失调,血行不畅,应慎食雪糕、冰淇淋、冰冻饮料等寒凉之品,以免影响气血运行。保持心情舒畅,是淤血质调理的重要环节。", + "阴虚质体内阴液不足,药膳应慎食辛辣刺激、煎炒爆炸以及羊肉、狗肉等温热之物,以免耗伤阴液。", + "阳虚质阳气亏虚,药膳应忌生冷寒凉,即使盛夏,也不主张多吃诸如西瓜、梨、苦瓜等寒凉生冷之物,以免损伤阳气。", + "痰湿质痰湿偏盛,药膳应慎食肥甘油腻、厚味滋补之物,以免助湿生痰。", + "湿热质体内湿热偏盛,药膳应慎食牛肉、狗肉、鹿肉、辣椒、姜、葱及肥甘厚味之物,以免助湿生热。", + "气郁质气机不畅,心情抑郁,,应慎食雪糕、冰淇淋、冰冻饮料等寒凉之品,以免影响气血运行。同淤血质一样,保持心情舒畅,也是气郁质调理的重要环节。", + "气虚质中气不足,脾胃消化功能较弱,药膳应忌过于粘腻、寒凉或难以消化之物,以免食滞难化,影响脾胃功能。", + "平和质人阴阳气血平衡,药膳调理不可偏补、贪补,以保持人体阴阳平衡状态最为紧要。所谓“不伤不扰,顺其自然”。" + }; + } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtils.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtils.java index ab6201c..1ba9299 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtils.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtils.java @@ -3,6 +3,10 @@ package com.example.ninefourone.nutritionmaster.utils; import com.google.gson.Gson; import com.sun.istack.internal.Nullable; +import com.example.ninefourone.nutritionmaster.bean.Occupation; +import com.google.gson.Gson; +import com.orhanobut.logger.Logger; + import java.io.IOException; import java.lang.reflect.Field; import java.util.ArrayList; @@ -148,6 +152,12 @@ public class WebUtil { mClient.newCall(request).enqueue(callback); } + public static void getAllOccupations(Callback callback) { + OkHttpClient mClient = new OkHttpClient(); + Request request = new Request.Builder().url("http://120.77.182.38/occupation/").build(); + mClient.newCall(request).enqueue(callback); + } + /** * 获取体质需要的食材 * { diff --git a/app/src/main/res/drawable/ic_defualt_avatar.xml b/app/src/main/res/drawable/ic_defualt_avatar.xml new file mode 100644 index 0000000..4bb1d4e --- /dev/null +++ b/app/src/main/res/drawable/ic_defualt_avatar.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_dialog_age.xml b/app/src/main/res/drawable/ic_dialog_age.xml new file mode 100644 index 0000000..a3f5f27 --- /dev/null +++ b/app/src/main/res/drawable/ic_dialog_age.xml @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_dialog_height.xml b/app/src/main/res/drawable/ic_dialog_height.xml new file mode 100644 index 0000000..9835d8e --- /dev/null +++ b/app/src/main/res/drawable/ic_dialog_height.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_dialog_sex.xml b/app/src/main/res/drawable/ic_dialog_sex.xml new file mode 100644 index 0000000..ab68bd5 --- /dev/null +++ b/app/src/main/res/drawable/ic_dialog_sex.xml @@ -0,0 +1,9 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/ic_dialog_weight.xml b/app/src/main/res/drawable/ic_dialog_weight.xml new file mode 100644 index 0000000..2b938ec --- /dev/null +++ b/app/src/main/res/drawable/ic_dialog_weight.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_occupation.xml b/app/src/main/res/drawable/ic_occupation.xml new file mode 100644 index 0000000..4319ce9 --- /dev/null +++ b/app/src/main/res/drawable/ic_occupation.xml @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_add.xml b/app/src/main/res/layout/activity_add.xml index 14ccad5..17d5182 100644 --- a/app/src/main/res/layout/activity_add.xml +++ b/app/src/main/res/layout/activity_add.xml @@ -6,7 +6,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:background="#b0ce93" - tools:context="com.example.ninefourone.nutritionmaster.modules.addinformation.AddActivity"> + tools:context="com.example.ninefourone.nutritionmaster.modules.addinformation.AddPhysiqueActivity"> + app:cardCornerRadius="20dp" + app:cardElevation="0dp"> @@ -67,140 +71,153 @@ - + android:layout_height="match_parent"> - - + android:orientation="vertical"> - - + + + + + + + + android:orientation="vertical"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/app/src/main/res/layout/activity_add_information.xml b/app/src/main/res/layout/activity_add_information.xml new file mode 100644 index 0000000..a37234e --- /dev/null +++ b/app/src/main/res/layout/activity_add_information.xml @@ -0,0 +1,9 @@ + + + + diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml new file mode 100644 index 0000000..068a197 --- /dev/null +++ b/app/src/main/res/layout/activity_login.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + +