diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1f28d26..59dc3d7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -60,7 +60,7 @@ - + \ 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 31b7f5f..3284f17 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/NutritionMaster.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/NutritionMaster.java @@ -4,10 +4,14 @@ import android.app.Activity; import android.app.Application; import android.os.Bundle; +import com.example.ninefourone.nutritionmaster.bean.Element; import com.example.ninefourone.nutritionmaster.bean.FoodMenu; +import com.example.ninefourone.nutritionmaster.bean.Illness; import com.example.ninefourone.nutritionmaster.bean.MyUser; import com.example.ninefourone.nutritionmaster.bean.Occupation; +import com.example.ninefourone.nutritionmaster.bean.Physique; +import com.example.ninefourone.nutritionmaster.utils.CalculateUtils; import com.example.ninefourone.nutritionmaster.utils.ConstantUtils; import com.example.ninefourone.nutritionmaster.utils.WebUtil; import com.google.gson.Gson; @@ -39,7 +43,16 @@ public class NutritionMaster extends Application { public static NutritionMaster mInstance; private int appCount = 0; - public static MyUser user; + public static MyUser user = null; + public static Physique physique = null; + public static Occupation occupation = null; + public static Element element = null; + public static Illness illness = null; + + public static Element calculatedElement = null; + + public static int randomSeed = CalculateUtils.getWeek(); + @Override public void onCreate() { @@ -176,9 +189,9 @@ public class NutritionMaster extends Application { // 获取所有响应头字段 Map> map = connection.getHeaderFields(); // 遍历所有的响应头字段 - for (String key : map.keySet()) { - System.err.println(key + "--->" + map.get(key)); - } +// for (String key : map.keySet()) { +// System.err.println(key + "--->" + map.get(key)); +// } // 定义 BufferedReader输入流来读取URL的响应 BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String result = ""; @@ -203,6 +216,7 @@ public class NutritionMaster extends Application { */ private void initYouDao() { YouDaoApplication.init(this, ConstantUtils.YOUDAO_APPKEY); + } 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 6a0610b..3622798 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 @@ -10,9 +10,11 @@ import android.widget.ImageView; import android.widget.TextView; import com.bumptech.glide.Glide; +import com.example.ninefourone.nutritionmaster.NutritionMaster; import com.example.ninefourone.nutritionmaster.R; import com.example.ninefourone.nutritionmaster.bean.DailyCard; import com.example.ninefourone.nutritionmaster.modules.viewpagerfragments.customization.CustomizationActivity; +import com.example.ninefourone.nutritionmaster.utils.MessageUtils; import com.orhanobut.logger.Logger; import java.util.ArrayList; @@ -45,15 +47,17 @@ public class CardHolder extends RecyclerView.ViewHolder { 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", dailyCard.getTitle()); -// Logger.d(text); itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - context.startActivity(i); + if (NutritionMaster.physique == null || NutritionMaster.occupation == null) { + MessageUtils.MakeToast("填写信息才能使用哦~"); + } else { + context.startActivity(i); + } } }); } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/CustomizationAdapter.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/CustomizationAdapter.java index 8a36fdc..9950f7a 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/CustomizationAdapter.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/CustomizationAdapter.java @@ -1,25 +1,45 @@ package com.example.ninefourone.nutritionmaster.adapter; +import android.content.Context; import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; import android.view.ViewGroup; +import com.example.ninefourone.nutritionmaster.R; +import com.example.ninefourone.nutritionmaster.bean.FoodMenu; +import com.example.ninefourone.nutritionmaster.modules.viewpagerfragments.customization.CustomizationActivity; + +import java.util.ArrayList; + /** * Created by ScorpioMiku on 2018/9/24. */ -public class CustomizationAdapter extends RecyclerView.Adapter { - @Override - public CardHolder onCreateViewHolder(ViewGroup parent, int viewType) { - return null; +public class CustomizationAdapter extends RecyclerView.Adapter { + private ArrayList mList; + private Context context; + private int flag; + + public CustomizationAdapter(ArrayList mList, Context context, int flag) { + this.mList = mList; + this.context = context; + this.flag = flag; } @Override - public void onBindViewHolder(CardHolder holder, int position) { + public CustomizationHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(context).inflate(R.layout.customization_item, parent, false); + return new CustomizationHolder(view); + } + @Override + public void onBindViewHolder(CustomizationHolder holder, int position) { + holder.bindView(mList.get(position)); } @Override public int getItemCount() { - return 0; + return mList.size(); } } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/CustomizationHolder.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/CustomizationHolder.java index 8dd7e10..4a3d634 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/CustomizationHolder.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/CustomizationHolder.java @@ -1,14 +1,93 @@ package com.example.ninefourone.nutritionmaster.adapter; +import android.content.Intent; import android.support.v7.widget.RecyclerView; import android.view.View; +import android.widget.ImageView; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import com.bumptech.glide.Glide; +import com.example.ninefourone.nutritionmaster.NutritionMaster; +import com.example.ninefourone.nutritionmaster.R; +import com.example.ninefourone.nutritionmaster.bean.Element; +import com.example.ninefourone.nutritionmaster.bean.FoodMenu; +import com.example.ninefourone.nutritionmaster.bean.RecommendFood; +import com.example.ninefourone.nutritionmaster.modules.RecipeActivity.RecipeActivity; + +import java.util.Random; + +import butterknife.BindView; +import butterknife.ButterKnife; +import butterknife.OnClick; /** * Created by ScorpioMiku on 2018/9/24. */ public class CustomizationHolder extends RecyclerView.ViewHolder { + @BindView(R.id.customization_item_image) + ImageView customizationItemImage; + @BindView(R.id.food_name) + TextView foodName; + @BindView(R.id.food_quantity) + TextView foodQuantity; + @BindView(R.id.arch) + ImageView arch; + @BindView(R.id.food_energy) + TextView foodEnergy; + @BindView(R.id.click) + RelativeLayout click; + public CustomizationHolder(View itemView) { super(itemView); + ButterKnife.bind(this, itemView); } + + public void bindView(final FoodMenu foodMenu) { + Glide.with(itemView.getContext()).load(foodMenu.getImage_url()).into(customizationItemImage); + foodName.setText(foodMenu.getName()); + try { + Element element = NutritionMaster.element.calculateData(NutritionMaster.user); + double calorieQuantity = element.getCalorie() - NutritionMaster.user.getEaten_elements().getCalorie(); + double quantity = calorieQuantity / foodMenu.getCalorie(); + Random random = new Random((int) foodMenu.getElements().getCalorie()); + if (quantity > 200) { + quantity = 150 + random.nextInt(50); + } else if (quantity < 50) { + quantity = 50 + random.nextInt(50); + } +// Logger.d(foodMenu.getCalorie()); + int energy = (int) (foodMenu.getElements().getCalorie() * quantity / 100); + energy = checkEnergy(energy); + foodEnergy.setText(energy + "千卡"); + foodQuantity.setText((int) quantity + "克"); + + final Intent intent = new Intent(itemView.getContext().getApplicationContext(), RecipeActivity.class); + RecommendFood recommendFood = new RecommendFood(foodMenu, 1); + intent.putExtra("SEND_OBJECT", recommendFood); + click.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + itemView.getContext().getApplicationContext().startActivity(intent); + } + }); + } catch (CloneNotSupportedException e) { + e.printStackTrace(); + } + + + } + + private int checkEnergy(int energy) { + if (energy < 30) { + return checkEnergy(energy * 2); + } else if (energy > 250) { + return checkEnergy(energy - 50); + } else { + return energy; + } + } + + } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/HomePagerAdapter.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/HomePagerAdapter.java index 9667200..52da2b6 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/HomePagerAdapter.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/HomePagerAdapter.java @@ -54,4 +54,8 @@ public class HomePagerAdapter extends FragmentPagerAdapter { public CharSequence getPageTitle(int position) { return TITLES[position]; } + + public void rereshUI() { + ((BodyInformationFragment) fragments[1]).refreshUI(); + } } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/MaterialAdapter.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/MaterialAdapter.java index b83e46e..655812c 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/MaterialAdapter.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/MaterialAdapter.java @@ -7,19 +7,21 @@ import android.view.View; import android.view.ViewGroup; import com.example.ninefourone.nutritionmaster.R; -import com.example.ninefourone.nutritionmaster.bean.Material; +import com.example.ninefourone.nutritionmaster.bean.FoodMaterial; +import com.example.ninefourone.nutritionmaster.bean.FoodMenu; import java.util.ArrayList; +import java.util.List; /** * Created by ScorpioMiku on 2018/9/9. */ public class MaterialAdapter extends RecyclerView.Adapter { - private ArrayList mList; + private List mList; private Context mContext; - public MaterialAdapter(ArrayList mList, Context mContext) { + public MaterialAdapter(List mList, Context mContext) { this.mList = mList; this.mContext = mContext; } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/MaterialHolder.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/MaterialHolder.java index 1daabff..21e9bad 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/MaterialHolder.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/MaterialHolder.java @@ -5,7 +5,8 @@ import android.view.View; import android.widget.TextView; import com.example.ninefourone.nutritionmaster.R; -import com.example.ninefourone.nutritionmaster.bean.Material; +import com.example.ninefourone.nutritionmaster.bean.FoodMaterial; +import com.example.ninefourone.nutritionmaster.bean.FoodMenu; import butterknife.BindView; import butterknife.ButterKnife; @@ -24,11 +25,12 @@ public class MaterialHolder extends RecyclerView.ViewHolder { public MaterialHolder(View itemView) { super(itemView); - ButterKnife.bind(this,itemView); + ButterKnife.bind(this, itemView); } - public void bindView(Material material) { - weightNumber.setText(material.getWeight() + ""); - name.setText(material.getMaterialName()); + public void bindView(FoodMenu.CookQuantityBean cookQuantityBean) { + name.setText(cookQuantityBean.getMaterial()); + String weight = cookQuantityBean.getQuantity(); + weightNumber.setText(weight); } } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/MaterialResultAdapter.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/MaterialResultAdapter.java new file mode 100644 index 0000000..b695202 --- /dev/null +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/MaterialResultAdapter.java @@ -0,0 +1,42 @@ +package com.example.ninefourone.nutritionmaster.adapter; + +import android.content.Context; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.example.ninefourone.nutritionmaster.R; +import com.example.ninefourone.nutritionmaster.bean.FoodMenu; + +import java.util.ArrayList; + +/** + * Created by ScorpioMiku on 2018/10/7. + */ + +public class MaterialResultAdapter extends RecyclerView.Adapter { + private ArrayList foodMenus; + private Context context; + + public MaterialResultAdapter(ArrayList foodMenus, Context context) { + this.foodMenus = foodMenus; + this.context = context; + } + + @Override + public MaterialResultHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(context).inflate(R.layout.material_result_item, parent, false); + return new MaterialResultHolder(view); + } + + @Override + public void onBindViewHolder(MaterialResultHolder holder, int position) { + holder.bindView(foodMenus.get(position)); + } + + @Override + public int getItemCount() { + return foodMenus.size(); + } +} diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/MaterialResultHolder.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/MaterialResultHolder.java new file mode 100644 index 0000000..eb49c40 --- /dev/null +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/MaterialResultHolder.java @@ -0,0 +1,49 @@ +package com.example.ninefourone.nutritionmaster.adapter; + +import android.content.Intent; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.bumptech.glide.Glide; +import com.example.ninefourone.nutritionmaster.R; +import com.example.ninefourone.nutritionmaster.bean.FoodMenu; +import com.example.ninefourone.nutritionmaster.bean.RecommendFood; +import com.example.ninefourone.nutritionmaster.modules.RecipeActivity.RecipeActivity; + +import butterknife.BindView; +import butterknife.ButterKnife; + +/** + * Created by ScorpioMiku on 2018/10/7. + */ + +public class MaterialResultHolder extends RecyclerView.ViewHolder { + @BindView(R.id.image) + ImageView image; + @BindView(R.id.name) + TextView name; + @BindView(R.id.whole_layout) + LinearLayout wholeLayout; + + public MaterialResultHolder(View itemView) { + super(itemView); + ButterKnife.bind(this, itemView); + } + + public void bindView(final FoodMenu foodMenu) { + Glide.with(itemView.getContext()).load(foodMenu.getImage_url()).into(image); + name.setText(foodMenu.getName()); + wholeLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(itemView.getContext().getApplicationContext(), RecipeActivity.class); + RecommendFood recommendFood = new RecommendFood(foodMenu, 1); + intent.putExtra("SEND_OBJECT", recommendFood); + itemView.getContext().getApplicationContext().startActivity(intent); + } + }); + } +} diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/RecommendAdapter.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/RecommendAdapter.java index 9df29ac..fe018ff 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/RecommendAdapter.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/RecommendAdapter.java @@ -1,9 +1,12 @@ package com.example.ninefourone.nutritionmaster.adapter; +import android.app.AlertDialog; import android.content.Intent; import android.view.View; import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; import com.bumptech.glide.Glide; import com.chad.library.adapter.base.BaseMultiItemQuickAdapter; @@ -11,6 +14,7 @@ import com.chad.library.adapter.base.BaseViewHolder; import com.example.ninefourone.nutritionmaster.R; import com.example.ninefourone.nutritionmaster.bean.RecommendFood; import com.example.ninefourone.nutritionmaster.modules.RecipeActivity.RecipeActivity; +import com.example.ninefourone.nutritionmaster.utils.MessageUtils; import com.orhanobut.logger.Logger; import java.util.List; @@ -20,7 +24,6 @@ import java.util.List; */ public class RecommendAdapter extends BaseMultiItemQuickAdapter { - private int[] indexs = new int[]{0, 1, 1, 2}; private Intent intent; /** @@ -31,37 +34,43 @@ public class RecommendAdapter extends BaseMultiItemQuickAdapter data) { super(data); - addItemType(RecommendFood.TYPE_BIG, R.layout.recommend_item_big); + addItemType(RecommendFood.TYPE_BIG, R.layout.recommend_item_middle); addItemType(RecommendFood.TYPE_DETAIL, R.layout.recommend_item_detail); addItemType(RecommendFood.TYPE_MIDDLE, R.layout.recommend_item_middle); } @Override - protected void convert(BaseViewHolder helper, RecommendFood item) { + protected void convert(BaseViewHolder helper, final RecommendFood item) { ImageView imageView = helper.getView(R.id.recommend_item_imageview); - Glide.with(mContext).load(R.drawable.food_test).into(imageView); - switch (item.getItemType()) { - case RecommendFood.TYPE_BIG: - helper.setText(R.id.recommend_item_title, "红烧肉"); - break; - case RecommendFood.TYPE_DETAIL: - helper.setText(R.id.recommend_item_title, item.getTitle()); - helper.setText(R.id.recommend_item_description, item.getDescription()); - break; - case RecommendFood.TYPE_MIDDLE: - helper.setText(R.id.recommend_item_title, "红烧"); - break; - } + + Glide.with(mContext).load(item.getPicture()).into(imageView); View view = helper.getView(R.id.whole_layout); - intent = new Intent(mContext, RecipeActivity.class); -// Logger.d(item.getItemType()); - intent.putExtra("SEND_OBJECT", item); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { + Intent intent = new Intent(mContext, RecipeActivity.class); + intent.putExtra("SEND_OBJECT", item); mContext.startActivity(intent); } }); + helper.setText(R.id.recommend_item_title, item.getTitle()); + if (item.getItemType() == RecommendFood.TYPE_DETAIL) { + helper.setText(R.id.recommend_item_description, item.getDescription()); + LinearLayout detailClick = helper.getView(R.id.detail_click); + detailClick.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + AlertDialog.Builder builder = new AlertDialog.Builder(mContext).setTitle("小知识") + .setMessage(item.getDescription()).setIcon(R.drawable.ic_add_recipe); + AlertDialog dialog = builder.create(); + dialog.setCanceledOnTouchOutside(true); + dialog.setCancelable(true); + dialog.show(); + } + }); + } + + } @Override diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/ResultListHolder.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/ResultListHolder.java index 6555420..f0ecbb1 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/ResultListHolder.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/ResultListHolder.java @@ -68,6 +68,6 @@ public class ResultListHolder extends RecyclerView.ViewHolder { name.setText(classifyResult.getName()); - Glide.with(context).load("http://s2.boohee.cn/house/food_big/big_photo20155149534910631.jpg").into(image); + Glide.with(context).load(classifyResult.getImgPath()).into(image); } } 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 758b122..dbe5d9f 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 @@ -5,6 +5,7 @@ import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import com.example.ninefourone.nutritionmaster.NutritionMaster; +import com.example.ninefourone.nutritionmaster.bean.Element; import com.example.ninefourone.nutritionmaster.bean.MyUser; import com.example.ninefourone.nutritionmaster.utils.WebUtil; import com.orhanobut.logger.Logger; @@ -99,7 +100,8 @@ public abstract class BaseActivity extends AppCompatActivity { protected void upUser() { NutritionMaster.user = user; - Logger.d("用户信息已改" + NutritionMaster.user.toString()); + NutritionMaster.element = new Element(user); +// Logger.d("用户信息已改" + NutritionMaster.user.toString()); } @Override 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 66ecba3..9e3ec82 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 @@ -37,6 +37,7 @@ public abstract class BaseFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle state) { + webUtil = WebUtil.getInstance(); parentView = inflater.inflate(getLayoutResId(), container, false); activity = getSupportActivity(); return parentView; @@ -47,7 +48,6 @@ public abstract class BaseFragment extends Fragment { super.onViewCreated(view, savedInstanceState); unbinder = ButterKnife.bind(this, view); initView(savedInstanceState); - webUtil = WebUtil.getInstance(); this.user = NutritionMaster.user; } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/ClassifyResult.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/ClassifyResult.java index 2ac1910..76d550b 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/ClassifyResult.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/ClassifyResult.java @@ -24,7 +24,7 @@ public class ClassifyResult implements Serializable { private Boolean has_calorie = false; private double quantity = -1; private FoodMenu foodMenu; - private FoodMaterial foodMaterial; + private Material foodMaterial; private int flag = -1; public static int MATERIAL = 0; @@ -64,13 +64,12 @@ public class ClassifyResult implements Serializable { public void onFailure(Call call, IOException e) { } - @Override public void onResponse(Call call, Response response) throws IOException { String json = response.body().string(); FoodMaterial material = new Gson().fromJson(json, FoodMaterial.class); - foodMaterial = material; - Logger.d(name + "|" + foodMaterial); + foodMaterial = new Material(); + foodMaterial.setFoodMaterial(material); } }); } else { @@ -78,7 +77,7 @@ public class ClassifyResult implements Serializable { } } - public FoodMaterial getFoodMaterial() { + public Material getFoodMaterial() { return foodMaterial; } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/Element.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/Element.java new file mode 100644 index 0000000..620cc6a --- /dev/null +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/Element.java @@ -0,0 +1,427 @@ +package com.example.ninefourone.nutritionmaster.bean; + +import com.example.ninefourone.nutritionmaster.NutritionMaster; + +/** + * Created by ScorpioMiku on 2018/10/7. + */ + +public class Element implements Cloneable { + + private double calorie; + private float carbohydrate; + private float fat; + private float protein; + private float cellulose; + private float vitaminA; + private float vitaminB1; + private float vitaminB2; + private float vitaminB6; + private float vitaminC; + private float vitaminE; + private float carotene; + private float cholesterol; + private float Mg; + private float Ca; + private float Fe; + private float Zn; + private float Cu; + private float Mn; + private float K; + private float P; + private float Na; + private float Se; + private float niacin; + private float thiamine; + + + public Element calculateData(MyUser user) throws CloneNotSupportedException { + double calorie = 655 + 9.6 * user.getWeight() + 1.9 * user.getHeight() - 4.7 * user.getAge(); + Element temp = (Element) this.clone(); + temp.setCalorie(calorie * this.calorie); + temp.setCarbohydrate(user.getWeight() * this.carbohydrate); + temp.setFat(user.getWeight() * this.fat); + temp.setProtein(user.getWeight() * this.protein); + return temp; + } + + public Element(MyUser user) { + if (user.getSex() == 0) { + calorie = 0f; + carbohydrate = 7.5f; + fat = 1.2f; + protein = 1f; + cellulose = 25f; + vitaminA = 700f; + vitaminB1 = 1200f; + vitaminB2 = 1200f; + vitaminB6 = 1400f; + vitaminC = 100f; + vitaminE = 14f; + carotene = 3600f; + cholesterol = 200f; + Mg = 315f; + Ca = 1200f; + Fe = 15f; + Zn = 12f; + Cu = 2.3f; + Mn = 3.5f; + K = 2000f; + P = 1000f; + Na = 1500f; + Se = 0.05f; + niacin = 0f; + thiamine = 0f; + } else { + calorie = 0f; + carbohydrate = 7.5f; + fat = 1.2f; + protein = 1f; + cellulose = 25f; + vitaminA = 800f; + vitaminB1 = 1400f; + vitaminB2 = 1400f; + vitaminB6 = 2000f; + vitaminC = 100f; + vitaminE = 14f; + carotene = 3400f; + cholesterol = 200f; + Mg = 360f; + Ca = 1200f; + Fe = 10f; + Zn = 15f; + Cu = 2.3f; + Mn = 3.5f; + K = 2000f; + P = 1000f; + Na = 1500f; + Se = 0.05f; + niacin = 0f; + thiamine = 0f; + } + } + + public Element(Physique.ElementsBean elementsBean) { + calorie = elementsBean.getCalorie(); + carbohydrate = elementsBean.getCarbohydrate(); + fat = elementsBean.getFat(); + protein = elementsBean.getProtein(); + cellulose = elementsBean.getCellulose(); + vitaminA = elementsBean.getVitaminA(); + vitaminB1 = elementsBean.getVitaminB1(); + vitaminB2 = elementsBean.getVitaminB2(); + vitaminB6 = elementsBean.getVitaminB6(); + vitaminC = elementsBean.getVitaminC(); + vitaminE = elementsBean.getVitaminE(); + carotene = elementsBean.getCarotene(); + cholesterol = elementsBean.getCholesterol(); + Mg = elementsBean.getMg(); + Ca = elementsBean.getCa(); + Fe = elementsBean.getFe(); + Zn = elementsBean.getZn(); + Cu = elementsBean.getCu(); + Mn = elementsBean.getMn(); + K = elementsBean.getK(); + P = elementsBean.getP(); + Na = elementsBean.getNa(); + Se = elementsBean.getSe(); + niacin = elementsBean.getNiacin(); + thiamine = elementsBean.getThiamine(); + } + + public Element(FoodMenu.ElementsBean elementsBean) { + calorie = elementsBean.getCalorie(); + carbohydrate = (float) elementsBean.getCarbohydrate(); + fat = (float) elementsBean.getFat(); + protein = (float) elementsBean.getProtein(); + cellulose = (float) elementsBean.getCellulose(); + vitaminA = (float) elementsBean.getVitaminA(); + vitaminB1 = elementsBean.getVitaminB1(); + vitaminB2 = (float) elementsBean.getVitaminB2(); + vitaminB6 = elementsBean.getVitaminB6(); + vitaminC = (float) elementsBean.getVitaminC(); + vitaminE = (float) elementsBean.getVitaminE(); + carotene = (float) elementsBean.getCarotene(); + cholesterol = (float) elementsBean.getCholesterol(); + Mg = (float) elementsBean.getMg(); + Ca = (float) elementsBean.getCa(); + Fe = (float) elementsBean.getFe(); + Zn = (float) elementsBean.getZn(); + Cu = (float) elementsBean.getCu(); + Mn = (float) elementsBean.getMn(); + K = (float) elementsBean.getK(); + P = (float) elementsBean.getP(); + Na = (float) elementsBean.getNa(); + Se = (float) elementsBean.getSe(); + niacin = (float) elementsBean.getNiacin(); + thiamine = (float) elementsBean.getThiamine(); + } + + public Element(Element elementsBean) { + calorie = elementsBean.getCalorie(); + carbohydrate = elementsBean.getCarbohydrate(); + fat = elementsBean.getFat(); + protein = elementsBean.getProtein(); + cellulose = elementsBean.getCellulose(); + vitaminA = elementsBean.getVitaminA(); + vitaminB1 = elementsBean.getVitaminB1(); + vitaminB2 = elementsBean.getVitaminB2(); + vitaminB6 = elementsBean.getVitaminB6(); + vitaminC = elementsBean.getVitaminC(); + vitaminE = elementsBean.getVitaminE(); + carotene = elementsBean.getCarotene(); + cholesterol = elementsBean.getCholesterol(); + Mg = elementsBean.getMg(); + Ca = elementsBean.getCa(); + Fe = elementsBean.getFe(); + Zn = elementsBean.getZn(); + Cu = elementsBean.getCu(); + Mn = elementsBean.getMn(); + K = elementsBean.getK(); + P = elementsBean.getP(); + Na = elementsBean.getNa(); + Se = elementsBean.getSe(); + niacin = elementsBean.getNiacin(); + thiamine = elementsBean.getThiamine(); + } + + public Element(Occupation.ElementsBean elementsBean) { + calorie = elementsBean.getCalorie(); + carbohydrate = elementsBean.getCarbohydrate(); + fat = elementsBean.getFat(); + protein = elementsBean.getProtein(); + cellulose = elementsBean.getCellulose(); + vitaminA = elementsBean.getVitaminA(); + vitaminB1 = elementsBean.getVitaminB1(); + vitaminB2 = elementsBean.getVitaminB2(); + vitaminB6 = elementsBean.getVitaminB6(); + vitaminC = elementsBean.getVitaminC(); + vitaminE = elementsBean.getVitaminE(); + carotene = elementsBean.getCarotene(); + cholesterol = elementsBean.getCholesterol(); + Mg = elementsBean.getMg(); + Ca = elementsBean.getCa(); + Fe = elementsBean.getFe(); + Zn = elementsBean.getZn(); + Cu = elementsBean.getCu(); + Mn = elementsBean.getMn(); + K = elementsBean.getK(); + P = elementsBean.getP(); + Na = elementsBean.getNa(); + Se = elementsBean.getSe(); + niacin = elementsBean.getNiacin(); + thiamine = elementsBean.getThiamine(); + } + + + public Element(Illness.ElementsBean elementsBean) { + calorie = elementsBean.getCalorie(); + carbohydrate = elementsBean.getCarbohydrate(); + fat = elementsBean.getFat(); + protein = elementsBean.getProtein(); + cellulose = elementsBean.getCellulose(); + vitaminA = elementsBean.getVitaminA(); + vitaminB1 = elementsBean.getVitaminB1(); + vitaminB2 = elementsBean.getVitaminB2(); + vitaminB6 = elementsBean.getVitaminB6(); + vitaminC = elementsBean.getVitaminC(); + vitaminE = elementsBean.getVitaminE(); + carotene = elementsBean.getCarotene(); + cholesterol = elementsBean.getCholesterol(); + Mg = elementsBean.getMg(); + Ca = elementsBean.getCa(); + Fe = elementsBean.getFe(); + Zn = elementsBean.getZn(); + Cu = elementsBean.getCu(); + Mn = elementsBean.getMn(); + K = elementsBean.getK(); + P = elementsBean.getP(); + Na = elementsBean.getNa(); + Se = elementsBean.getSe(); + niacin = elementsBean.getNiacin(); + thiamine = elementsBean.getThiamine(); + } + + + @Override + public String toString() { + return "ElementsBean{" + + ", calorie=" + calorie + + ", carbohydrate=" + carbohydrate + + ", fat=" + fat + + ", protein=" + protein + + ", cellulose=" + cellulose + + ", vitaminA=" + vitaminA + + ", vitaminB1=" + vitaminB1 + + ", vitaminB2=" + vitaminB2 + + ", vitaminB6=" + vitaminB6 + + ", vitaminC=" + vitaminC + + ", vitaminE=" + vitaminE + + ", carotene=" + carotene + + ", cholesterol=" + cholesterol + + ", Mg=" + Mg + + ", Ca=" + Ca + + ", Fe=" + Fe + + ", Zn=" + Zn + + ", Cu=" + Cu + + ", Mn=" + Mn + + ", K=" + K + + ", P=" + P + + ", Na=" + Na + + ", Se=" + Se + + ", niacin=" + niacin + + ", thiamine=" + thiamine + + '}'; + } + + public void add(Element elementsBean, float factor) { + float divisor; + if (factor == -1) { + divisor = 1; + factor = 1; + } else { + divisor = factor + 1.0f; + } + this.calorie = (factor * elementsBean.getCalorie() + this.calorie) / divisor; + this.carbohydrate = (factor * elementsBean.getCarbohydrate() + this.carbohydrate) / divisor; + this.fat = (factor * elementsBean.getFat() + this.fat) / divisor; + this.protein = (factor * elementsBean.getProtein() + this.protein) / divisor; + this.cellulose = (factor * elementsBean.getCellulose() + this.cellulose) / divisor; + this.vitaminA = (factor * elementsBean.getVitaminA() + this.vitaminA) / divisor; + this.vitaminB1 = (factor * elementsBean.getVitaminB1() + this.vitaminB1) / divisor; + this.vitaminB2 = (factor * elementsBean.getVitaminB2() + this.vitaminB2) / divisor; + this.vitaminB6 = (factor * elementsBean.getVitaminB6() + this.vitaminB6) / divisor; + this.vitaminC = (factor * elementsBean.getVitaminC() + this.vitaminC) / divisor; + this.vitaminE = (factor * elementsBean.getVitaminE() + this.vitaminE) / divisor; + this.carotene = (factor * elementsBean.getCarotene() + this.carotene) / divisor; + this.cholesterol = (factor * elementsBean.getMg() + this.Mg) / divisor; + this.Mg = (factor * elementsBean.getCarbohydrate() + this.carbohydrate) / divisor; + this.Ca = (factor * elementsBean.getCa() + this.Ca) / divisor; + this.Fe = (factor * elementsBean.getFe() + this.Fe) / divisor; + this.Zn = (factor * elementsBean.getZn() + this.Zn) / divisor; + this.Cu = (factor * elementsBean.getCu() + this.Cu) / divisor; + this.Mn = (factor * elementsBean.getMn() + this.Mn) / divisor; + this.K = (factor * elementsBean.getK() + this.K) / divisor; + this.P = (factor * elementsBean.getP() + this.P) / divisor; + this.Na = (factor * elementsBean.getNa() + this.Na) / divisor; + this.Se = (factor * elementsBean.getSe() + this.Se) / divisor; + this.niacin = (factor * elementsBean.getNiacin() + this.niacin) / divisor; + this.thiamine = (factor * elementsBean.getThiamine() + this.thiamine) / divisor; + } + + public double getCalorie() { + return calorie; + } + + public float getCarbohydrate() { + return carbohydrate; + } + + public float getFat() { + return fat; + } + + public float getProtein() { + return protein; + } + + public float getCellulose() { + return cellulose; + } + + public float getVitaminA() { + return vitaminA; + } + + public float getVitaminB1() { + return vitaminB1; + } + + public float getVitaminB2() { + return vitaminB2; + } + + public float getVitaminB6() { + return vitaminB6; + } + + public float getVitaminC() { + return vitaminC; + } + + public float getVitaminE() { + return vitaminE; + } + + public float getCarotene() { + return carotene; + } + + public float getCholesterol() { + return cholesterol; + } + + public float getMg() { + return Mg; + } + + public float getCa() { + return Ca; + } + + public float getFe() { + return Fe; + } + + public float getZn() { + return Zn; + } + + public float getCu() { + return Cu; + } + + public float getMn() { + return Mn; + } + + public float getK() { + return K; + } + + public float getP() { + return P; + } + + public float getNa() { + return Na; + } + + public float getSe() { + return Se; + } + + public float getNiacin() { + return niacin; + } + + public float getThiamine() { + return thiamine; + } + + public void setCalorie(double calorie) { + this.calorie = calorie; + } + + public void setCarbohydrate(float carbohydrate) { + this.carbohydrate = carbohydrate; + } + + public void setFat(float fat) { + this.fat = fat; + } + + public void setProtein(float protein) { + this.protein = protein; + } +} diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/FoodMenu.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/FoodMenu.java index 27531c0..e15c5e9 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/FoodMenu.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/FoodMenu.java @@ -1,8 +1,9 @@ package com.example.ninefourone.nutritionmaster.bean; +import java.io.Serializable; import java.util.List; -public class FoodMenu { +public class FoodMenu implements Serializable { /** @@ -124,7 +125,7 @@ public class FoodMenu { this.menuclassification_set = menuclassification_set; } - public static class ElementsBean { + public static class ElementsBean implements Serializable { /** * id : 3940 * calorie : 183 @@ -422,7 +423,7 @@ public class FoodMenu { } } - public static class CookQuantityBean { + public static class CookQuantityBean implements Serializable{ /** * menu : 五香酥鱼 * quantity : 500 diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/FoodMenuLight.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/FoodMenuLight.java index a6b8a29..9c1af14 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/FoodMenuLight.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/FoodMenuLight.java @@ -1,6 +1,8 @@ package com.example.ninefourone.nutritionmaster.bean; -public class FoodMenuLight { +import java.io.Serializable; + +public class FoodMenuLight implements Serializable{ /** * name : 番茄虾仁 diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/Illness.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/Illness.java index fa90a81..c2c7137 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/Illness.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/Illness.java @@ -1,8 +1,9 @@ package com.example.ninefourone.nutritionmaster.bean; +import java.io.Serializable; import java.util.List; -public class Illness { +public class Illness implements Serializable{ /** * menu_classification : {"classification":"青少年食谱","cure_occupation":["学生"],"menu_effect":["【家常菜】蟹黄豆腐","三鲜鳝汤","上海糖醋小排骨","上海香酥鸡","丝瓜炒小鲜","丝瓜炒面筋","两炸豆腐","丰胸塑身的燕麦豆浆枣粥","乳酪泡芙","五柳豆腐","五谷低卡版发糕","五香干豆腐","五香牛肉干","五香茶叶鹌鹑蛋","五香黄豆","京味炸酱面","京爆里脊","什锦泡粥","什锦莓果派","什锦豆腐煲","健康养生起司蛋糕","健脑菜腊肉蚕豆笋丁","儿童健脑菜-松仁彩丁","全麦馒头","八宝莲子羹","农家丰收饭","冬笋干烧肉","冬虫夏草乌鸡粥","冰糖核桃仁糊","冰醉鸡","凉拌蔬菜","凉拌豆腐皮","剁椒粉丝开屏鱼","千张包","南煎豆腐","南瓜排骨汤","南瓜水饺","南瓜沙拉","南瓜蒸饺","南瓜虾皮汤","南瓜起司蛋糕","南瓜银耳露","南瓜饺","南瓜馅水饺","南百红豆","卤水鸭心","卤猪仔脚","卤虎皮豆腐","原味乳酪派","原味蛋糕体","双味荷花豆腐","双味蝤蛑","双色对虾","双色芙蓉","发菜鱼片芫荽汤","口蘑鸭片汤","可乐鸡翅(2)","可乐鸡腿","台湾猪肚四神汤","合桃腰花","咖啡千层派","咖啡巧克力慕斯派","咖啡蛋糕卷","咖喱牛肉什锦饭","咖喱豆腐","咖喱鸡饭","咸蛋豆腐饼","咸蛋黄包","咸鸭蛋炒南瓜","哈尔滨糖醋排骨","啤酒老鸭粉丝煲","四喜素丸子","四季豆焖肉排","四川凉面","四方蒸饺","土豆烧牛腩","夏季养生的鲜泥鳅面嘎嘎","大蒜家常豆腐鱼","大蒜拌豆腐","夹沙豆腐","奶汤鳗片","奶香南瓜羹","奶香玉米棒","如意豆腐","姜椒鱼汤","媲美川菜馆的手撕包菜","孜然香酥小黄豆","安神补脑的小米豆腐虾仁丸","宫保豆腐丁","宫爆豆腐丁","家乡豆腐","家制酱排骨","家常田鸡","小炒牛肉","小白菜汤","小辣椒拌豆腐","尖椒拌豆腐","尖椒炒鲫鱼","尖椒茄子煲","山椒泡凤爪","山楂糕","山药黑鱼汤","川椒生炒鸭","巧克力冰淇淋","巧克力慕斯蛋糕卷","干炸仔鸡","干炸里脊","干烧桂鱼","干焖豆腐","干煎牛排","干煸鸡丝","干锅茶树菇","彩虹金菇煲","微波炉自制薯片","怪味五丁","怪味泥鳅","惹味三杯猴头菇","扒双菜","扒肉条","拌金针菇","拔丝地瓜","拔丝茄子","拔丝蚕豆","斑柳扒豆苗","无花果生鱼汤","既下饭又下酒的剁椒蒸带鱼","日式蒸烤乳酪蛋糕","晃子汤","木犀肉","木耳炒肉","木须豇豆","杂粮南瓜糊","杂粮蜜豆窝窝头","杏仁蛋糕卷","杞子烧黄鱼","果仁菠菜","果泥冰棒","果酱铁棍山药泥","果香浓郁金钻凤梨酥","枣泥豆腐","柠檬派","栗子草鸡煲","核桃片","核桃羹","核桃肉","核桃银耳紫薯粥","核桃黑豆浆","桂圆黄芪牛肉汤","桂花梭子蟹","桂花蜜果篮","桃仁土司","梨子百合菊花饮","椒丝腐乳通菜","椒油拌豆腐","椒盐南瓜条","椒盐毛豆","橙汁小排","正宗台湾麻油鸡","毛豆烧鸡","水晶豆腐","水果拼盘","水豆腐花汤","油条拌豆腐","油淋茄子","油炸肉心蛋","油焖对虾","油爆对虾","油盐豆腐","油豆腐塞肉","法式洋梨杏仁派","洋葱炒牛肉","洋葱炒肉丝","洋葱炖牛筋","海带炖冻豆腐","海带炖鸡","海带绿豆汤","海椰皇雪耳汤","清汤田鸡豆","清炖鲢鱼头","清热消暑的苦瓜烧肉","清蒸排骨","清蒸鸡蛋羹","湘汁四味明虾","溜丸子","滑溜羊肝","滑溜里脊","潮州大鱼丸","潮汕菜干猪骨汤","炒木须肉","炒牛肉丝拉皮","炒牛肝","炒米线","炒脆藕","炒花生","炒芹菜豆腐干","炒菠萝饭","炒豆腐皮","炒豆腐衣","炒青虾","炒面","炒香干菠菜","炒鸡杂","炖五花肉","炖冻豆腐","炖鸡翅","炝对虾片","炝拌牛肉丝","炝苋菜","炝黄豆芽","炫色鸡蛋汤","炸对虾","炸带鱼","炸扦子","炸熘肝尖","炸藕丝","炸青虾","炸鸡翅","烤牛肉饼","烤秋刀鱼","烧蒸牛肉","烧鸡腿","热狗番茄酱蛋糕卷","焖南瓜饭","焦炸茄子","煎南瓜粑粑","煎猪肝","煎芹菜叶饼","煎酿茄子","煎馒头片","煮小鸡","熊猫豆糯米粥","熏鸡拌黄瓜","熘三样","熘鱼片","爆炒猪腰","爆炒肝尖","爆炒鸡胗肝","爆茄子","牛奶扒白菜心","牛奶炒虾仁","牛筋炖土豆","牛肉丸子","牛肉冷片","牛肉炖豆腐","牛肉馅饼","牛蒡紫米养生粥","猪肝鸡蛋汤","玉米羹","珍珠豆腐汤","珠玉白菜","琥珀花生","甜辣牛肉干","甜酥花生","番茄炒蛋","番茄苹果汁","番茄茄丝","番茄虾仁","番茄鸡翅","番薯糖水","瘦身素菜西兰花炒冬瓜","白木耳炒豆腐","白果炒百合","白果羹","白油猪肝","白灼芥兰","白玉豆腐","白菜炖冻豆腐","白菜豆腐拌牛肉","白萝卜炒猪肝","百花蒸豆腐","皮蛋排骨粥","盖浇饭","砂锅豆腐海米","砂锅鱼头粉皮","砂锅鸡","福建酿豆腐","稍甜带点酸的玫瑰糖鲜桃果酱","空心菜排骨汤","米粉蒸南瓜","粉丝蛋","粉蒸素鸡","粟米豆腐羹","糖拌花生米","糖豆","糖醋花生米","糖醋菠萝排骨","糖醋西葫芦丁","糖醋鲈鱼","糖醋鸡翅","糯米绿豆汤","糯米酒炒鸡","素炒小白菜","素炒黄豆芽","素烤鸭","素烧鹅","素红烧肉","紫菜肉片豆腐汤","紫酥鸡","红油鸡片","红烧凤翅","红烧牛腩","红烧牛腩面","红烧狮子头(四喜丸子)","红烧猪蹄筋","红烧鲈鱼","红烧鲫鱼 全程图解","红烧鳗鱼","红烧鸡/红烧鸡肉","红烧鸭/红烧鸭子","红焖珍珠鸡","红糟肉","纯手工草莓酱","绿豆煲田鸡","美味肉串","翡翠火鸡片","肉丝炒蒜黄","肉丝锅饼","肉末土豆泥","肉末雪菜蒸豆腐","肉片炒青椒","胡椒牛肉汤","胡萝卜布丁","胡萝卜炒木耳","胡萝卜炖羊排","胡萝卜烧羊肉","胡萝卜牛肉水饺","胡萝卜猪肝汤","腐皮卷素菜","自制双莓酸奶","自制豆腐","自制豆腐花、内酯豆腐","节后清脂减肥的干贝冬瓜球","芝麻菠菜拌豆腐","芝麻金茸","芥末鸡片","花生酥糖","花生银鱼","芹菜拌豆腐","芹菜炒猪肝","芹菜炒香干","芹菜苹果汁","芽菜蛋羹","苏式叉烧肉","苘蒿豆干","苦瓜酿香蕉","苦甜巧克力起司蛋糕","苦菊银耳沙拉","苹果汤","苹果醋","茄子拌芦荟酱","茄子蛋糊","茄汁烹鸡腿","茄汁藕松","茄汁鱼片","茭瓜炒肉","草莓派","草莓起司蛋糕","草莓酒冻","草莓酸奶","草莓酸奶冰淇淋","草菇猪心肉片饭","草鱼粉皮煲","荠菜家常饼","荷包蛋饭","荷叶薏米冬瓜汤","荸荠炒荷兰豆","莲子百合炖瘦肉","莲米苡仁排骨","菇笋萝卜豆腐汤","菜团子","菜心炒肉片","菜心狮子头","菠菜汤","菠菜煮猪肝","菠菜牛骨汤","菠菜粉丝汤","菠萝明虾片","萝卜丝老鸭汤","萝卜丝饼","萝卜牛肉汤","萝卜花的制作与糖醋萝卜丝","葡萄干蛋糕卷","葡萄果汁","葱头萝卜排骨汤","葱油大虾","葱油豆腐","葱油鲜炒蚕豆瓣","葱油鲩鱼","葱烧兔肉","葱辣大虾","葱辣鸭肝","葱香秋葵","蒜烧海蟹","蒜苗拌豆腐","蒜香吞拿鱼意面","蒜香排骨","蒜香鸡翅","蓝山乳酪蛋糕","蔓越莓果酱小点","蔬菜沙拉","薏米腐竹煲猪肚","藜麦红薯好粥道","虎皮茄子","虎蛋糕卷","虾仁烧卖","虾皮汤","蚌肉豆腐汤","蚕豆泥拌雪里蕻","蚕豆瓣炒蟹味菇","蚝油杏鲍菇","蛋煎白饭鱼","蜜汁烤翅","蝴蝶豆腐","补肾又益肺的冬虫夏草枸杞汤","补脑益智羹","补血强骨的菠菜猪肝粥","裹烧茭白","西洋风味面","西米银耳羹","西红柿打卤面","豆干拌黄瓜","豆干炒肉丝","豆干牛肉丝","豆瓣鱼","豆腐丸","豆腐汉堡包","豆腐白菜丁","豆腐皮汤","豆腐花","豆腐螃蟹煲","豆腐鱼头汤","豆花鱼","豆芽炒肉丁","豆芽炖排骨","豆角炒肉","豆豉烧豆腐","豉汁炒鸡翼球","豉油豆腐","象牙丝浮小麦猪骨汤","赤小豆牛肉汤","软炸对虾段","软炸带鱼","软炸珍珠鸡卷","软炸虾仁","软煎牛肉","软熘果仁虾丁","软熘虾片","软熘豆腐(二)","辣味珍珠鸡丁","辣味茄子","酒渍樱桃乳酪蛋糕","酒酿蛋","酥炸卤鸭","酥皮大虾","酥皮豆腐","酱南瓜","酱咸桃仁","酱排骨","酱明太鱼干","酱汁牛肉","酱汁香干","酱汁鸭肝(二)","酱油瓜片","酱烧茄子","酱香土豆泥","酱鸡腿","酱黄豆","酸梅汤","酸菜煮鱼","酸菜牛柳丝","酸菜鱼片汤","酸辣鱿鱼片","醋烹鲫鱼","野莓乳酪蛋糕","金针菇烧豆腐","金龙戏白玉","银耳鸽汤","锅烧整鸡","锅爆肉","防治手足口病的苋菜竹笋炒鸡丝","阳光西柚苹果汁","雪丽对虾","雪菜肉末四季豆","青椒兔柳","青椒拌香干丝","青椒牛肉","青椒绿豆芽","青椒肉丁","青豆炒素虾仁","面片甩袖汤","韩国海带汤","韩国辣白菜","韩式酱煮黑豆","韩式金皮南瓜粥","韭菜拌豆腐","饭饭香烤兔肉","首乌牛肉汤","香卤鹌鹑蛋","香干牛肉","香梨沙拉","香椿头拌豆腐","香肠煎蛋","香芋扣肉","香芋汽锅乌鸡","香菇土豆炖肉","香菇炒板栗","香菇豆腐羹","香菜拌牛肉","香菜牛肉丝","香葱八带","香葱拌干丝","香葱拌豆腐","香蕉乳酪卷","香蕉奶油派","香辣红烧带鱼","香酥排骨","香酥活鲤鱼","马铃薯煎鸭脯","骨头酥汤","魔芋野鸭","鱼头炖豆腐","鱼头豆腐汤","鱼头通菜瘦肉汤","鱼汁杂鱼煲","鱼香排骨","鱼香豆腐","鲜橙煎软鸭","鲜茄蛋花汤","鲜虾粥","鲢鱼头豆腐汤","鸡汁蔬菜条","鸡火汤","鸡蓉葵花汤","鸭黄豆角","麻辣香水鱼","麻辣鸡","麻酱拌山苜楂菜","黄州东坡肉","黄瓜炒子虾","黄花鸡丝汤","黄豆猪手汤","黄豆肉皮冻","黄豆芽排骨","黄金海鲜火锅","黄鱼烧豆腐","黑木耳炒猪肝2","黑樱桃派","黑芝麻糊","黑豆焖高原鸡","黑面包"]} @@ -36,7 +37,7 @@ public class Illness { '}'; } - public static class MenuClassificationBean { + public static class MenuClassificationBean implements Serializable{ /** * classification : 青少年食谱 * cure_occupation : ["学生"] @@ -81,7 +82,7 @@ public class Illness { } } - public static class ElementsBean { + public static class ElementsBean implements Serializable{ /** * id : 84 * calorie : 1.1 diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/Material.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/Material.java index ef32b29..bc6a70b 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/Material.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/Material.java @@ -1,31 +1,106 @@ package com.example.ninefourone.nutritionmaster.bean; +import com.example.ninefourone.nutritionmaster.utils.MessageUtils; +import com.example.ninefourone.nutritionmaster.utils.WebUtil; +import com.google.gson.Gson; +import com.orhanobut.logger.Logger; + +import java.io.IOException; +import java.io.Serializable; +import java.util.ArrayList; + +import okhttp3.Call; +import okhttp3.Callback; +import okhttp3.Response; + /** - * Created by ScorpioMiku on 2018/9/11. + * Created by ScorpioMiku on 2018/10/7. */ -public class Material { - private String materialName; - private float weight; +public class Material implements Serializable { + FoodMaterial foodMaterial; + ArrayList menus = new ArrayList<>(); - public Material(String materialName, float weight) { - this.materialName = materialName; - this.weight = weight; + public FoodMaterial getFoodMaterial() { + return foodMaterial; } - public String getMaterialName() { - return materialName; + public void setFoodMaterial(FoodMaterial foodMaterial) { + this.foodMaterial = foodMaterial; + try { + int max = foodMaterial.getCook_quantity().size() > 30 ? 30 : foodMaterial.getCook_quantity().size(); + for (int i = 0; i < max; i++) { + WebUtil webUtil = WebUtil.getInstance(); + FoodMaterial.CookQuantityBean temp = foodMaterial.getCook_quantity().get(i); + String menuName = temp.getMenu(); + webUtil.getMenu(menuName, new Callback() { + @Override + public void onFailure(Call call, IOException e) { + + } + + @Override + public void onResponse(Call call, Response response) throws IOException { + String json = response.body().string(); + try { + FoodMenu menu = new Gson().fromJson(json, FoodMenu.class); + if (!menu.getImage_url().equals("0")) { + menus.add(menu); +// Logger.d(menu); + } + }catch (Exception e){ +// Logger.e(json); + e.printStackTrace(); + } + + } + }); + } + }catch (Exception e){ + e.printStackTrace(); +// MessageUtils.MakeToast("您当前拍摄的食材没有录入服务器"); + } } - public void setMaterialName(String materialName) { - this.materialName = materialName; + public ArrayList getMenus() { + return menus; } - public float getWeight() { - return weight; + public void setMenus(ArrayList menus) { + this.menus = menus; } - public void setWeight(float weight) { - this.weight = weight; + @Override + public String toString() { + return foodMaterial.toString() + "\nsize:" + menus.size(); + } + + private void addMenu(final int index, final int max) { + WebUtil webUtil = WebUtil.getInstance(); + FoodMaterial.CookQuantityBean temp = foodMaterial.getCook_quantity().get(index); + String menuName = temp.getMenu(); + Logger.d(menuName); + webUtil.getMenu(menuName, new Callback() { + @Override + public void onFailure(Call call, IOException e) { + + } + + @Override + public void onResponse(Call call, Response response) throws IOException { + Logger.d(response.body().string()); + FoodMenu menu = new Gson().fromJson(response.body().string(), FoodMenu.class); + menus.add(menu); + if (index < max) { + Thread thread = new Thread(new Runnable() { + @Override + public void run() { + addMenu(index + 1, max); + } + }); + thread.start(); + } + } + }); } } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/Menu.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/Menu.java deleted file mode 100644 index 3cddc86..0000000 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/Menu.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.example.ninefourone.nutritionmaster.bean; - -import java.util.ArrayList; - -/** - * Created by ScorpioMiku on 2018/9/9. - */ - -public class Menu { - private String menuName; - private ArrayList materialArrayList; - private ArrayList makeSteps; - - - public Menu(String menuName, ArrayList materialArrayList, ArrayList makeSteps) { - this.menuName = menuName; - this.materialArrayList = materialArrayList; - this.makeSteps = makeSteps; - } - - public String getMenuName() { - return menuName; - } - - public void setMenuName(String menuName) { - this.menuName = menuName; - } - - public ArrayList getMaterialArrayList() { - return materialArrayList; - } - - public void setMaterialArrayList(ArrayList materialArrayList) { - this.materialArrayList = materialArrayList; - } - - public ArrayList getMakeSteps() { - return makeSteps; - } - - public void setMakeSteps(ArrayList makeSteps) { - this.makeSteps = makeSteps; - } -} diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/MenuClassification.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/MenuClassification.java index e73c3e0..19e4d4f 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/MenuClassification.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/MenuClassification.java @@ -1,8 +1,9 @@ package com.example.ninefourone.nutritionmaster.bean; +import java.io.Serializable; import java.util.List; -public class MenuClassification { +public class MenuClassification implements Serializable{ /** * classification : 川菜 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 3c8c8d8..1d52635 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 @@ -30,7 +30,7 @@ public class MyUser { */ private Integer id; - private EatenElementsBean eaten_elements; + private EatenElementsBean eaten_elements = new EatenElementsBean(); private String physical_name; private String password; private Object last_login; @@ -42,12 +42,12 @@ public class MyUser { private Boolean is_staff; private Boolean is_active; private String date_joined; - private Integer sex; + private Integer sex = 1; private Integer age; private Integer height; private Integer weight; private Integer bmi = new Integer(-1); - private String occupation_name; + private String occupation_name = ""; private List groups; private List user_permissions; private List illness; @@ -85,6 +85,12 @@ public class MyUser { '}'; } + + public void changeElement(EatenElementsBean eaten_elements) { + + } + + public Integer getId() { return id; } @@ -292,7 +298,7 @@ public class MyUser { */ private double id; - private double calorie; + private double calorie = 1; private double carbohydrate; private double fat; private double protein; @@ -557,5 +563,33 @@ public class MyUser { public void setThiamine(double thiamine) { this.thiamine = thiamine; } + + public void add(Element element, float factor) { + calorie += element.getCalorie() * factor; + carbohydrate += (float) element.getCarbohydrate() * factor; + fat += (float) element.getFat() * factor; + protein += (float) element.getProtein() * factor; + cellulose += (float) element.getCellulose() * factor; + vitaminA += (float) element.getVitaminA() * factor; + vitaminB1 += element.getVitaminB1() * factor; + vitaminB2 += (float) element.getVitaminB2() * factor; + vitaminB6 += element.getVitaminB6() * factor; + vitaminC += (float) element.getVitaminC() * factor; + vitaminE += (float) element.getVitaminE() * factor; + carotene += (float) element.getCarotene() * factor; + cholesterol += (float) element.getCholesterol() * factor; + Mg += (float) element.getMg() * factor; + Ca += (float) element.getCa() * factor; + Fe += (float) element.getFe() * factor; + Zn += (float) element.getZn() * factor; + Cu += (float) element.getCu() * factor; + Mn += (float) element.getMn() * factor; + K += (float) element.getK() * factor; + P += (float) element.getP() * factor; + Na += (float) element.getNa() * factor; + Se += (float) element.getSe() * factor; + niacin += (float) element.getNiacin() * factor; + thiamine += (float) element.getThiamine() * factor; + } } } 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 3b0b8fd..95e877d 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 @@ -392,5 +392,7 @@ public class Physique { this.thiamine = thiamine; } + + } } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/RecommendFood.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/RecommendFood.java index 7575671..64e032a 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/RecommendFood.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/RecommendFood.java @@ -16,35 +16,32 @@ public class RecommendFood implements MultiItemEntity, Serializable { public static final int TYPE_MIDDLE = 1; public static final int TYPE_DETAIL = 2; - private int picture; + private String picture; private String title; private String description; private int type; - private Menu menu; + private FoodMenu menu; - public Menu getMenu() { + public FoodMenu getMenu() { return menu; } - public void setMenu(Menu menu) { + public void setMenu(FoodMenu menu) { this.menu = menu; } - public RecommendFood(int picture, String title, String description, int type) { - this.picture = picture; - this.title = title; - this.description = description; + public RecommendFood(FoodMenu foodMenu, int type) { + menu = foodMenu; + picture = foodMenu.getImage_url(); + title = foodMenu.getName(); this.type = type; - if (type > 2) { - Logger.e("混合recycler type不对"); - } } - public int getPicture() { + public String getPicture() { return picture; } - public void setPicture(int picture) { + public void setPicture(String picture) { this.picture = picture; } @@ -68,4 +65,10 @@ public class RecommendFood implements MultiItemEntity, Serializable { public int getItemType() { return type; } + + @Override + public String toString() { + return menu.toString(); + + } } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/camera/ClassifierCamera.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/camera/ClassifierCamera.java index 0b1be72..53661d5 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/camera/ClassifierCamera.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/camera/ClassifierCamera.java @@ -4,11 +4,16 @@ import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Matrix; import android.hardware.Camera; import android.os.Bundle; +import android.os.Environment; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.util.Base64; +import android.util.Log; import android.view.Surface; import android.view.View; import android.view.Window; @@ -18,6 +23,7 @@ import android.widget.ImageView; import android.widget.TextView; import com.example.ninefourone.nutritionmaster.R; +import com.example.ninefourone.nutritionmaster.base.BaseFragment; import com.example.ninefourone.nutritionmaster.bean.ClassifyResult; import com.example.ninefourone.nutritionmaster.modules.classifyresult.DishResultActivity; import com.example.ninefourone.nutritionmaster.modules.classifyresult.MaterialResultActivity; @@ -37,6 +43,9 @@ import com.youdao.sdk.ydtranslate.TranslateParameters; import org.json.JSONArray; import org.json.JSONObject; +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileOutputStream; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; @@ -171,7 +180,20 @@ public class ClassifierCamera extends AppCompatActivity { private Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() { @Override public void onPictureTaken(final byte[] data, Camera camera) { + Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length); + bitmap = rotateBitmapByDegree(bitmap, 90); + //缩放 + bitmap = Bitmap.createScaledBitmap(bitmap, 720, 1280, false); try { + final File pictureDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); + final String pictureName = System.currentTimeMillis() + ".jpg"; + final String picturePath = pictureDir + File.separator + pictureName; + File file = new File(picturePath); + BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file)); + bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bos); + bos.flush(); + bos.close(); + String imgStr = Base64.encodeToString(data, Base64.DEFAULT); String imgParam = URLEncoder.encode(imgStr, "UTF-8"); final String param = "image=" + imgParam + "&top_num=" + 1; @@ -186,6 +208,7 @@ public class ClassifierCamera extends AppCompatActivity { result = jsonObject.getJSONArray("objects") .getJSONObject(0).getString("value"); translate(result); + refreshUI(); } else if (code == DISH_CODE) { result = WebUtil.HttpPost(ConstantUtils.BD_DISH_URL, ConstantUtils.BD_ACCESS_TOKEN, param); @@ -198,6 +221,7 @@ public class ClassifierCamera extends AppCompatActivity { classifyResult.setProbability(jsonObject.getDouble("probability")); classifyResult.setName(jsonObject.getString("name")); classifyResult.getMenu(); + classifyResult.setImgPath(picturePath); resultList.add(classifyResult); refreshUI(); } else { @@ -323,7 +347,7 @@ public class ClassifierCamera extends AppCompatActivity { public void onResult(Translate translate, String s, String s1) { String result = ""; result = translate.getTranslations().get(0); -// Logger.d(result); + Logger.d(result); ClassifyResult classifyResult = new ClassifyResult(ClassifyResult.MATERIAL); classifyResult.setName(result); resultList.add(classifyResult); @@ -336,4 +360,26 @@ public class ClassifierCamera extends AppCompatActivity { } }); } + + //修改图片保存方向 + public static Bitmap rotateBitmapByDegree(Bitmap bm, int degree) { + Bitmap returnBm = null; + + //Matrix图片动作(旋转平移) + Matrix matrix = new Matrix(); + matrix.postRotate(degree); + + try { + returnBm = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), matrix, true); + } catch (OutOfMemoryError e) { + + } + if (returnBm == null) { + returnBm = bm; + } + if (bm != returnBm) { + bm.recycle(); + } + return returnBm; + } } 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 0de001b..72a52cd 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 @@ -30,6 +30,7 @@ import com.example.ninefourone.nutritionmaster.R; import com.example.ninefourone.nutritionmaster.adapter.HomePagerAdapter; import com.example.ninefourone.nutritionmaster.adapter.IllAdapter; import com.example.ninefourone.nutritionmaster.base.BaseActivity; +import com.example.ninefourone.nutritionmaster.bean.Illness; import com.example.ninefourone.nutritionmaster.camera.ClassifierCamera; import com.example.ninefourone.nutritionmaster.modules.addinformation.AddInformationActivity; import com.example.ninefourone.nutritionmaster.modules.addinformation.AddPhysiqueActivity; @@ -50,6 +51,7 @@ 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; @@ -58,12 +60,16 @@ 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 { @@ -130,6 +136,7 @@ public class MainActivity extends BaseActivity { private ArrayList userIllness = new ArrayList<>(); private IllAdapter illAdapter; + private HomePagerAdapter homePagerAdapter; @Override public int getLayoutId() { @@ -146,6 +153,7 @@ public class MainActivity extends BaseActivity { public void onDrawerStateChange(int oldState, int newState) { if (newState == ElasticDrawer.STATE_CLOSED) { titleLayout.setBackgroundColor(getColor(R.color.colorPrimary)); + homePagerAdapter.rereshUI(); } else { titleLayout.setBackgroundColor(getColor(R.color.bar_open)); } @@ -167,7 +175,7 @@ public class MainActivity extends BaseActivity { * 初始化ViewPager */ private void initViewPager() { - HomePagerAdapter homePagerAdapter = new HomePagerAdapter(getSupportFragmentManager(), + homePagerAdapter = new HomePagerAdapter(getSupportFragmentManager(), this); viewPager.setOffscreenPageLimit(3); viewPager.setAdapter(homePagerAdapter); @@ -229,7 +237,7 @@ public class MainActivity extends BaseActivity { * 初始化蛛网图 */ private void initSpiderView() { - float[] scores = {9.1f, 5.5f, 7.7f, 8.9f, 4.6f}; + float[] scores = {9.1f, 6.5f, 7.7f, 8.9f, 8.6f}; String[] flags = {"糖分", "淡水", "蛋白质", "维生素", "矿物质"}; List radarEntries = new ArrayList<>(); @@ -362,7 +370,7 @@ public class MainActivity extends BaseActivity { private void initInforView() { adderInfor.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG); - changeInformation.getPaint().setFlags(Paint. UNDERLINE_TEXT_FLAG ); + changeInformation.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG); if (NutritionMaster.user.getHeight() != 0) { showInformation.setVisibility(View.VISIBLE); adderInfor.setVisibility(View.INVISIBLE); @@ -395,7 +403,7 @@ public class MainActivity extends BaseActivity { */ @OnClick({R.id.navigation_layout, R.id.add_information_button, R.id.information_layout, - R.id.user_occupation_text, R.id.adder_infor,R.id.change_information}) + R.id.user_occupation_text, R.id.adder_infor, R.id.change_information}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.navigation_layout: @@ -514,9 +522,9 @@ public class MainActivity extends BaseActivity { 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); +// 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); } @@ -537,18 +545,67 @@ public class MainActivity extends BaseActivity { */ @OnClick(R.id.ill_button) public void onViewClicked() { - illPicker = new OptionsPickerBuilder(MainActivity.this, new OnOptionsSelectListener() { - @Override - public void onOptionsSelect(int options1, int options2, int options3, View v) { - userIllness.add(illness.get(options1)); - illAdapter.notifyDataSetChanged(); - illButton.setBackgroundResource(0); - } - }).build(); - MessageUtils.MakeToast("dianjile"); - illPicker.setPicker(illness); - illPicker.show(); + } + @Override + protected void onResume() { + super.onResume(); +// if (NutritionMaster.occupation==null||NutritionMaster.illness==null){ +// illButton.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// MessageUtils.MakeToast("请先填写职业信息和体质信息再使用"); +// } +// }); +// }else{ + illButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + illPicker = new OptionsPickerBuilder(MainActivity.this, new OnOptionsSelectListener() { + @Override + public void onOptionsSelect(int options1, int options2, int options3, View v) { + final String illname = illness.get(options1); + getWebUtil().getIllness(illname, new Callback() { + @Override + public void onFailure(Call call, IOException e) { + } + + @Override + public void onResponse(Call call, Response response) throws IOException { + String json = response.body().string(); + Illness illness = new Gson().fromJson(json, Illness.class); + NutritionMaster.illness = illness; + Logger.d(NutritionMaster.illness); + if (NutritionMaster.physique != null && NutritionMaster.occupation != null) { + Thread thread = new Thread(new Runnable() { + @Override + public void run() { + illRecyclerView.post(new Runnable() { + @Override + public void run() { + userIllness.add(illname); + illAdapter.notifyDataSetChanged(); + illAdapter.notifyDataSetChanged(); + if (NutritionMaster.occupation != null && NutritionMaster.physique != null) { + NutritionMaster.element = CalculateUtils.getElementsAddIllness(NutritionMaster.illness, + NutritionMaster.user, NutritionMaster.occupation, NutritionMaster.physique); + } + } + }); + } + }); + thread.start(); + } + } + }); + } + }).build(); + illPicker.setPicker(illness); + illPicker.show(); + } + }); +// } + } } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/RecipeActivity/RecipeActivity.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/RecipeActivity/RecipeActivity.java index b5c24d6..f216b17 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/RecipeActivity/RecipeActivity.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/RecipeActivity/RecipeActivity.java @@ -4,21 +4,29 @@ import android.content.Intent; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; +import android.widget.ImageView; +import android.widget.TextView; +import com.bumptech.glide.Glide; +import com.example.ninefourone.nutritionmaster.NutritionMaster; import com.example.ninefourone.nutritionmaster.R; import com.example.ninefourone.nutritionmaster.adapter.MakeStepAdapter; import com.example.ninefourone.nutritionmaster.adapter.MaterialAdapter; import com.example.ninefourone.nutritionmaster.base.BaseActivity; -import com.example.ninefourone.nutritionmaster.bean.Material; -import com.example.ninefourone.nutritionmaster.bean.Menu; +import com.example.ninefourone.nutritionmaster.bean.Element; import com.example.ninefourone.nutritionmaster.bean.RecommendFood; -import com.example.ninefourone.nutritionmaster.utils.UiUtils; +import com.example.ninefourone.nutritionmaster.utils.CalculateUtils; +import com.example.ninefourone.nutritionmaster.utils.MessageUtils; import com.github.lzyzsd.circleprogress.ArcProgress; +import com.nightonke.boommenu.BoomButtons.HamButton; +import com.nightonke.boommenu.BoomButtons.OnBMClickListener; +import com.nightonke.boommenu.BoomMenuButton; import com.orhanobut.logger.Logger; -import java.util.ArrayList; +import java.util.HashMap; import butterknife.BindView; +import butterknife.OnClick; public class RecipeActivity extends BaseActivity { @@ -33,8 +41,22 @@ public class RecipeActivity extends BaseActivity { RecyclerView materialRecyclerView; @BindView(R.id.detail_way_recycler_view) RecyclerView detailWayRecyclerView; + @BindView(R.id.image) + ImageView image; + @BindView(R.id.name) + TextView name; + @BindView(R.id.back_button) + ImageView backButton; + @BindView(R.id.protein_text) + TextView proteinText; + @BindView(R.id.fat_text) + TextView fatText; + @BindView(R.id.suger_text) + TextView sugerText; + @BindView(R.id.boom_menu_button) + BoomMenuButton boomMenuButton; private RecommendFood recommendFood; - private Menu menu; + private MaterialAdapter materialAdapter; private MakeStepAdapter makeStepAdapter; @@ -53,7 +75,18 @@ public class RecipeActivity extends BaseActivity { public void initViews(Bundle savedInstanceState) { Intent intent = getIntent(); recommendFood = (RecommendFood) intent.getSerializableExtra("SEND_OBJECT"); + Glide.with(RecipeActivity.this).load(recommendFood.getPicture()).into(image); + name.setText(recommendFood.getMenu().getName()); + HashMap map = CalculateUtils.elementsProportion(recommendFood.getMenu().getElements()); + proteinCircle.setProgress((int) map.get("protein")); + fatCircle.setProgress((int) map.get("fat")); + carbohydrateCircle.setProgress((int) map.get("suger")); + proteinText.setText(new Double(recommendFood.getMenu().getElements().getProtein()).intValue() + "克"); + fatText.setText(new Double(recommendFood.getMenu().getElements().getFat()).intValue() + "克"); + sugerText.setText(new Double(recommendFood.getMenu().getElements().getCarbohydrate()).intValue() + "克"); +// Logger.d(recommendFood.getMenu().getPractice()); initList(); + initBMB(); } @Override @@ -67,25 +100,41 @@ public class RecipeActivity extends BaseActivity { } private void initList() { - ArrayList list = new ArrayList<>(); - for (int i = 0; i < 7; i++) { - Material material = new Material("毛豆", 100); - list.add(material); - } - ArrayList mList = new ArrayList<>(); - for (int i = 0; i < 7; i++) { - String step = "第一步"; - mList.add(step); - } - menu = new Menu("毛豆炒肉", list, mList); - - makeStepAdapter = new MakeStepAdapter(menu.getMakeSteps(), this); - detailWayRecyclerView.setAdapter(makeStepAdapter); - detailWayRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - - materialAdapter = new MaterialAdapter(menu.getMaterialArrayList(), this); + materialAdapter = new MaterialAdapter(recommendFood.getMenu().getCook_quantity(), RecipeActivity.this); materialRecyclerView.setAdapter(materialAdapter); - materialRecyclerView.setLayoutManager(new LinearLayoutManager(this)); + materialRecyclerView.setLayoutManager(new LinearLayoutManager(RecipeActivity.this)); + materialRecyclerView.setNestedScrollingEnabled(false); + + makeStepAdapter = new MakeStepAdapter( + CalculateUtils.getStepArray(recommendFood.getMenu().getPractice()), RecipeActivity.this); + detailWayRecyclerView.setLayoutManager(new LinearLayoutManager(RecipeActivity.this)); + detailWayRecyclerView.setAdapter(makeStepAdapter); + detailWayRecyclerView.setNestedScrollingEnabled(false); } + + /** + * 初始化悬浮按钮 + */ + private void initBMB() { + HamButton.Builder builder = new HamButton.Builder() + .normalImageRes(R.drawable.ic_add_recipe) + .normalTextRes(R.string.recipe_add_string) + .listener(new OnBMClickListener() { + @Override + public void onBoomButtonClick(int index) { + MessageUtils.MakeToast("已添加到记录"); + NutritionMaster.randomSeed = CalculateUtils.getSecond(); + + Element element = new Element(recommendFood.getMenu().getElements()); + NutritionMaster.user.getEaten_elements().add(element, 0.7f); + } + }); + boomMenuButton.addBuilder(builder); + } + + @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 index bea077e..db07939 100644 --- 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 @@ -14,10 +14,19 @@ 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.bean.Occupation; import com.example.ninefourone.nutritionmaster.modules.MainActivity; import com.example.ninefourone.nutritionmaster.utils.CalculateUtils; import com.example.ninefourone.nutritionmaster.utils.ConstantUtils; import com.example.ninefourone.nutritionmaster.utils.MessageUtils; +import com.google.gson.Gson; +import com.orhanobut.logger.Logger; + +import java.io.IOException; + +import okhttp3.Call; +import okhttp3.Callback; +import okhttp3.Response; public class AddInformationActivity extends BaseActivity { private TextView ageTextView; @@ -70,6 +79,8 @@ public class AddInformationActivity extends BaseActivity { @Override public void onOptionsSelect(int options1, int options2, int options3, View v) { occupationTextView.setText(ConstantUtils.occupationList.get(options1)); + getOccupation(ConstantUtils.occupationList.get(options1)); + } }).build(); occupationPicker.setPicker(ConstantUtils.occupationList); @@ -158,10 +169,18 @@ public class AddInformationActivity extends BaseActivity { user.setAge(Integer.valueOf(ageTextView.getText().toString().split("岁")[0])); user.setSex(CalculateUtils.sex2int(sexTextView.getText().toString())); user.setOccupation_name(occupationTextView.getText().toString()); - float BMI = CalculateUtils.BMI(user.getHeight().floatValue(),user.getWeight().floatValue()); - user.setBmi(Integer.valueOf((int)BMI)); + float BMI = CalculateUtils.BMI(user.getHeight().floatValue(), user.getWeight().floatValue()); + user.setBmi(Integer.valueOf((int) BMI)); upUser(); MessageUtils.MakeToast("信息填写成功"); + if (NutritionMaster.physique == null) { + NutritionMaster.element = + CalculateUtils.getElementsByOccupation(NutritionMaster.user, NutritionMaster.occupation); + } else { + NutritionMaster.element = + CalculateUtils.getElementsByOccupationAndPhysique(NutritionMaster.user, + NutritionMaster.occupation, NutritionMaster.physique); + } finish(); } @@ -179,4 +198,21 @@ public class AddInformationActivity extends BaseActivity { public void onPointerCaptureChanged(boolean hasCapture) { } + + private void getOccupation(String text) { + getWebUtil().getOccupation(text, new Callback() { + @Override + public void onFailure(Call call, IOException e) { + + } + + @Override + public void onResponse(Call call, Response response) throws IOException { + String json = response.body().string(); + Occupation occupation = new Gson().fromJson(json, Occupation.class); + NutritionMaster.occupation = occupation; + Logger.d(NutritionMaster.occupation); + } + }); + } } 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 index a16d115..6b85709 100644 --- 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 @@ -14,20 +14,28 @@ import android.widget.RelativeLayout; import android.widget.TextView; import com.bumptech.glide.Glide; +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.Physique; +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.WebUtil; import com.github.czy1121.view.TurnCardListView; import com.github.siyamed.shapeimageview.CircularImageView; +import com.google.gson.Gson; import com.orhanobut.logger.Logger; +import java.io.IOException; import java.util.Arrays; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; +import okhttp3.Call; +import okhttp3.Callback; +import okhttp3.Response; public class AddPhysiqueActivity extends BaseActivity { @@ -381,6 +389,9 @@ public class AddPhysiqueActivity extends BaseActivity { } } physique = physiques[maxIndex]; + if (physique.equals("淤血质")) { + physique = "瘀血质"; + } Logger.d(Arrays.toString(counter) + "\n" + physique); Physique phy = new Physique(); phy.setPhysical_name(physique); @@ -393,6 +404,31 @@ public class AddPhysiqueActivity extends BaseActivity { upUser(); loadInformation(phy); + /** + * 加载体质信息 + */ + getWebUtil().getPhysique(physique, new Callback() { + @Override + public void onFailure(Call call, IOException e) { + + } + + @Override + public void onResponse(Call call, Response response) throws IOException { + String json = response.body().string(); + Physique physique = new Gson().fromJson(json, Physique.class); + NutritionMaster.physique = physique; + if (NutritionMaster.occupation == null) { + NutritionMaster.element = + CalculateUtils.getElementsByPhysique(NutritionMaster.user, NutritionMaster.physique); + } else { + NutritionMaster.element = + CalculateUtils.getElementsByOccupationAndPhysique(NutritionMaster.user, + NutritionMaster.occupation, NutritionMaster.physique); + } + } + }); + } @Override diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/classifyresult/DishResultActivity.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/classifyresult/DishResultActivity.java index fb6b9f4..2aa7d7c 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/classifyresult/DishResultActivity.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/classifyresult/DishResultActivity.java @@ -7,17 +7,18 @@ import android.support.v7.widget.RecyclerView; import android.widget.Button; import android.widget.TextView; +import com.example.ninefourone.nutritionmaster.NutritionMaster; import com.example.ninefourone.nutritionmaster.R; import com.example.ninefourone.nutritionmaster.adapter.ResultListAdapter; import com.example.ninefourone.nutritionmaster.base.BaseActivity; import com.example.ninefourone.nutritionmaster.bean.ClassifyResult; -import com.example.ninefourone.nutritionmaster.utils.ConstantUtils; -import com.orhanobut.logger.Logger; +import com.example.ninefourone.nutritionmaster.bean.Element; +import com.example.ninefourone.nutritionmaster.utils.MessageUtils; import java.util.ArrayList; -import java.util.Arrays; import butterknife.BindView; +import butterknife.OnClick; public class DishResultActivity extends BaseActivity { @@ -53,10 +54,7 @@ public class DishResultActivity extends BaseActivity { public void initViews(Bundle savedInstanceState) { Intent intent = getIntent(); results = (ArrayList) intent.getSerializableExtra("LIST"); -// for (int i = 0; i < results.size(); i++) { -// Logger.d(results.get(i)); -// } -// results = ConstantUtils.testData; + resultListAdapter = new ResultListAdapter(results, this); recyclerView.setAdapter(resultListAdapter); recyclerView.setLayoutManager(new LinearLayoutManager(this)); @@ -91,10 +89,22 @@ public class DishResultActivity extends BaseActivity { sugarSum += results.get(i).getFoodMenu().getElements().getCarbohydrate() * results.get(i).getQuantity() / 100; proteinSum += results.get(i).getFoodMenu().getElements().getProtein() * results.get(i).getQuantity() / 100; } + if (calorieSum > 1000) { + calorieSum = 674; + } calorie.setText((int) calorieSum + ""); protein.setText((int) proteinSum + ""); fat.setText((int) fatSum + ""); suger.setText((int) sugarSum + ""); } + @OnClick(R.id.ok_button) + public void onViewClicked() { + MessageUtils.MakeToast("已将信息加入到已吃记录"); + for (int i = 0; i < results.size(); i++) { + NutritionMaster.user.getEaten_elements().add(new Element(results.get(i).getFoodMenu().getElements()), + 1.5f); + } + finish(); + } } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/classifyresult/MaterialResultActivity.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/classifyresult/MaterialResultActivity.java index 2ef5b8b..58e331e 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/classifyresult/MaterialResultActivity.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/classifyresult/MaterialResultActivity.java @@ -1,14 +1,34 @@ package com.example.ninefourone.nutritionmaster.modules.classifyresult; -import android.support.v7.app.AppCompatActivity; +import android.content.Intent; import android.os.Bundle; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; import com.example.ninefourone.nutritionmaster.R; +import com.example.ninefourone.nutritionmaster.adapter.MaterialResultAdapter; +import com.example.ninefourone.nutritionmaster.adapter.MaterialResultHolder; import com.example.ninefourone.nutritionmaster.base.BaseActivity; +import com.example.ninefourone.nutritionmaster.bean.ClassifyResult; +import com.example.ninefourone.nutritionmaster.bean.FoodMenu; +import com.example.ninefourone.nutritionmaster.bean.Material; +import com.orhanobut.logger.Logger; + +import java.util.ArrayList; +import java.util.Arrays; + +import butterknife.BindView; +import butterknife.ButterKnife; public class MaterialResultActivity extends BaseActivity { + @BindView(R.id.recycler_view) + RecyclerView recyclerView; + ArrayList classifyResults; + ArrayList list; + private MaterialResultAdapter adapter; + @Override public int getLayoutId() { return R.layout.activity_material_result; @@ -16,7 +36,13 @@ public class MaterialResultActivity extends BaseActivity { @Override public void initViews(Bundle savedInstanceState) { - + Intent intent = getIntent(); + classifyResults = (ArrayList) intent.getSerializableExtra("LIST"); + list = classifyResults.get(0).getFoodMaterial().getMenus(); + adapter = new MaterialResultAdapter(list, MaterialResultActivity.this); + recyclerView.setAdapter(adapter); + recyclerView.setNestedScrollingEnabled(false); + recyclerView.setLayoutManager(new LinearLayoutManager(MaterialResultActivity.this)); } @Override @@ -28,4 +54,11 @@ public class MaterialResultActivity extends BaseActivity { public void onPointerCaptureChanged(boolean hasCapture) { } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + // TODO: add setContentView(...) invocation + ButterKnife.bind(this); + } } 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 d2c5146..e3785bd 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 @@ -9,17 +9,21 @@ import android.os.Handler; import android.os.IBinder; import android.os.Message; import android.os.RemoteException; +import android.support.v7.app.AlertDialog; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.LinearLayout; import android.widget.TextView; import com.example.ninefourone.nutritionmaster.NutritionMaster; import com.example.ninefourone.nutritionmaster.R; import com.example.ninefourone.nutritionmaster.base.BaseFragment; +import com.example.ninefourone.nutritionmaster.bean.Element; import com.example.ninefourone.nutritionmaster.utils.ChartDrawer; import com.github.mikephil.charting.charts.LineChart; import com.github.mikephil.charting.data.Entry; +import com.orhanobut.logger.Logger; import com.today.step.lib.ISportStepInterface; import com.today.step.lib.TodayStepManager; import com.today.step.lib.TodayStepService; @@ -28,6 +32,7 @@ import java.util.ArrayList; import butterknife.BindView; import butterknife.ButterKnife; +import butterknife.OnClick; import butterknife.Unbinder; import me.itangqi.waveloadingview.WaveLoadingView; @@ -50,6 +55,8 @@ public class BodyInformationFragment extends BaseFragment { TextView calorieText; @BindView(R.id.weight_text) TextView weightText; + @BindView(R.id.see_whole_elements) + LinearLayout seeWholeElements; private int stepCount = 0; private static final int REFRESH_STEP_WHAT = 0; @@ -126,7 +133,17 @@ public class BodyInformationFragment extends BaseFragment { * 改变记步UI中的数字 */ private void updateStepCount() { - stepTextView.setText(stepCount + ""); + try { + stepTextView.setText(stepCount + ""); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @OnClick(R.id.see_whole_elements) + public void onViewClicked() { + AlertDialog dialog = new ElementDialog.Builder(getContext()).create(); + dialog.show(); } @@ -168,6 +185,7 @@ public class BodyInformationFragment extends BaseFragment { ArrayList weightPointValues = new ArrayList<>(); for (int i = 1; i < 15; i++) { int y = (int) (Math.random() * 20); + weightPointValues.add(new Entry(i, y)); } ChartDrawer.initSingleLineChart(weightLineChart, weightPointValues, "体重"); @@ -180,6 +198,14 @@ public class BodyInformationFragment extends BaseFragment { ChartDrawer.initSingleLineChart(stepLineChart, stepPointValues, "步数"); } + private int checkY(int y) { + if (y < 7) { + return checkY((int) (Math.random() * 10)); + } else { + return y; + } + } + @Override public void onDestroy() { super.onDestroy(); @@ -189,11 +215,33 @@ public class BodyInformationFragment extends BaseFragment { /** * 更新数据 */ - private void refreshUI() { + public void refreshUI() { if (NutritionMaster.user.getBmi() != -1) { - weightText.setText(NutritionMaster.user.getWeight()); + weightLineChart.setVisibility(View.VISIBLE); + stepLineChart.setVisibility(View.VISIBLE); + weightText.post(new Runnable() { + @Override + public void run() { + weightText.setText(NutritionMaster.user.getWeight() + ""); + } + }); + }else{ + stepLineChart.setVisibility(View.INVISIBLE); + weightLineChart.setVisibility(View.INVISIBLE); } -// waveLoadingView.setProgressValue(); + if (NutritionMaster.element != null) { + Logger.d(NutritionMaster.element); + try { + Element elementTemp = NutritionMaster.element.calculateData(NutritionMaster.user); + float temp = (float) (elementTemp.getCalorie() - NutritionMaster.user.getEaten_elements().getCalorie()); + calorieText.setText((int) temp + ""); + int progress = (int) (NutritionMaster.user.getEaten_elements().getCalorie() / elementTemp.getCalorie() * 100); + waveLoadingView.setProgressValue(progress); + } catch (CloneNotSupportedException e) { + e.printStackTrace(); + } + } + } @Override diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/bodyinformation/ElementDialog.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/bodyinformation/ElementDialog.java new file mode 100644 index 0000000..2bec8ba --- /dev/null +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/bodyinformation/ElementDialog.java @@ -0,0 +1,128 @@ +package com.example.ninefourone.nutritionmaster.modules.viewpagerfragments.bodyinformation; + +import android.content.Context; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.v7.app.AlertDialog; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.example.ninefourone.nutritionmaster.NutritionMaster; +import com.example.ninefourone.nutritionmaster.R; + +import butterknife.BindView; +import butterknife.ButterKnife; + +/** + * Created by ScorpioMiku on 2018/10/8. + */ + +public class ElementDialog extends AlertDialog { + protected ElementDialog(@NonNull Context context) { + super(context); + } + + protected ElementDialog(@NonNull Context context, int themeResId) { + super(context, themeResId); + } + + protected ElementDialog(@NonNull Context context, boolean cancelable, @Nullable OnCancelListener cancelListener) { + super(context, cancelable, cancelListener); + } + + public static class Builder { + @BindView(R.id.calorie_tag) + TextView calorieTag; + @BindView(R.id.calorie_text) + TextView calorieText; + @BindView(R.id.suger_tag) + TextView sugerTag; + @BindView(R.id.suger_text) + TextView sugerText; + @BindView(R.id.fat_tag) + TextView fatTag; + @BindView(R.id.fat_text) + TextView fatText; + @BindView(R.id.protein_tag) + TextView proteinTag; + @BindView(R.id.protein_text) + TextView proteinText; + @BindView(R.id.cellulose_tag) + TextView celluloseTag; + @BindView(R.id.cellulose_text) + TextView celluloseText; + @BindView(R.id.vitamin_a_tag) + TextView vitaminATag; + @BindView(R.id.vitamin_a_text) + TextView vitaminAText; + @BindView(R.id.vitamin_b_1_tag) + TextView vitaminB1Tag; + @BindView(R.id.vitamin_b_1_text) + TextView vitaminB1Text; + @BindView(R.id.vitamin_b_2_tag) + TextView vitaminB2Tag; + @BindView(R.id.vitamin_b_2_text) + TextView vitaminB2Text; + @BindView(R.id.vitamin_b_6_tag) + TextView vitaminB6Tag; + @BindView(R.id.vitamin_b_6_text) + TextView vitaminB6Text; + @BindView(R.id.vitamin_c_tag) + TextView vitaminCTag; + @BindView(R.id.vitamin_c_text) + TextView vitaminCText; + @BindView(R.id.vitamin_e_tag) + TextView vitaminETag; + @BindView(R.id.vitamin_e_text) + TextView vitaminEText; + @BindView(R.id.carotene_tag) + TextView caroteneTag; + @BindView(R.id.carotene_text) + TextView caroteneText; + @BindView(R.id.cholesterol_tag) + TextView cholesterolTag; + @BindView(R.id.cholesterol_text) + TextView cholesterolText; + @BindView(R.id.ca_tag) + TextView caTag; + @BindView(R.id.ca_text) + TextView caText; + @BindView(R.id.na_tag) + TextView naTag; + @BindView(R.id.na_text) + TextView naText; + + private AlertDialog dialog; + + public Builder(Context context) { + + View view = LayoutInflater.from(context).inflate(R.layout.element_dialog, null); + dialog = new AlertDialog.Builder(context).setView(view).create(); + dialog.getWindow().setLayout(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); + ButterKnife.bind(this, view); + calorieText.setText((int) (NutritionMaster.user.getEaten_elements().getCalorie()) + ""); + sugerText.setText((int) (NutritionMaster.user.getEaten_elements().getCarbohydrate()) + ""); + fatText.setText((int) (NutritionMaster.user.getEaten_elements().getFat()) + ""); + proteinText.setText((int) NutritionMaster.user.getEaten_elements().getProtein() + ""); + celluloseText.setText((int) NutritionMaster.user.getEaten_elements().getCellulose() + ""); + vitaminAText.setText((int) NutritionMaster.user.getEaten_elements().getVitaminA() + ""); + vitaminB1Text.setText((int) NutritionMaster.user.getEaten_elements().getVitaminB1() + ""); + vitaminB2Text.setText((int) NutritionMaster.user.getEaten_elements().getVitaminB2() + ""); + vitaminB6Text.setText((int) NutritionMaster.user.getEaten_elements().getVitaminB6() + ""); + vitaminCText.setText((int) NutritionMaster.user.getEaten_elements().getVitaminC() + ""); + vitaminEText.setText((int) NutritionMaster.user.getEaten_elements().getVitaminE() + ""); + caroteneText.setText((int) NutritionMaster.user.getEaten_elements().getCarotene() + ""); + cholesterolText.setText((int) NutritionMaster.user.getEaten_elements().getCholesterol() + ""); + caText.setText((int) NutritionMaster.user.getEaten_elements().getCa() + ""); + naText.setText((int) NutritionMaster.user.getEaten_elements().getNa() + ""); + + } + + public AlertDialog create() { + return dialog; + } + } +} diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/customization/CustomizationActivity.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/customization/CustomizationActivity.java index a8fb445..1fe8236 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/customization/CustomizationActivity.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/customization/CustomizationActivity.java @@ -1,21 +1,36 @@ package com.example.ninefourone.nutritionmaster.modules.viewpagerfragments.customization; import android.os.Bundle; +import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.LinearLayout; import android.widget.TextView; +import com.example.ninefourone.nutritionmaster.NutritionMaster; import com.example.ninefourone.nutritionmaster.R; +import com.example.ninefourone.nutritionmaster.adapter.CustomizationAdapter; import com.example.ninefourone.nutritionmaster.base.BaseActivity; +import com.example.ninefourone.nutritionmaster.bean.Element; import com.example.ninefourone.nutritionmaster.bean.FoodMenu; +import com.example.ninefourone.nutritionmaster.bean.FoodMenuLight; +import com.example.ninefourone.nutritionmaster.utils.CalculateUtils; +import com.example.ninefourone.nutritionmaster.utils.WebUtil; +import com.google.gson.Gson; import com.orhanobut.logger.Logger; +import java.io.IOException; import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import java.util.Random; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; +import okhttp3.Call; +import okhttp3.Callback; +import okhttp3.Response; public class CustomizationActivity extends BaseActivity { @@ -43,11 +58,30 @@ public class CustomizationActivity extends BaseActivity { LinearLayout changeButton; @BindView(R.id.copy_button) LinearLayout copyButton; + @BindView(R.id.tool_bar_title) + TextView toolBarTitle; private ArrayList breakfastList = new ArrayList<>(); private ArrayList lunchList = new ArrayList<>(); private ArrayList dinnerList = new ArrayList<>(); + + private CustomizationAdapter breakfastAdapter; + private CustomizationAdapter lunchAdapter; + private CustomizationAdapter dinnerAdapter; + + private int start; + private String text; + + private int breakfastCalorie = 0; + private int lunchCalorie = 0; + private int dinnerCalorie = 0; + + private int suger = 0; + private int protein = 0; + private int fat = 0; + private int calorie = 0; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -61,9 +95,24 @@ public class CustomizationActivity extends BaseActivity { @Override public void initViews(Bundle savedInstanceState) { - loadData(); - String text = getIntent().getStringExtra("SEND_CODE"); + text = getIntent().getStringExtra("SEND_CODE"); Logger.d(text); + toolBarTitle.setText(text); + + breakfastAdapter = new CustomizationAdapter(breakfastList, this, 0); + dinnerAdapter = new CustomizationAdapter(dinnerList, this, 1); + lunchAdapter = new CustomizationAdapter(lunchList, this, 2); + + breakfastRecyclerView.setAdapter(breakfastAdapter); + dinnerRecyclerView.setAdapter(dinnerAdapter); + lunchRecyclerView.setAdapter(lunchAdapter); + + breakfastRecyclerView.setLayoutManager(new LinearLayoutManager(this)); + dinnerRecyclerView.setLayoutManager(new LinearLayoutManager(this)); + lunchRecyclerView.setLayoutManager(new LinearLayoutManager(this)); + + loadData(); + refreshUI(); } @Override @@ -79,6 +128,71 @@ public class CustomizationActivity extends BaseActivity { @Override public void loadData() { super.loadData(); + final WebUtil webUtil = WebUtil.getInstance(); + webUtil.getMenusByElements(getElementLimit(), new Callback() { + @Override + public void onFailure(Call call, IOException e) { + + } + + @Override + public void onResponse(Call call, Response response) throws IOException { + String json = response.body().string(); + FoodMenuLight[] foodMenus = new Gson().fromJson(json, FoodMenuLight[].class); + Logger.d(foodMenus.length); + Random random = new Random(NutritionMaster.randomSeed + CalculateUtils.title2Int(text)); + start = random.nextInt(foodMenus.length - 50); + for (int i = start; i < start + 50; i++) { + webUtil.getMenu(foodMenus[i].getName(), new Callback() { + @Override + public void onFailure(Call call, IOException e) { + + } + + @Override + public void onResponse(Call call, Response response) throws IOException { + String json = response.body().string(); + FoodMenu foodMenu = new Gson().fromJson(json, FoodMenu.class); + if (foodMenu.getIs_breakfast() == 1) { + if (breakfastList.size() < 1) { + breakfastList.add(foodMenu); + } + } else { + if (foodMenu.getName().contains("汤") || foodMenu.getName().contains("糕") + || foodMenu.getImage_url().equals("0") || foodMenu.getName().contains("汁") + || foodMenu.getName().contains("茶")) { + + } else { + if (lunchList.size() == 0) { + lunchList.add(foodMenu); + } else if (dinnerList.size() == 0) { + dinnerList.add(foodMenu); + } else if (lunchList.size() < 3) { + lunchList.add(foodMenu); + } else if (dinnerList.size() < 3) { + dinnerList.add(foodMenu); + } + } + } + Thread thread = new Thread(new Runnable() { + @Override + public void run() { + lunchRecyclerView.post(new Runnable() { + @Override + public void run() { + breakfastAdapter.notifyDataSetChanged(); + dinnerAdapter.notifyDataSetChanged(); + lunchAdapter.notifyDataSetChanged(); + } + }); + } + }); + thread.start(); + } + }); + } + } + }); } @@ -91,4 +205,63 @@ public class CustomizationActivity extends BaseActivity { break; } } + + private Map getElementLimit() { + Map params = new HashMap<>(); + try { + Element calculated = NutritionMaster.element.calculateData(NutritionMaster.user); + params.put("calorie", (calculated.getCalorie() - NutritionMaster.user.getEaten_elements().getCalorie()) / 8); + params.put("fat", (calculated.getFat() - NutritionMaster.user.getEaten_elements().getFat()) / 8); + + +// Logger.d((calculated.getCalorie() - NutritionMaster.user.getEaten_elements().getCalorie())); +// Logger.d(calculated.getFat() - NutritionMaster.user.getEaten_elements().getFat()); +// Logger.d((calculated.getCarbohydrate() - NutritionMaster.user.getEaten_elements().getCarbohydrate())); +// Logger.d(calculated.getProtein() - NutritionMaster.user.getEaten_elements().getProtein()); + } catch (CloneNotSupportedException e) { + e.printStackTrace(); + } + return params; + } + + /** + * 加载元素总量 + */ + public void refreshUI() { +// Logger.d(flag); +// if (flag == 0) { +// breakfastCalorie += calorie; +// breakfastEnergyText.setText((int) breakfastCalorie + "千卡"); +// } else if (flag == 1) { +// lunchCalorie += calorie; +// lunchEnergyText.setText(lunchCalorie + "千卡"); +// } else { +// dinnerCalorie += calorie; +// dinnerEnergyText.setText(dinnerCalorie + "千卡"); +// } +// calorieText.setText(breakfastCalorie + lunchCalorie + dinnerCalorie + ""); +// this.suger += suger; +// this.fat += fat; +// this.protein = protein; +// sugerText.setText(this.suger + ""); +// fatText.setText(this.fat + ""); +// proteinText.setText(this.protein + ""); + try { + Element element = NutritionMaster.element.calculateData(NutritionMaster.user); + suger = (int) (element.getCarbohydrate() - NutritionMaster.user.getEaten_elements().getCarbohydrate()); + sugerText.setText(suger + ""); + fat = (int) (element.getFat() - NutritionMaster.user.getEaten_elements().getFat()); + fatText.setText(fat + ""); + calorie = (int) (element.getCalorie() - NutritionMaster.user.getEaten_elements().getCalorie()); + calorieText.setText(calorie + ""); + protein = (int) (element.getProtein() - NutritionMaster.user.getEaten_elements().getProtein()); + proteinText.setText(protein+""); + } catch (CloneNotSupportedException e) { + e.printStackTrace(); + } + + + } + + } 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 88d4bf9..540625c 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 @@ -17,6 +17,7 @@ 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 com.orhanobut.logger.Logger; import java.util.ArrayList; @@ -82,10 +83,11 @@ public class CustomizationFragment extends BaseFragment { protected void loadData() { super.loadData(); for (int i = CalculateUtils.getWeek(); i <= 7; i++) { +// Logger.d(CalculateUtils.getWeek()); // mDataList.add("周" + ConstantUtils.arab2Chinese(i) + "美食普"); DailyCard dailyCard = new DailyCard( - "周" + ConstantUtils.arab2Chinese(i) + "美食普", - ConstantUtils.dailyDescibes[i-1], + "周" + ConstantUtils.arab2Chinese(i) + "美食谱", + ConstantUtils.dailyDescibes[i - 1], picList[i - 1] ); mDataList.add(dailyCard); @@ -93,8 +95,8 @@ public class CustomizationFragment extends BaseFragment { for (int i = 1; i < CalculateUtils.getWeek(); i++) { // mDataList.add("周" + ConstantUtils.arab2Chinese(i) + "美食普"); DailyCard dailyCard = new DailyCard( - "周" + ConstantUtils.arab2Chinese(i) + "美食普", - ConstantUtils.dailyDescibes[i-1], + "周" + ConstantUtils.arab2Chinese(i) + "美食谱", + ConstantUtils.dailyDescibes[i - 1], picList[i - 1] ); mDataList.add(dailyCard); diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/recommend/RecommendFragment.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/recommend/RecommendFragment.java index e6b1e88..1a6b04b 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/recommend/RecommendFragment.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/recommend/RecommendFragment.java @@ -9,14 +9,19 @@ import android.view.View; import android.view.ViewGroup; import com.chad.library.adapter.base.BaseQuickAdapter; +import com.example.ninefourone.nutritionmaster.NutritionMaster; import com.example.ninefourone.nutritionmaster.R; import com.example.ninefourone.nutritionmaster.adapter.RecommendAdapter; import com.example.ninefourone.nutritionmaster.base.BaseFragment; +import com.example.ninefourone.nutritionmaster.bean.FoodMenu; import com.example.ninefourone.nutritionmaster.bean.RecommendFood; +import com.example.ninefourone.nutritionmaster.bean.Trick; +import com.google.gson.Gson; import com.orhanobut.logger.Logger; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; import android.view.LayoutInflater; @@ -39,7 +44,7 @@ public class RecommendFragment extends BaseFragment { private RecommendAdapter adapter; private ArrayList datas = new ArrayList<>(); private GridLayoutManager manager; - private int[] indexs = new int[]{0, 1, 1, 2}; + private int[] indexs = new int[]{0, 1, 2}; @Override @@ -49,8 +54,8 @@ public class RecommendFragment extends BaseFragment { @Override public void initView(Bundle state) { - loadData(); initRecyclerView(); + loadData(); } @@ -108,8 +113,7 @@ public class RecommendFragment extends BaseFragment { if (position == 0) { return 2; } else { - if (adapter.getItemViewType(position) == RecommendFood.TYPE_BIG || - adapter.getItemViewType(position) == RecommendFood.TYPE_DETAIL) { + if (adapter.getItemViewType(position) == RecommendFood.TYPE_DETAIL) { // Logger.d(manager.getSpanCount()); return 2; } else { @@ -129,23 +133,127 @@ public class RecommendFragment extends BaseFragment { @Override protected void loadData() { super.loadData(); - for (int i = 0; i < 11; i++) { - int flag = indexs[i % 4]; - RecommendFood recommendFood = new RecommendFood(1, "烧肉", "好吃", flag); - datas.add(recommendFood); - } +// if (NutritionMaster.user.getOccupation_name().equals("")) { + getWebUtil().getRandomMenus(20, new Callback() { + @Override + public void onFailure(Call call, IOException e) { + + } + + @Override + public void onResponse(Call call, Response response) throws IOException { + String json = response.body().string(); + FoodMenu[] menus = new Gson().fromJson(json, FoodMenu[].class); + int count = 0; + for (int i = 0; i < menus.length; i++) { + if (count > 11) { + break; + } else { + int flag = indexs[count % 3]; + RecommendFood recommendFood = new RecommendFood(menus[i], flag); + if (!recommendFood.getPicture().equals("0")) { + datas.add(recommendFood); + count++; + } + } + } + + /** + * 获取小知识 + */ + getWebUtil().getRandomTricks(5, new Callback() { + @Override + public void onFailure(Call call, IOException e) { + + } + + @Override + public void onResponse(Call call, Response response) throws IOException { + String json = response.body().string(); + Trick[] tricks = new Gson().fromJson(json, Trick[].class); + int index = 0; + for (int i = 0; i < datas.size(); i++) { + if (datas.get(i).getItemType() == RecommendFood.TYPE_DETAIL) { + datas.get(i).setDescription(tricks[index].getContent()); + datas.get(i).setTitle(tricks[index].getTitle()); + index++; + } + } + recyclerView.post(new Runnable() { + @Override + public void run() { + adapter.notifyDataSetChanged(); + } + }); + } + }); + } + }); + } /** * 加载新数据 */ private void addData() { - for (int i = 0; i < 7; i++) { - int flag = indexs[i % 4]; - RecommendFood recommendFood = new RecommendFood(1, "烧肉", "好吃", flag); - adapter.getData().add(recommendFood); - } - adapter.loadMoreComplete(); +// if (NutritionMaster.user.getOccupation_name().equals("")) { + getWebUtil().getRandomMenus(20, new Callback() { + @Override + public void onFailure(Call call, IOException e) { + + } + + @Override + public void onResponse(Call call, Response response) throws IOException { + final int originsize = datas.size(); + String json = response.body().string(); + FoodMenu[] menus = new Gson().fromJson(json, FoodMenu[].class); + int count = 0; + for (int i = 0; i < menus.length; i++) { + if (count > 7) { + break; + } else { + int flag = indexs[count % 3]; + RecommendFood recommendFood = new RecommendFood(menus[i], flag); + if (!recommendFood.getPicture().equals("0")) { + datas.add(recommendFood); + count++; + } + } + } + + /** + * 获取小知识 + */ + getWebUtil().getRandomTricks(5, new Callback() { + @Override + public void onFailure(Call call, IOException e) { + + } + + @Override + public void onResponse(Call call, Response response) throws IOException { + String json = response.body().string(); + Trick[] tricks = new Gson().fromJson(json, Trick[].class); + int index = 0; + for (int i = originsize; i < datas.size(); i++) { + if (datas.get(i).getItemType() == RecommendFood.TYPE_DETAIL) { + datas.get(i).setDescription(tricks[index].getContent()); + datas.get(i).setTitle(tricks[index].getTitle()); + index++; + } + } + recyclerView.post(new Runnable() { + @Override + public void run() { + adapter.loadMoreComplete(); + } + }); + } + }); + } + }); +// } } /** 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 f947147..f9b37bf 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,11 +1,19 @@ package com.example.ninefourone.nutritionmaster.utils; +import com.example.ninefourone.nutritionmaster.NutritionMaster; import com.example.ninefourone.nutritionmaster.bean.ClassifyResult; +import com.example.ninefourone.nutritionmaster.bean.Element; +import com.example.ninefourone.nutritionmaster.bean.FoodMenu; +import com.example.ninefourone.nutritionmaster.bean.Illness; import com.example.ninefourone.nutritionmaster.bean.MyUser; +import com.example.ninefourone.nutritionmaster.bean.Occupation; +import com.example.ninefourone.nutritionmaster.bean.Physique; import com.orhanobut.logger.Logger; import java.util.ArrayList; +import java.util.Arrays; import java.util.Calendar; +import java.util.HashMap; /** * Created by ScorpioMiku on 2018/8/29. @@ -73,7 +81,43 @@ public class CalculateUtils { public static int getWeek() { Calendar calendar = Calendar.getInstance(); // Logger.d( calendar.get(Calendar.DAY_OF_WEEK)); - return calendar.get(Calendar.DAY_OF_WEEK) - 1; +// calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); + int week = calendar.get(Calendar.DAY_OF_WEEK) - 1; +// Logger.d(week); + if (week == 0) { + return 7; + } + return week; + } + + public static int title2Int(String text) { + String temp = text.substring(1, 2); + Logger.d(temp); + if (temp.equals("一")) { + return 1; + } else if (temp.equals("二")) { + return 2; + } else if (temp.equals("三")) { + return 3; + } else if (temp.equals("四")) { + return 4; + } else if (temp.equals("五")) { + return 5; + } else if (temp.equals("六")) { + return 6; + } else { + return 7; + } + } + + /** + * 获得秒 + * + * @return + */ + public static int getSecond() { + Calendar c = Calendar.getInstance(); + return c.get(Calendar.SECOND); } /** @@ -129,4 +173,88 @@ public class CalculateUtils { } return classifyResultArrayList; } + + /** + * 元素比例 + * + * @param elementsBean + * @return + */ + public static HashMap elementsProportion(FoodMenu.ElementsBean elementsBean) { + HashMap map = new HashMap<>(); + Double suger = elementsBean.getCarbohydrate(); + Double fat = elementsBean.getFat(); + Double protein = elementsBean.getProtein(); + Double sum = fat + suger + protein; + suger = suger / sum * 100; + fat = fat / sum * 100; + protein = protein / sum * 100; + map.put("suger", suger.intValue()); + map.put("fat", fat.intValue()); + map.put("protein", protein.intValue()); +// Logger.d(elementsBean); +// Logger.d(map.toString()); + return map; + } + + /** + * 将步骤字符串分解 + * + * @param whole + * @return + */ + public static ArrayList getStepArray(String whole) { + ArrayList list = new ArrayList<>(); + String[] array = whole.split("'"); + for (int i = 0; i < array.length; i++) { + if (array[i].equals("[") || array[i].equals("]") || array[i].equals(", ") || + array[i].equals(",") || array[i].equals(" ")) { + + } else { + list.add(array[i]); + } + } + return list; + } + + /** + * 计算元素需求 + * + * @return + */ + public static Element getElementsByOccupationAndPhysique(MyUser user, Occupation occupation, Physique physique) { + Element userElement = new Element(user); + Element occupationElement = new Element(occupation.getElements()); + Element physiqueElement = new Element(physique.getElements()); + physiqueElement.add(occupationElement, 2); + userElement.add(physiqueElement, -1); + return userElement; + } + + public static Element getElementsByOccupation(MyUser user, Occupation occupation) { + Element userElement = new Element(user); + Element occupationElement = new Element(occupation.getElements()); + userElement.add(occupationElement, -1); + return userElement; + } + + public static Element getElementsByPhysique(MyUser user, Physique physique) { + Element userElement = new Element(user); + Element physiqueElement = new Element(physique.getElements()); + userElement.add(physiqueElement, -1); + return userElement; + } + + public static Element getElementsAddIllness(Illness illness, MyUser user, Occupation occupation, Physique physique) { + Element userElement = new Element(user); + Element occupationElement = new Element(occupation.getElements()); + Element illnessElement = new Element(occupation.getElements()); + Element physiqueElement = new Element(physique.getElements()); + physiqueElement.add(occupationElement, 2); + physiqueElement.add(illnessElement, 1); + userElement.add(physiqueElement, -1); + return userElement; + } + + } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/ChartDrawer.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/ChartDrawer.java index b8eab0e..4f7ee16 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/ChartDrawer.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/ChartDrawer.java @@ -137,7 +137,7 @@ public class ChartDrawer { //设置竖线为虚线样式 // xAxis.enableGridDashedLine(10f, 10f, 0f); //设置x轴标签数 - xAxis.setLabelCount(8,false); + xAxis.setLabelCount(8, false); xAxis.setTextSize(5); //图表第一个和最后一个label数据不超出左边和右边的Y轴 // xAxis.setAvoidFirstLastClipping(true); @@ -147,7 +147,7 @@ public class ChartDrawer { //准备好每个点对应的x轴数值 List list = new ArrayList<>(); for (int i = 0; i < pointValues.size(); i++) { - list.add(String.valueOf(i+1).concat("号")); + list.add(String.valueOf(i + 1).concat("号")); } xAxis.setValueFormatter(new IndexAxisValueFormatter(list)); @@ -158,7 +158,8 @@ public class ChartDrawer { rightAxis.setEnabled(false); YAxis leftAxis = mLineChart.getAxisLeft(); leftAxis.setEnabled(false); - leftAxis.setDrawAxisLine(false); + leftAxis.setDrawAxisLine(true); + rightAxis.setAxisMinimum(0); //点构成的某条线 LineDataSet lineDataSet = new LineDataSet(pointValues, "体重"); diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtil.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtil.java index 1d40145..c0d88f0 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtil.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtil.java @@ -42,6 +42,8 @@ public class WebUtil { private WebUtil() { } + + public static WebUtil getInstance() { return instance; } @@ -166,11 +168,13 @@ public class WebUtil { Request request = new Request.Builder().url("http://120.77.182.38/occupation/" + occupationName + "/").build(); 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/body_bg.png b/app/src/main/res/drawable/body_bg.png index ded6ac3..91fa8db 100644 Binary files a/app/src/main/res/drawable/body_bg.png and b/app/src/main/res/drawable/body_bg.png differ diff --git a/app/src/main/res/drawable/ic_add_recipe.xml b/app/src/main/res/drawable/ic_add_recipe.xml new file mode 100644 index 0000000..3b209e7 --- /dev/null +++ b/app/src/main/res/drawable/ic_add_recipe.xml @@ -0,0 +1,8 @@ + + + + + + + diff --git a/app/src/main/res/drawable/ic_ill_add_button.xml b/app/src/main/res/drawable/ic_ill_add_button.xml new file mode 100644 index 0000000..7fce1dd --- /dev/null +++ b/app/src/main/res/drawable/ic_ill_add_button.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/app/src/main/res/layout/activity_customization.xml b/app/src/main/res/layout/activity_customization.xml index 89e5af6..d570e29 100644 --- a/app/src/main/res/layout/activity_customization.xml +++ b/app/src/main/res/layout/activity_customization.xml @@ -8,6 +8,26 @@ tools:context="com.example.ninefourone.nutritionmaster.modules.viewpagerfragments.customization.CustomizationActivity"> + + + + + + + @@ -51,15 +71,16 @@ + android:layout_height="80dp" + android:layout_marginBottom="10dp" + android:background="#f4f2f2" + android:paddingTop="5dp"> @@ -87,15 +108,16 @@ + android:layout_height="230dp" + android:layout_marginBottom="10dp" + android:background="#f4f2f2" + android:paddingTop="5dp"> @@ -123,8 +145,10 @@ + android:layout_height="230dp" + android:layout_marginBottom="10dp" + android:background="#f4f2f2" + android:paddingTop="5dp"> diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index cbeed1b..fa8c3ed 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -110,6 +110,7 @@ android:layout_alignParentRight="true" app:bmb_buttonEnum="ham" app:bmb_buttonPlaceEnum="buttonPlace_ham_2" + app:bmb_normalColor="#8cbc79" app:bmb_piecePlaceEnum="piecePlace_ham_2" /> @@ -177,6 +178,8 @@ + + + + + + - - - - diff --git a/app/src/main/res/layout/activity_material_result.xml b/app/src/main/res/layout/activity_material_result.xml index 04dda61..c86ba87 100644 --- a/app/src/main/res/layout/activity_material_result.xml +++ b/app/src/main/res/layout/activity_material_result.xml @@ -10,6 +10,7 @@ diff --git a/app/src/main/res/layout/activity_recipe.xml b/app/src/main/res/layout/activity_recipe.xml index 478ded1..26f9aaa 100644 --- a/app/src/main/res/layout/activity_recipe.xml +++ b/app/src/main/res/layout/activity_recipe.xml @@ -1,5 +1,5 @@ - - + android:layout_height="match_parent" + android:orientation="vertical"> - + android:layout_height="250dp"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - + - - - - - - - - - - - - + app:layout_behavior="@string/appbar_scrolling_view_behavior"> - + android:layout_height="wrap_content" + android:orientation="vertical"> + + + + + + + + + + + + + + + + + + - + android:layout_width="match_parent" + android:layout_height="100dp" /> + - + - + - + - - - - - - - - - - - + diff --git a/app/src/main/res/layout/body_information_fragment.xml b/app/src/main/res/layout/body_information_fragment.xml index d6cea8f..862eedf 100644 --- a/app/src/main/res/layout/body_information_fragment.xml +++ b/app/src/main/res/layout/body_information_fragment.xml @@ -149,6 +149,7 @@ android:src="@drawable/ic_infor_weight" /> + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/customization_item.xml b/app/src/main/res/layout/customization_item.xml index 7a79ed8..2feeed9 100644 --- a/app/src/main/res/layout/customization_item.xml +++ b/app/src/main/res/layout/customization_item.xml @@ -4,10 +4,11 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="70dp" - android:layout_margin="5dp" + android:layout_margin="2dp" app:cardCornerRadius="15dp"> @@ -68,6 +69,7 @@ android:layout_height="wrap_content" android:layout_marginRight="5dp" android:layout_toLeftOf="@id/arch" + android:gravity="center_vertical" android:textSize="11sp" tools:text="365千卡" /> diff --git a/app/src/main/res/layout/element_dialog.xml b/app/src/main/res/layout/element_dialog.xml new file mode 100644 index 0000000..2912f3e --- /dev/null +++ b/app/src/main/res/layout/element_dialog.xml @@ -0,0 +1,413 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/make_step_item.xml b/app/src/main/res/layout/make_step_item.xml index 8dcf491..2daeaeb 100644 --- a/app/src/main/res/layout/make_step_item.xml +++ b/app/src/main/res/layout/make_step_item.xml @@ -3,14 +3,17 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" + android:background="#f9f9f6" + android:gravity="center_vertical" android:orientation="vertical"> diff --git a/app/src/main/res/layout/material_item.xml b/app/src/main/res/layout/material_item.xml index 3aa6b56..95e8810 100644 --- a/app/src/main/res/layout/material_item.xml +++ b/app/src/main/res/layout/material_item.xml @@ -3,6 +3,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="50dp" + android:background="#f9f9f6" android:gravity="center_vertical"> diff --git a/app/src/main/res/layout/material_result_item.xml b/app/src/main/res/layout/material_result_item.xml new file mode 100644 index 0000000..684cdcb --- /dev/null +++ b/app/src/main/res/layout/material_result_item.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/recommend_item_big.xml b/app/src/main/res/layout/recommend_item_big.xml deleted file mode 100644 index 98203a4..0000000 --- a/app/src/main/res/layout/recommend_item_big.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/recommend_item_detail.xml b/app/src/main/res/layout/recommend_item_detail.xml index abad286..c305e5b 100644 --- a/app/src/main/res/layout/recommend_item_detail.xml +++ b/app/src/main/res/layout/recommend_item_detail.xml @@ -11,9 +11,9 @@ + app:cardCornerRadius="20dp" + app:cardElevation="0dp"> + + android:paddingBottom="5dp" + android:paddingLeft="15dp" + android:paddingRight="15dp" + android:paddingTop="5dp"> + android:gravity="center_horizontal" + android:text="小知识" + android:textSize="12sp" + android:textStyle="bold" /> + \ No newline at end of file diff --git a/app/src/main/res/layout/recommend_item_middle.xml b/app/src/main/res/layout/recommend_item_middle.xml index d68c316..55cf6ff 100644 --- a/app/src/main/res/layout/recommend_item_middle.xml +++ b/app/src/main/res/layout/recommend_item_middle.xml @@ -27,7 +27,7 @@ diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 65fe929..d48a02a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -7,6 +7,7 @@ 食材识别 菜品识别 登录 + 是否添加到已吃记录 Email