Commit 19751895 by 王宇航

首頁三張報表UI

parent ad92fa90
......@@ -10,7 +10,7 @@ project.dependencies.add('api', project(':cc')) //用最新版
dependencies {
if (project.name != 'public-base' && project.name != 'arms') {
implementation project(':public-base')
api project(':public-base')
}
if (project.name != 'arms') {
implementation project(':arms')
......
......@@ -3,16 +3,18 @@ package com.gingersoft.gsa.cloud.download.mvp.ui.activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.download.R;
import com.gingersoft.gsa.cloud.download.R2;
import com.gingersoft.gsa.cloud.download.di.component.DaggerDownloadComponent;
import com.gingersoft.gsa.cloud.download.mvp.contract.DownloadContract;
import com.gingersoft.gsa.cloud.download.mvp.presenter.DownloadPresenter;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.jess.arms.base.BaseActivity;
import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.gingersoft.gsa.cloud.download.mvp.contract.DownloadContract;
import com.gingersoft.gsa.cloud.download.mvp.presenter.DownloadPresenter;
import com.qmuiteam.qmui.widget.QMUITopBar;
import androidx.annotation.NonNull;
......@@ -20,6 +22,7 @@ import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import butterknife.BindView;
import static com.jess.arms.utils.Preconditions.checkNotNull;
......@@ -118,7 +121,8 @@ public class DownloadActivity extends BaseActivity<DownloadPresenter> implements
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.snackbarText(message);
// ArmsUtils.snackbarText(message);
ToastUtils.show(mContext, message);
}
@Override
......
......@@ -53,7 +53,7 @@ dependencies {
implementation rootProject.ext.dependencies["BaseRecyclerViewAdapter"]
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
implementation 'cn.bingoogolapple:bga-progressbar:1.0.1'//进度条
//報表圖
implementation project(':chart')
implementation files('libs/nineoldandroids-2.4.0.jar')
......
......@@ -7,6 +7,7 @@
<application>
<activity android:name=".mvp.ui.activity.NewMainActivity"/>
<activity android:name=".mvp.ui.activity.MainActivity"/>
<activity android:name=".mvp.ui.activity.ReportActivity"/>
<!-- arms配置 -->
<meta-data
android:name="com.gingersoft.gsa.cloud.globalconfig.GlobalConfiguration"
......
......@@ -18,17 +18,17 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".mvp.ui.activity.ReportActivity"></activity>
<activity android:name=".mvp.ui.activity.ReportActivity"/>
<activity android:name=".mvp.ui.activity.MainActivity" />
<activity
android:name=".mvp.ui.activity.NewMainActivity"
android:theme="@style/MainTheme">
<!-- <intent-filter>-->
<!-- <action android:name="android.intent.action.MAIN" />-->
<!-- <action android:name="android.intent.action.VIEW" />-->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.VIEW" />
<!-- <category android:name="android.intent.category.LAUNCHER" />-->
<!-- </intent-filter>-->
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
......
package com.gingersoft.gsa.cloud.main.mvp.model.bean;
/**
* Created by Wyh on 2020/2/24.
*/
public class BusinessBean {
private String projectName;
private String amount;
public BusinessBean(String projectName, String amount) {
this.projectName = projectName;
this.amount = amount;
}
public String getProjectName() {
return projectName;
}
public void setProjectName(String projectName) {
this.projectName = projectName;
}
public String getAmount() {
return amount;
}
public void setAmount(String amount) {
this.amount = amount;
}
}
package com.gingersoft.gsa.cloud.main.mvp.model.bean;
/**
* Created by Wyh on 2020/2/24.
* 支付方式
*/
public class PaymentMethodBean {
private int color;
private String payMentName;
private float percentage;
private float amount;
public PaymentMethodBean() {
}
public PaymentMethodBean(int color, String payMentName, float percentage, float amount) {
this.color = color;
this.payMentName = payMentName;
this.percentage = percentage;
this.amount = amount;
}
public int getColor() {
return color;
}
public void setColor(int color) {
this.color = color;
}
public String getPayMentName() {
return payMentName;
}
public void setPayMentName(String payMentName) {
this.payMentName = payMentName;
}
public float getPercentage() {
return percentage;
}
public void setPercentage(float percentage) {
this.percentage = percentage;
}
public float getAmount() {
return amount;
}
public void setAmount(float amount) {
this.amount = amount;
}
}
package com.gingersoft.gsa.cloud.main.mvp.model.bean;
import java.util.List;
/**
* Created by Wyh on 2020/2/24.
* 銷售報表-食品分析-食品排行榜數據對象
*/
public class SalesReportBean {
/**
* code : 1
* errorMsg : 操作成功
* data : [{"PercentageTotal":"24.4%","foodName":"冲绳黑糖奶盖茶冲绳黑糖奶盖茶","PercentageNum":"0.6%","averageTotal":3.38,"sumNum":77,"sumTotal":260},{"PercentageTotal":"14%","foodName":"柠檬红茶","PercentageNum":"0.2%","averageTotal":6,"sumNum":25,"sumTotal":150},{"PercentageTotal":"9.2%","foodName":"[午]海南雞飯","PercentageNum":"0%","averageTotal":49,"sumNum":2,"sumTotal":98},{"PercentageTotal":"6.3%","foodName":"米紙脆春卷","PercentageNum":"0%","averageTotal":68,"sumNum":1,"sumTotal":68},{"PercentageTotal":"9.2%","foodName":"粒粒有戏火鸡比萨","PercentageNum":"0%","averageTotal":98,"sumNum":1,"sumTotal":98},{"PercentageTotal":"6.3%","foodName":"胡椒雞翼","PercentageNum":"0%","averageTotal":68,"sumNum":1,"sumTotal":68},{"PercentageTotal":"7.3%","foodName":"蠔煎(大)","PercentageNum":"0%","averageTotal":78,"sumNum":1,"sumTotal":78},{"PercentageTotal":"6.3%","foodName":"蠔煎(小)","PercentageNum":"0%","averageTotal":68,"sumNum":1,"sumTotal":68},{"PercentageTotal":"10.1%","foodName":"[午]咖喱海鮮叻沙","PercentageNum":"0%","averageTotal":108,"sumNum":1,"sumTotal":108},{"PercentageTotal":"6.3%","foodName":"香茅煎豬頸肉","PercentageNum":"0%","averageTotal":68,"sumNum":1,"sumTotal":68}]
* page : null
*/
private String code;
private String errorMsg;
private Object page;
private List<DataBean> data;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getErrorMsg() {
return errorMsg;
}
public void setErrorMsg(String errorMsg) {
this.errorMsg = errorMsg;
}
public Object getPage() {
return page;
}
public void setPage(Object page) {
this.page = page;
}
public List<DataBean> getData() {
return data;
}
public void setData(List<DataBean> data) {
this.data = data;
}
public static class DataBean {
/**
* PercentageTotal : 24.4%
* foodName : 冲绳黑糖奶盖茶冲绳黑糖奶盖茶
* PercentageNum : 0.6%
* averageTotal : 3.38
* sumNum : 77
* sumTotal : 260
*/
private String PercentageTotal;
private String foodName;
private String PercentageNum;
private double averageTotal;
private int sumNum;
private int sumTotal;
public DataBean() {
}
public DataBean(String percentageTotal, String foodName, String percentageNum, double averageTotal, int sumNum, int sumTotal) {
PercentageTotal = percentageTotal;
this.foodName = foodName;
PercentageNum = percentageNum;
this.averageTotal = averageTotal;
this.sumNum = sumNum;
this.sumTotal = sumTotal;
}
public String getPercentageTotal() {
return PercentageTotal;
}
public void setPercentageTotal(String PercentageTotal) {
this.PercentageTotal = PercentageTotal;
}
public String getFoodName() {
return foodName;
}
public void setFoodName(String foodName) {
this.foodName = foodName;
}
public String getPercentageNum() {
return PercentageNum;
}
public void setPercentageNum(String PercentageNum) {
this.PercentageNum = PercentageNum;
}
public double getAverageTotal() {
return averageTotal;
}
public void setAverageTotal(double averageTotal) {
this.averageTotal = averageTotal;
}
public int getSumNum() {
return sumNum;
}
public void setSumNum(int sumNum) {
this.sumNum = sumNum;
}
public int getSumTotal() {
return sumTotal;
}
public void setSumTotal(int sumTotal) {
this.sumTotal = sumTotal;
}
}
}
......@@ -6,6 +6,7 @@ import android.view.KeyEvent;
import android.widget.BaseAdapter;
import com.gingersoft.gsa.cloud.base.qmui.arch.QMUIFragmentPagerAdapter;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.R2;
import com.gingersoft.gsa.cloud.main.di.component.DaggerMainComponent;
......@@ -181,7 +182,8 @@ public class MainActivity extends BaseFragmentActivity<MainPresenter> implements
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.snackbarText(message);
// ArmsUtils.snackbarText(message);
ToastUtils.show(mContext, message);
}
@Override
......
package com.gingersoft.gsa.cloud.main.mvp.ui.activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.utils.JsonUtils;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.R2;
import com.gingersoft.gsa.cloud.main.di.component.DaggerNewMainComponent;
......@@ -19,12 +20,10 @@ import com.gingersoft.gsa.cloud.main.mvp.presenter.NewMainPresenter;
import com.gingersoft.gsa.cloud.main.mvp.ui.adapter.MainOrderingAdapter;
import com.gingersoft.gsa.cloud.main.mvp.ui.view.SlidingMenu;
import com.gingersoft.gsa.cloud.ui.bean.mode.LoginBean;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionTextItem;
import com.gingersoft.gsa.cloud.ui.widget.dialog.ChooseRestaurantDialog;
import com.jess.arms.base.BaseActivity;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.sxu.shadowdrawable.ShadowDrawable;
import java.util.ArrayList;
import java.util.List;
......@@ -37,7 +36,6 @@ import butterknife.BindView;
import butterknife.OnClick;
import static com.jess.arms.utils.Preconditions.checkNotNull;
import static com.qmuiteam.qmui.util.QMUIDisplayHelper.dpToPx;
/**
......@@ -65,10 +63,10 @@ public class NewMainActivity extends BaseActivity<NewMainPresenter> implements N
@BindView(R2.id.slideMenu)
SlidingMenu slideMenu;
@BindView(R2.id.layout_ordering_meals)
LinearLayout orderingMeals;
@BindView(R2.id.layout_management)
LinearLayout layoutManagement;
// @BindView(R2.id.layout_ordering_meals)
// LinearLayout orderingMeals;
// @BindView(R2.id.layout_management)
// LinearLayout layoutManagement;
@BindView(R2.id.tv_restaurant_name)
TextView tvRestaurantName;
@BindView(R2.id.tv_username)
......@@ -98,15 +96,10 @@ public class NewMainActivity extends BaseActivity<NewMainPresenter> implements N
public void initData(@Nullable Bundle savedInstanceState) {
initShadow();
initFuncationData();
setTopInfo();
}
private void initShadow() {
ShadowUtil.setShadowDrawable(orderingMeals, Color.parseColor("#FFFFFF"), dpToPx(5),
Color.parseColor("#73888888"), dpToPx(5), 0, 2);
ShadowUtil.setShadowDrawable(layoutManagement, Color.parseColor("#FFFFFF"), dpToPx(5),
Color.parseColor("#00000000"), dpToPx(5), 0, 2);
}
private void initFuncationData() {
......@@ -190,10 +183,7 @@ public class NewMainActivity extends BaseActivity<NewMainPresenter> implements N
if (brandsBeans != null && brandsBeans.size() > 0) {
new ChooseRestaurantDialog.BottomListSheetBuilder(this)
.addBrandItems(brandsBeans)
.setOnItemClickListener(new ChooseRestaurantDialog.BottomListSheetBuilder.OnItemClickListener() {
@Override
public void onItemClick(ChooseRestaurantDialog dialog, SectionTextItem item, int position) {
.setOnItemClickListener((dialog, item, position) -> {
GsaCloudApplication.setRestaurantId(NewMainActivity.this, item.getId());
GsaCloudApplication.setRestaurantName(NewMainActivity.this, item.getText());
setTopInfo();
......@@ -202,7 +192,6 @@ public class NewMainActivity extends BaseActivity<NewMainPresenter> implements N
.build()
.call();
dialog.dismiss();
}
})
.build()
.show();
......@@ -248,7 +237,8 @@ public class NewMainActivity extends BaseActivity<NewMainPresenter> implements N
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.snackbarText(message);
// ArmsUtils.snackbarText(message);
ToastUtils.show(mContext, message);
}
@Override
......
......@@ -5,6 +5,7 @@ import android.os.Bundle;
import android.util.TypedValue;
import android.widget.TextView;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.R2;
import com.gingersoft.gsa.cloud.main.di.component.DaggerReportComponent;
......@@ -192,7 +193,8 @@ public class ReportActivity extends BaseActivity<ReportPresenter> implements Rep
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.snackbarText(message);
// ArmsUtils.snackbarText(message);
ToastUtils.show(mContext, message);
}
@Override
......
package com.gingersoft.gsa.cloud.main.mvp.ui.adapter;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.BusinessBean;
import java.util.List;
import androidx.annotation.Nullable;
/**
* Created by Wyh on 2020/2/24.
*/
public class BusinessInfoAdapter extends BaseQuickAdapter<BusinessBean, BaseViewHolder> {
public BusinessInfoAdapter(@Nullable List<BusinessBean> data) {
super(R.layout.report_business_info_item, data);
}
@Override
protected void convert(BaseViewHolder helper, BusinessBean item) {
}
}
package com.gingersoft.gsa.cloud.main.mvp.ui.adapter;
import android.content.Context;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.SalesReportBean;
import java.util.List;
import androidx.annotation.Nullable;
/**
* Created by Wyh on 2020/2/24.
*/
public class FoodRankingAdapter extends BaseQuickAdapter<SalesReportBean.DataBean, BaseViewHolder> {
private Context mContext;
public FoodRankingAdapter(Context mContext, @Nullable List<SalesReportBean.DataBean> data) {
super(R.layout.item_food_ranking, data);
this.mContext = mContext;
}
@Override
protected void convert(BaseViewHolder helper, SalesReportBean.DataBean item) {
if (helper.getAdapterPosition() == 0) {
helper.setTextColor(R.id.tv_ranking_foodname, mContext.getResources().getColor(R.color.theme_hint_color));
helper.setTextColor(R.id.tv_ranking_food_sales_num, mContext.getResources().getColor(R.color.theme_hint_color));
helper.setTextColor(R.id.tv_ranking_food_sales_amount, mContext.getResources().getColor(R.color.theme_hint_color));
helper.setTextColor(R.id.tv_ranking_food_unit_price, mContext.getResources().getColor(R.color.theme_hint_color));
helper.setTextColor(R.id.tv_ranking_proportion_quantity, mContext.getResources().getColor(R.color.theme_hint_color));
helper.setTextColor(R.id.tv_ranking_ratio_amount, mContext.getResources().getColor(R.color.theme_hint_color));
helper.setText(R.id.tv_ranking_food_unit_price, "食品名稱");
helper.setText(R.id.tv_ranking_foodname, "銷售數量");
helper.setText(R.id.tv_ranking_food_sales_num, "銷售金額");
helper.setText(R.id.tv_ranking_food_sales_amount, "單價");
helper.setText(R.id.tv_ranking_proportion_quantity, "數量佔比");
helper.setText(R.id.tv_ranking_ratio_amount, "金額佔比");
} else {
helper.setTextColor(R.id.tv_ranking_foodname, mContext.getResources().getColor(R.color.color_8f));
helper.setTextColor(R.id.tv_ranking_food_sales_num, mContext.getResources().getColor(R.color.color_3c));
helper.setTextColor(R.id.tv_ranking_food_sales_amount, mContext.getResources().getColor(R.color.color_3c));
helper.setTextColor(R.id.tv_ranking_food_unit_price, mContext.getResources().getColor(R.color.color_3c));
helper.setTextColor(R.id.tv_ranking_proportion_quantity, mContext.getResources().getColor(R.color.color_3c));
helper.setTextColor(R.id.tv_ranking_ratio_amount, mContext.getResources().getColor(R.color.color_3c));
helper.setText(R.id.tv_ranking_food_unit_price, item.getAverageTotal() + "");
helper.setText(R.id.tv_ranking_foodname, item.getFoodName());
helper.setText(R.id.tv_ranking_food_sales_num, item.getSumNum() + "");
helper.setText(R.id.tv_ranking_food_sales_amount, item.getSumTotal() + "");
helper.setText(R.id.tv_ranking_proportion_quantity, item.getPercentageNum());
helper.setText(R.id.tv_ranking_ratio_amount, item.getPercentageTotal());
}
}
}
package com.gingersoft.gsa.cloud.main.mvp.ui.adapter;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.PaymentMethodBean;
import java.util.List;
import androidx.annotation.Nullable;
/**
* Created by Wyh on 2020/2/24.
*/
public class PaymentMethodAdapter extends BaseQuickAdapter<PaymentMethodBean, BaseViewHolder> {
public PaymentMethodAdapter(@Nullable List<PaymentMethodBean> data) {
super(R.layout.item_payment_method, data);
}
@Override
protected void convert(BaseViewHolder helper, PaymentMethodBean item) {
}
}
package com.gingersoft.gsa.cloud.main.mvp.ui.adapter;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.PaymentMethodBean;
import java.util.List;
import androidx.annotation.Nullable;
/**
* Created by Wyh on 2020/2/24.
*/
public class PaymentMethodColorAdapter extends BaseQuickAdapter<PaymentMethodBean, BaseViewHolder> {
public PaymentMethodColorAdapter(@Nullable List<PaymentMethodBean> data) {
super(R.layout.item_payment_color, data);
}
@Override
protected void convert(BaseViewHolder helper, PaymentMethodBean item) {
// helper.setBackgroundColor(R.id.circle_color, item.getColor());
helper.setText(R.id.tv_payment_method, item.getPayMentName());
}
}
package com.gingersoft.gsa.cloud.main.mvp.ui.adapter;
import android.content.Context;
import android.view.View;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.gingersoft.gsa.cloud.main.R;
import java.util.List;
import androidx.annotation.Nullable;
/**
* Created by Wyh on 2020/2/24.
* 排序編號adapter
*/
public class SortNumberingAdapter extends BaseQuickAdapter<String, BaseViewHolder> {
private Context mContext;
public SortNumberingAdapter(Context mContext, @Nullable List<String> data) {
super(R.layout.item_ranking_numbering, data);
this.mContext = mContext;
}
@Override
protected void convert(BaseViewHolder helper, String item) {
helper.getView(R.id.iv_ranking_numbering).setVisibility(View.GONE);
if (helper.getAdapterPosition() == 0) {
helper.setText(R.id.tv_ranking_numbering, "排序");
helper.setTextColor(R.id.tv_ranking_numbering, mContext.getResources().getColor(R.color.theme_hint_color));
} else if (helper.getAdapterPosition() == 1) {
helper.setText(R.id.tv_ranking_numbering, "");
helper.setImageResource(R.id.iv_ranking_numbering, R.drawable.ic_ranking_first);
helper.getView(R.id.iv_ranking_numbering).setVisibility(View.VISIBLE);
} else if (helper.getAdapterPosition() == 2) {
helper.setText(R.id.tv_ranking_numbering, "");
helper.setImageResource(R.id.iv_ranking_numbering, R.drawable.ic_ranking_second);
helper.getView(R.id.iv_ranking_numbering).setVisibility(View.VISIBLE);
} else if (helper.getAdapterPosition() == 3) {
helper.setText(R.id.tv_ranking_numbering, "");
helper.setImageResource(R.id.iv_ranking_numbering, R.drawable.ic_ranking_third);
helper.getView(R.id.iv_ranking_numbering).setVisibility(View.VISIBLE);
} else {
helper.setText(R.id.tv_ranking_numbering, helper.getAdapterPosition() + "");
helper.setTextColor(R.id.tv_ranking_numbering, mContext.getResources().getColor(R.color.color_8f));
}
}
}
package com.gingersoft.gsa.cloud.main.mvp.ui.fragment;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.DashPathEffect;
import android.os.Bundle;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import com.daivd.chart.component.axis.HorizontalAxis;
import com.daivd.chart.component.axis.VerticalAxis;
import com.daivd.chart.component.base.IAxis;
import com.daivd.chart.core.LineChart;
import com.daivd.chart.data.ChartData;
import com.daivd.chart.data.LineData;
import com.daivd.chart.data.style.FontStyle;
import com.daivd.chart.data.style.LineStyle;
import com.daivd.chart.data.style.PointStyle;
import com.daivd.chart.provider.component.point.Point;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.R2;
import com.gingersoft.gsa.cloud.main.di.component.DaggerBusinessReportComponent;
import com.gingersoft.gsa.cloud.main.mvp.contract.BusinessReportContract;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.BusinessBean;
import com.gingersoft.gsa.cloud.main.mvp.presenter.BusinessReportPresenter;
import com.gingersoft.gsa.cloud.ui.view.utils.ShadowUtil;
import com.gingersoft.gsa.cloud.main.mvp.ui.adapter.BusinessInfoAdapter;
import com.gingersoft.gsa.cloud.main.mvp.ui.view.CustomMarkView;
import com.jess.arms.base.BaseFragment;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import java.util.ArrayList;
import java.util.List;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import butterknife.BindView;
import static com.jess.arms.utils.Preconditions.checkNotNull;
......@@ -41,10 +60,10 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
*/
public class BusinessReportFragment extends BaseFragment<BusinessReportPresenter> implements BusinessReportContract.View {
@BindView(R2.id.layout_business_chart)
LinearLayout mBusinessChart;
@BindView(R2.id.layout_business_info)
LinearLayout mBusinessInfo;
@BindView(R2.id.report_business_chart)
LineChart mLineChart;
@BindView(R2.id.rv_business_details)
RecyclerView mBusinessDetails;
public static BusinessReportFragment newInstance() {
BusinessReportFragment fragment = new BusinessReportFragment();
......@@ -68,8 +87,136 @@ public class BusinessReportFragment extends BaseFragment<BusinessReportPresenter
@Override
public void initData(@Nullable Bundle savedInstanceState) {
ShadowUtil.setShadowDrawable(mBusinessChart);
ShadowUtil.setShadowDrawable(mBusinessInfo);
loadReport();
List<BusinessBean> businessBeans = new ArrayList<>();
for (int i = 0; i < 12; i++) {
businessBeans.add(new BusinessBean("項目總金額", "10000.0"));
}
mBusinessDetails.setLayoutManager(new GridLayoutManager(mContext, 3) {
@Override
public boolean canScrollVertically() {
return false;
}
});
mBusinessDetails.setAdapter(new BusinessInfoAdapter(businessBeans));
}
private void loadReport() {
Resources res = getResources();
FontStyle.setDefaultTextSpSize(mContext, 12);
//
List<String> chartYDataList = new ArrayList<>();
chartYDataList.add("00:00");
chartYDataList.add("04:00");
chartYDataList.add("08:00");
chartYDataList.add("12:00");
chartYDataList.add("16:00");
chartYDataList.add("20:00");
chartYDataList.add("24:00");
List<LineData> ColumnDatas = new ArrayList<>();
//第一條線
ArrayList<Double> tempList1 = new ArrayList<>();
tempList1.add(1880d);
tempList1.add(1920d);
tempList1.add(4920d);
tempList1.add(2930d);
tempList1.add(4950d);
tempList1.add(2340d);
final LineData columnData1 = new LineData("今日", "", getResources().getColor(R.color.theme_color), tempList1);
columnData1.setLineStyle(new LineStyle(mContext, 5, getResources().getColor(R.color.theme_color)));
//第二條線
// ArrayList<Double> humidityList = new ArrayList<>();
// humidityList.add(1790d);
// humidityList.add(2450d);
// humidityList.add(6430d);
// humidityList.add(2360d);
// humidityList.add(17900d);
// humidityList.add(3460d);
// humidityList.add(2410d);
// humidityList.add(4640d);
// LineData columnData2 = new LineData("昨日", "", getResources().getColor(R.color.today_line), humidityList);
// columnData2.setLineStyle(new LineStyle(mContext, 5, getResources().getColor(R.color.today_line)));
ColumnDatas.add(columnData1);
// ColumnDatas.add(columnData2);
ChartData<LineData> chartData2 = new ChartData<>("Line chart", chartYDataList, ColumnDatas);
//設置曲線圖樣式
mLineChart.setLineModel(LineChart.CURVE_MODEL);
//獲取左側垂直軸線
VerticalAxis verticalAxis = mLineChart.getLeftVerticalAxis();
//獲取橫向軸線
HorizontalAxis horizontalAxis = mLineChart.getHorizontalAxis();
//右側軸線
VerticalAxis rightAxis = mLineChart.getRightVerticalAxis();
//設置右側軸線不顯示
rightAxis.setDisplay(false);
//设置竖轴方向在左側
verticalAxis.setAxisDirection(IAxis.AxisDirection.LEFT);
verticalAxis.setStartZero(true);
verticalAxis.setMaxValue(18000);
//设置网格
verticalAxis.setDrawGrid(true);
//设置横轴方向
horizontalAxis.setAxisDirection(IAxis.AxisDirection.BOTTOM);
//不顯示網格
horizontalAxis.setDrawGrid(false);
horizontalAxis.getAxisStyle().setWidth(mContext, 1).setColor(res.getColor(R.color.theme_color));
//设置线条样式
verticalAxis.getAxisStyle().setWidth(mContext, 1).setColor(res.getColor(R.color.theme_color));
//設置網格虛線樣式
DashPathEffect effects = new DashPathEffect(new float[]{1, 2, 4, 8}, 1);
verticalAxis.setGridStyle(new LineStyle(0.5f, res.getColor(R.color.report_dotted_line_color)));
verticalAxis.getGridStyle().setEffect(effects);
FontStyle scaleStyle = new FontStyle(mContext, 9, res.getColor(R.color.report_left_scale));
scaleStyle.setScalePadding(30);
horizontalAxis.setScaleStyle(scaleStyle);
verticalAxis.setScaleStyle(scaleStyle);
mLineChart.setZoom(false);
//开启十字架
mLineChart.getProvider().setOpenCross(true);
//开启MarkView
mLineChart.getProvider().setOpenMark(true);
//设置MarkView
mLineChart.getProvider().setMarkView(new CustomMarkView(mContext));
//设置显示点
Point point = new Point();
point.getPointStyle().setShape(PointStyle.CIRCLE);
//设置显示点的样式
mLineChart.getProvider().setPoint(point);
//设置显示标题
mLineChart.setShowChartName(false);
//底部不顯示顏色代表的意思
mLineChart.getLegend().setDisplay(false);
mLineChart.getMatrixHelper().setWidthMultiple(0.9f);
mLineChart.getHorizontalAxis().setRotateAngle(0);//設置底部文字旋轉角度
mLineChart.setFirstAnim(false);
mLineChart.setChartData(chartData2);
mLineChart.setOnClickColumnListener((lineData, pos) -> {
// Paint paint = new Paint();
// paint.setAntiAlias(true);
// paint.setTextSize(DensityUtils.sp2px(mContext, 13));
// paint.setStyle(Paint.Style.FILL);
// paint.setColor(Color.WHITE);
// MultiLineBubbleTip tip = new MultiLineBubbleTip<LineData>(mContext,
// R.mipmap.round_rect, R.mipmap.triangle, paint) {
// @Override
// public boolean isShowTip(LineData lineData, int position) {
// return position == pos;
// }
//
// @Override
// public String[] format(LineData lineData, int position) {
// String title = lineData.getName();
// String value = lineData.getChartYDataList().get(position) + lineData.getUnit();
// return new String[]{title, value};
// }
// };
// tip.setColorFilter(Color.parseColor("#FA8072"));
// tip.setAlpha(0.8f);
// mLineChart.getProvider().setTip(tip);
// mLineChart.invalidate();
});
}
/**
......@@ -126,7 +273,8 @@ public class BusinessReportFragment extends BaseFragment<BusinessReportPresenter
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.snackbarText(message);
// ArmsUtils.snackbarText(message);
ToastUtils.show(mContext, message);
}
@Override
......
......@@ -12,15 +12,15 @@ import android.widget.TextView;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.R2;
import com.gingersoft.gsa.cloud.main.di.component.DaggerHomeComponent;
import com.gingersoft.gsa.cloud.main.mvp.contract.HomeContract;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.HomeTurnoverBean;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionHeader;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionNormalItem;
import com.gingersoft.gsa.cloud.main.mvp.presenter.HomePresenter;
import com.gingersoft.gsa.cloud.main.mvp.ui.adapter.HomeFunctionAdapter;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionHeader;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionNormalItem;
import com.jess.arms.base.BaseFragment;
import com.jess.arms.di.component.AppComponent;
......@@ -228,7 +228,8 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements HomeCon
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.snackbarText(message);
// ArmsUtils.snackbarText(message);
ToastUtils.show(mContext, message);
}
@Override
......
......@@ -2,7 +2,6 @@ package com.gingersoft.gsa.cloud.main.mvp.ui.fragment;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.DashPathEffect;
import android.os.Bundle;
import android.os.Message;
......@@ -25,6 +24,7 @@ import com.daivd.chart.provider.component.point.Point;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.utils.MoneyUtil;
import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.R2;
import com.gingersoft.gsa.cloud.main.di.component.DaggerMainTopComponent;
......@@ -32,8 +32,6 @@ import com.gingersoft.gsa.cloud.main.mvp.contract.MainTopContract;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.HomeTurnoverBean;
import com.gingersoft.gsa.cloud.main.mvp.presenter.MainTopPresenter;
import com.gingersoft.gsa.cloud.main.mvp.ui.activity.ReportActivity;
import com.gingersoft.gsa.cloud.main.mvp.ui.view.CustomMarkView;
import com.gingersoft.gsa.cloud.ui.view.utils.ShadowUtil;
import com.jess.arms.base.BaseFragment;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
......@@ -50,7 +48,6 @@ import butterknife.ButterKnife;
import butterknife.OnClick;
import static com.jess.arms.utils.Preconditions.checkNotNull;
import static com.qmuiteam.qmui.util.QMUIDisplayHelper.dpToPx;
/**
......@@ -119,10 +116,10 @@ public class MainTopFragment extends BaseFragment<MainTopPresenter> implements M
public View initView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_main_top, container, false);
ButterKnife.bind(this, view);
ShadowUtil.setShadowDrawable(view.findViewById(R.id.cv_white_bg), Color.parseColor("#FFFFFF"), dpToPx(5),
Color.parseColor("#73888888"), dpToPx(5), 0, 2);
ShadowUtil.setShadowDrawable(view.findViewById(R.id.layout_info), Color.parseColor("#FFFFFF"), dpToPx(5),
Color.parseColor("#73888888"), dpToPx(5), 0, 2);
// ShadowUtil.setShadowDrawable(view.findViewById(R.id.cv_white_bg), Color.parseColor("#FFFFFF"), dpToPx(5),
// Color.parseColor("#73888888"), dpToPx(5), 0, 2);
// ShadowUtil.setShadowDrawable(view.findViewById(R.id.layout_info), Color.parseColor("#FFFFFF"), dpToPx(5),
// Color.parseColor("#73888888"), dpToPx(5), 0, 2);
return view;
}
......@@ -171,8 +168,8 @@ public class MainTopFragment extends BaseFragment<MainTopPresenter> implements M
humidityList.add(4640d);
LineData columnData2 = new LineData("昨日", "", getResources().getColor(R.color.today_line), humidityList);
columnData2.setLineStyle(new LineStyle(mContext, 5, getResources().getColor(R.color.today_line)));
ColumnDatas.add(columnData1);
ColumnDatas.add(columnData2);
ColumnDatas.add(columnData1);
ChartData<LineData> chartData2 = new ChartData<>("Line chart", chartYDataList, ColumnDatas);
//設置曲線圖樣式
......@@ -210,9 +207,9 @@ public class MainTopFragment extends BaseFragment<MainTopPresenter> implements M
//开启十字架
lineChart.getProvider().setOpenCross(true);
//开启MarkView
lineChart.getProvider().setOpenMark(true);
// lineChart.getProvider().setOpenMark(true);
//设置MarkView
lineChart.getProvider().setMarkView(new CustomMarkView(mContext));
// lineChart.getProvider().setMarkView(new CustomMarkView(mContext));
//设置显示点
Point point = new Point();
point.getPointStyle().setShape(PointStyle.CIRCLE);
......@@ -308,7 +305,8 @@ public class MainTopFragment extends BaseFragment<MainTopPresenter> implements M
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.snackbarText(message);
// ArmsUtils.snackbarText(message);
ToastUtils.show(mContext, message);
}
@Override
......
......@@ -2,11 +2,11 @@ package com.gingersoft.gsa.cloud.main.mvp.ui.fragment;
import android.content.Intent;
import android.os.Bundle;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.R2;
import com.gingersoft.gsa.cloud.main.di.component.DaggerMyComponent;
......@@ -85,7 +85,8 @@ public class MyFragment extends BaseFragment<MyPresenter> implements MyContract.
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.snackbarText(message);
// ArmsUtils.snackbarText(message);
ToastUtils.show(mContext, message);
}
@Override
......
......@@ -3,24 +3,32 @@ package com.gingersoft.gsa.cloud.main.mvp.ui.fragment;
import android.content.Intent;
import android.os.Bundle;
import android.os.Message;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.R2;
import com.gingersoft.gsa.cloud.main.di.component.DaggerPaymentMethodReportComponent;
import com.gingersoft.gsa.cloud.main.mvp.contract.PaymentMethodReportContract;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.PaymentMethodBean;
import com.gingersoft.gsa.cloud.main.mvp.presenter.PaymentMethodReportPresenter;
import com.gingersoft.gsa.cloud.main.mvp.ui.adapter.PaymentMethodAdapter;
import com.gingersoft.gsa.cloud.main.mvp.ui.adapter.PaymentMethodColorAdapter;
import com.jess.arms.base.BaseFragment;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.gingersoft.gsa.cloud.main.di.component.DaggerPaymentMethodReportComponent;
import com.gingersoft.gsa.cloud.main.mvp.contract.PaymentMethodReportContract;
import com.gingersoft.gsa.cloud.main.mvp.presenter.PaymentMethodReportPresenter;
import java.util.ArrayList;
import java.util.List;
import com.gingersoft.gsa.cloud.main.R;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import butterknife.BindView;
import static com.jess.arms.utils.Preconditions.checkNotNull;
......@@ -40,6 +48,11 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
*/
public class PaymentMethodReportFragment extends BaseFragment<PaymentMethodReportPresenter> implements PaymentMethodReportContract.View {
@BindView(R2.id.rv_payment_color)
RecyclerView rvPaymentColor;
@BindView(R2.id.rv_payment_proportion)
RecyclerView rvPaymentProportion;
public static PaymentMethodReportFragment newInstance() {
PaymentMethodReportFragment fragment = new PaymentMethodReportFragment();
return fragment;
......@@ -62,7 +75,25 @@ public class PaymentMethodReportFragment extends BaseFragment<PaymentMethodRepor
@Override
public void initData(@Nullable Bundle savedInstanceState) {
List<PaymentMethodBean> paymentMethodBeans = new ArrayList<>();
for (int i = 0; i < 8; i++) {
paymentMethodBeans.add(new PaymentMethodBean(R.color.theme_color, "支付寶", 25.3f, 3000f));
}
rvPaymentColor.setLayoutManager(new GridLayoutManager(mContext, 4) {
@Override
public boolean canScrollVertically() {
return false;
}
});
rvPaymentColor.setAdapter(new PaymentMethodColorAdapter(paymentMethodBeans));
rvPaymentProportion.setLayoutManager(new GridLayoutManager(mContext, 4) {
@Override
public boolean canScrollVertically() {
return false;
}
});
rvPaymentProportion.setAdapter(new PaymentMethodAdapter(paymentMethodBeans));
}
/**
......@@ -119,7 +150,8 @@ public class PaymentMethodReportFragment extends BaseFragment<PaymentMethodRepor
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.snackbarText(message);
// ArmsUtils.snackbarText(message);
ToastUtils.show(mContext, message);
}
@Override
......
......@@ -3,24 +3,32 @@ package com.gingersoft.gsa.cloud.main.mvp.ui.fragment;
import android.content.Intent;
import android.os.Bundle;
import android.os.Message;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.R2;
import com.gingersoft.gsa.cloud.main.di.component.DaggerSalesComponent;
import com.gingersoft.gsa.cloud.main.mvp.contract.SalesContract;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.SalesReportBean;
import com.gingersoft.gsa.cloud.main.mvp.presenter.SalesPresenter;
import com.gingersoft.gsa.cloud.main.mvp.ui.adapter.FoodRankingAdapter;
import com.gingersoft.gsa.cloud.main.mvp.ui.adapter.SortNumberingAdapter;
import com.jess.arms.base.BaseFragment;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.gingersoft.gsa.cloud.main.di.component.DaggerSalesComponent;
import com.gingersoft.gsa.cloud.main.mvp.contract.SalesContract;
import com.gingersoft.gsa.cloud.main.mvp.presenter.SalesPresenter;
import java.util.ArrayList;
import java.util.List;
import com.gingersoft.gsa.cloud.main.R;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import butterknife.BindView;
import static com.jess.arms.utils.Preconditions.checkNotNull;
......@@ -40,6 +48,11 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
*/
public class SalesFragment extends BaseFragment<SalesPresenter> implements SalesContract.View {
@BindView(R2.id.rv_sort_numbering)
RecyclerView rvSortNumbering;
@BindView(R2.id.rv_restaurant)
RecyclerView rvFoodRanking;
public static SalesFragment newInstance() {
SalesFragment fragment = new SalesFragment();
return fragment;
......@@ -62,7 +75,34 @@ public class SalesFragment extends BaseFragment<SalesPresenter> implements Sales
@Override
public void initData(@Nullable Bundle savedInstanceState) {
rvSortNumbering.setLayoutManager(new LinearLayoutManager(mContext) {
@Override
public boolean canScrollVertically() {
return false;
}
});
List<String> titles = new ArrayList<>();
for (int i = 0; i < 10; i++) {
titles.add("食品名稱");
}
titles.add("食品");
rvSortNumbering.setAdapter(new SortNumberingAdapter(mContext, titles));
LinearLayoutManager lm = new LinearLayoutManager(mContext) {
@Override
public boolean canScrollVertically() {
return false;
}
};
lm.setOrientation(RecyclerView.VERTICAL);
rvFoodRanking.setLayoutManager(lm);
List<SalesReportBean.DataBean> salesReportBeans = new ArrayList<>();
salesReportBeans.add(new SalesReportBean.DataBean());
for (int i = 0; i < 10; i++) {
salesReportBeans.add(new SalesReportBean.DataBean("24.4%", "冲绳黑糖奶盖茶冲绳黑糖奶盖茶", "0.6%", 3.38, 77, 260));
}
rvFoodRanking.setAdapter(new FoodRankingAdapter(mContext, salesReportBeans));
}
/**
......@@ -119,7 +159,8 @@ public class SalesFragment extends BaseFragment<SalesPresenter> implements Sales
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.snackbarText(message);
// ArmsUtils.snackbarText(message);
ToastUtils.show(mContext, message);
}
@Override
......
package com.gingersoft.gsa.cloud.main.mvp.ui.view;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.widget.ProgressBar;
import com.gingersoft.gsa.cloud.main.R;
import cn.bingoogolapple.progressbar.BGAProgressBar;
/**
* 作者:王浩 邮件:bingoogolapple@gmail.com
* 创建时间:16/10/7 上午10:39
* 描述:
*/
public class MyProgressBar extends ProgressBar {
private static final String TAG = BGAProgressBar.class.getSimpleName();
private Paint mPaint;
private Mode mMode;
private int mTextColor;
private int mTextSize;
private int mTextMargin;
private int mReachedColor;
private int mReachedHeight;
private int mUnReachedColor;
private int mUnReachedHeight;
private boolean mIsCapRounded;
private boolean mIsHiddenText;
private int mRadius;
private int mMaxUnReachedEndX;
private int mMaxStrokeWidth;
private int mTextHeight;
private int mTextWidth;
private RectF mArcRectF;
private Rect mTextRect = new Rect();
private String mText;
public MyProgressBar(Context context) {
this(context, null);
}
public MyProgressBar(Context context, AttributeSet attrs) {
this(context, attrs, android.R.attr.progressBarStyle);
}
public MyProgressBar(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initDefaultAttrs(context);
initCustomAttrs(context, attrs);
mMaxStrokeWidth = Math.max(mReachedHeight, mUnReachedHeight);
}
public static int dp2px(Context context, float dpValue) {
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpValue, context.getResources().getDisplayMetrics());
}
public static int sp2px(Context context, float spValue) {
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, spValue, context.getResources().getDisplayMetrics());
}
private void initDefaultAttrs(Context context) {
mPaint = new Paint();
mPaint.setAntiAlias(true);
mMode = Mode.System;
mTextColor = Color.parseColor("#70A800");
mTextSize = BGAProgressBar.sp2px(context, 10);
mTextMargin = BGAProgressBar.dp2px(context, 4);
mReachedColor = Color.parseColor("#70A800");
mReachedHeight = BGAProgressBar.dp2px(context, 2);
mUnReachedColor = Color.parseColor("#CCCCCC");
mUnReachedHeight = BGAProgressBar.dp2px(context, 1);
mIsCapRounded = false;
mIsHiddenText = false;
mRadius = BGAProgressBar.dp2px(context, 16);
}
private void initCustomAttrs(Context context, AttributeSet attrs) {
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.BGAProgressBar);
final int N = typedArray.getIndexCount();
for (int i = 0; i < N; i++) {
initAttr(typedArray.getIndex(i), typedArray);
}
typedArray.recycle();
}
protected void initAttr(int attr, TypedArray typedArray) {
if (attr == R.styleable.BGAProgressBar_bga_pb_mode) {
int ordinal = typedArray.getInt(attr, Mode.System.ordinal());
mMode = Mode.values()[ordinal];
} else if (attr == R.styleable.BGAProgressBar_bga_pb_textColor) {
mTextColor = typedArray.getColor(attr, mTextColor);
} else if (attr == R.styleable.BGAProgressBar_bga_pb_textSize) {
mTextSize = typedArray.getDimensionPixelOffset(attr, mTextSize);
} else if (attr == R.styleable.BGAProgressBar_bga_pb_textMargin) {
mTextMargin = typedArray.getDimensionPixelOffset(attr, mTextMargin);
} else if (attr == R.styleable.BGAProgressBar_bga_pb_reachedColor) {
mReachedColor = typedArray.getColor(attr, mReachedColor);
} else if (attr == R.styleable.BGAProgressBar_bga_pb_reachedHeight) {
mReachedHeight = typedArray.getDimensionPixelOffset(attr, mReachedHeight);
} else if (attr == R.styleable.BGAProgressBar_bga_pb_unReachedColor) {
mUnReachedColor = typedArray.getColor(attr, mUnReachedColor);
} else if (attr == R.styleable.BGAProgressBar_bga_pb_unReachedHeight) {
mUnReachedHeight = typedArray.getDimensionPixelOffset(attr, mUnReachedHeight);
} else if (attr == R.styleable.BGAProgressBar_bga_pb_isCapRounded) {
mIsCapRounded = typedArray.getBoolean(attr, mIsCapRounded);
if (mIsCapRounded) {
mPaint.setStrokeCap(Paint.Cap.ROUND);
}
} else if (attr == R.styleable.BGAProgressBar_bga_pb_isHiddenText) {
mIsHiddenText = typedArray.getBoolean(attr, mIsHiddenText);
} else if (attr == R.styleable.BGAProgressBar_bga_pb_radius) {
mRadius = typedArray.getDimensionPixelOffset(attr, mRadius);
}
}
@Override
protected synchronized void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
if (mMode == Mode.System) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
} else if (mMode == Mode.Horizontal) {
calculateTextWidthAndHeight();
int width = MeasureSpec.getSize(widthMeasureSpec);
int expectHeight = getPaddingTop() + getPaddingBottom();
if (mIsHiddenText) {
expectHeight += Math.max(mReachedHeight, mUnReachedHeight);
} else {
expectHeight += Math.max(mTextHeight, Math.max(mReachedHeight, mUnReachedHeight));
}
int height = resolveSize(expectHeight, heightMeasureSpec);
setMeasuredDimension(width, height);
mMaxUnReachedEndX = getMeasuredWidth() - getPaddingLeft() - getPaddingRight();
} else if (mMode == Mode.Circle) {
int expectSize = mRadius * 2 + mMaxStrokeWidth + getPaddingLeft() + getPaddingRight();
int width = resolveSize(expectSize, widthMeasureSpec);
int height = resolveSize(expectSize, heightMeasureSpec);
expectSize = Math.min(width, height);
mRadius = (expectSize - getPaddingLeft() - getPaddingRight() - mMaxStrokeWidth) / 2;
if (mArcRectF == null) {
mArcRectF = new RectF();
}
mArcRectF.set(0, 0, mRadius * 2, mRadius * 2);
setMeasuredDimension(expectSize, expectSize);
} else if (mMode == Mode.Comet) {
// TODO
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
} else if (mMode == Mode.Wave) {
// TODO
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
@Override
protected synchronized void onDraw(Canvas canvas) {
if (mMode == Mode.System) {
super.onDraw(canvas);
} else if (mMode == Mode.Horizontal) {
onDrawHorizontal(canvas);
} else if (mMode == Mode.Circle) {
onDrawCircle(canvas);
} else if (mMode == Mode.Comet) {
// TODO
super.onDraw(canvas);
} else if (mMode == Mode.Wave) {
// TODO
super.onDraw(canvas);
}
}
private void onDrawHorizontal(Canvas canvas) {
canvas.save();
canvas.translate(getPaddingLeft(), getMeasuredHeight() / 2);
float reachedRatio = getProgress() * 1.0f / getMax();
float reachedEndX = reachedRatio * mMaxUnReachedEndX;
if (mIsHiddenText) {
if (reachedEndX > mMaxUnReachedEndX) {
reachedEndX = mMaxUnReachedEndX;
}
if (reachedEndX > 0) {
mPaint.setColor(mReachedColor);
mPaint.setStrokeWidth(mReachedHeight);
mPaint.setStyle(Paint.Style.STROKE);
canvas.drawLine(0, 0, reachedEndX, 0, mPaint);
}
float unReachedStartX = reachedEndX;
if (mIsCapRounded) {
unReachedStartX += (mReachedHeight + mUnReachedHeight) * 1.0f / 2;
}
if (unReachedStartX < mMaxUnReachedEndX) {
mPaint.setColor(mUnReachedColor);
mPaint.setStrokeWidth(mUnReachedHeight);
mPaint.setStyle(Paint.Style.STROKE);
canvas.drawLine(unReachedStartX, 0, mMaxUnReachedEndX, 0, mPaint);
}
} else {
calculateTextWidthAndHeight();
int maxReachedEndX = mMaxUnReachedEndX - mTextWidth - mTextMargin;
if (reachedEndX > maxReachedEndX) {
reachedEndX = maxReachedEndX;
}
if (reachedEndX > 0) {
mPaint.setColor(mReachedColor);
mPaint.setStrokeWidth(mReachedHeight);
mPaint.setStyle(Paint.Style.STROKE);
canvas.drawLine(0, 0, reachedEndX, 0, mPaint);
}
mPaint.setTextAlign(Paint.Align.LEFT);
mPaint.setStyle(Paint.Style.FILL);
mPaint.setColor(mTextColor);
float textStartX = reachedEndX > 0 ? reachedEndX + mTextMargin : reachedEndX;
canvas.drawText(mText, textStartX, mTextHeight / 2, mPaint);
float unReachedStartX = textStartX + mTextWidth + mTextMargin;
if (unReachedStartX < mMaxUnReachedEndX) {
mPaint.setColor(mUnReachedColor);
mPaint.setStrokeWidth(mUnReachedHeight);
mPaint.setStyle(Paint.Style.STROKE);
canvas.drawLine(unReachedStartX, 0, mMaxUnReachedEndX, 0, mPaint);
}
}
canvas.restore();
}
private void onDrawCircle(Canvas canvas) {
canvas.save();
canvas.translate(getPaddingLeft() + mMaxStrokeWidth / 2, getPaddingTop() + mMaxStrokeWidth / 2);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setColor(mUnReachedColor);
mPaint.setStrokeWidth(mUnReachedHeight);
canvas.drawCircle(mRadius, mRadius, mRadius, mPaint);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setColor(mReachedColor);
mPaint.setStrokeWidth(mReachedHeight);
float sweepAngle = getProgress() * 1.0f / getMax() * 360;
canvas.drawArc(mArcRectF, -90, sweepAngle, false, mPaint);
if (!mIsHiddenText) {
calculateTextWidthAndHeight();
mPaint.setStyle(Paint.Style.FILL);
mPaint.setColor(mTextColor);
mPaint.setTextAlign(Paint.Align.CENTER);
canvas.drawText(mText, mRadius, mRadius + mTextHeight / 2, mPaint);
}
canvas.restore();
}
private void calculateTextWidthAndHeight() {
//fix by Michael 修改参数溢出问题。
//mText = String.format("%d", getProgress() * 100 / getMax()) + "%";
mText = String.format("%d", (int) (getProgress() * 1.0f / getMax() * 100)) + "%";
mPaint.setTextSize(mTextSize);
mPaint.setStyle(Paint.Style.FILL);
mPaint.getTextBounds(mText, 0, mText.length(), mTextRect);
mTextWidth = mTextRect.width();
mTextHeight = mTextRect.height();
}
private enum Mode {
System,
Horizontal,
Circle,
Comet,
Wave
}
}
package com.gingersoft.gsa.cloud.main.mvp.ui.view;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.MotionEvent;
......@@ -10,7 +9,6 @@ import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;
import com.daivd.chart.utils.DensityUtils;
import com.gingersoft.gsa.cloud.ui.view.utils.ShadowUtil;
import com.jess.arms.utils.ArmsUtils;
import com.nineoldandroids.view.ViewHelper;
......@@ -111,8 +109,8 @@ public class SlidingMenu extends HorizontalScrollView {
return;
this.smoothScrollTo(0, 0);
isOpen = true;
ShadowUtil.setShadowDrawable(mContent, Color.parseColor("#FFFFFF"), 50,
Color.parseColor("#73888888"), 50, 0, 2);
// ShadowUtil.setShadowDrawable(mContent, Color.parseColor("#FFFFFF"), 50,
// Color.parseColor("#73888888"), 50, 0, 2);
invalidate();
}
......
......@@ -197,9 +197,9 @@
android:id="@+id/tv_restaurant_name"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
android:text="店鋪名稱"
android:textColor="@color/white"
android:gravity="center"
android:textSize="@dimen/sp_18"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
......@@ -228,19 +228,27 @@
android:orientation="vertical">
<fragment
android:id="@+id/main_top_fragment"
android:name="com.gingersoft.gsa.cloud.main.mvp.ui.fragment.MainTopFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<LinearLayout
<com.lihang.ShadowLayout
android:id="@+id/layout_ordering_meals"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_10"
android:layout_marginRight="@dimen/dp_10"
app:hl_cornerRadius="@dimen/dp_4"
app:hl_dy="@dimen/main_shadow_dy"
app:hl_shadowBackColor="@color/white"
app:hl_shadowColor="@color/shadow_color"
app:hl_shadowLimit="@dimen/main_shadow_limit">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="@dimen/dp_15"
android:paddingBottom="@dimen/dp_20">
......@@ -266,17 +274,23 @@
android:layout_marginLeft="@dimen/main_recyclerview_marginLeft"
android:layout_marginTop="@dimen/dp_5"
android:layout_marginRight="@dimen/main_recyclerview_marginRight" />
</LinearLayout>
</com.lihang.ShadowLayout>
<com.lihang.ShadowLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_13"
android:layout_marginRight="@dimen/dp_13"
android:layout_marginBottom="@dimen/dp_10"
app:hl_cornerRadius="@dimen/dp_4"
app:hl_shadowLimit="@dimen/dp_0"
app:hl_shadowBackColor="@color/white">
<LinearLayout
android:id="@+id/layout_management"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_10"
android:layout_marginRight="@dimen/dp_10"
android:layout_marginBottom="@dimen/dp_10"
android:background="@color/white"
android:orientation="vertical"
android:paddingTop="@dimen/dp_16"
android:paddingBottom="@dimen/dp_16">
......@@ -321,7 +335,7 @@
android:layout_marginRight="@dimen/main_recyclerview_marginRight" />
</LinearLayout>
</com.lihang.ShadowLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</LinearLayout>
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/theme_background_color"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/theme_background_color"
android:orientation="vertical">
<com.lihang.ShadowLayout
android:id="@+id/layout_business_chart"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_10"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginRight="@dimen/dp_10"
android:layout_marginLeft="@dimen/dp_7"
android:layout_marginTop="@dimen/dp_7"
android:layout_marginRight="@dimen/dp_7"
android:paddingBottom="@dimen/dp_15"
app:hl_cornerRadius="@dimen/dp_4"
app:hl_dy="@dimen/main_shadow_dy"
app:hl_shadowBackColor="@color/white"
app:hl_shadowColor="@color/shadow_color"
app:hl_shadowLimit="@dimen/main_shadow_limit">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="@dimen/dp_15">
android:paddingRight="@dimen/dp_10">
<LinearLayout
android:layout_width="match_parent"
......@@ -57,20 +73,30 @@
</LinearLayout>
<com.daivd.chart.core.LineChart
android:id="@+id/report_business_chart"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_130"
android:layout_marginTop="@dimen/dp_17" />
</LinearLayout>
</com.lihang.ShadowLayout>
</LinearLayout>
<com.lihang.ShadowLayout
android:id="@+id/layout_business_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_7"
android:layout_marginTop="@dimen/dp_4"
android:layout_marginRight="@dimen/dp_7"
app:hl_cornerRadius="@dimen/dp_4"
app:hl_dy="@dimen/main_shadow_dy"
app:hl_shadowBackColor="@color/white"
app:hl_shadowColor="@color/shadow_color"
app:hl_shadowLimit="@dimen/main_shadow_limit">
<LinearLayout
android:id="@+id/layout_business_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_10"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginRight="@dimen/dp_10"
android:orientation="vertical">
<TextView
......@@ -87,16 +113,21 @@
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/dp_20"
android:focusable="true"
android:focusableInTouchMode="true"
android:text="餐廳名稱"
android:textColor="#3c3c3c"
android:textSize="@dimen/dp_16" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_restaurant"
android:id="@+id/rv_business_details"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10" />
</LinearLayout>
</com.lihang.ShadowLayout>
</LinearLayout>
</LinearLayout>
\ No newline at end of file
</ScrollView>
\ No newline at end of file
......@@ -4,6 +4,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_top"
android:layout_width="match_parent"
......@@ -77,7 +78,8 @@
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@id/tv_compare_today_text" />
<View
<com.lihang.ShadowLayout
android:id="@+id/cv_white_bg"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_250"
......@@ -85,6 +87,11 @@
android:layout_marginTop="@dimen/dp_16"
android:layout_marginRight="@dimen/dp_10"
android:background="@color/white"
app:hl_shadowBackColor="@color/white"
app:hl_cornerRadius="@dimen/dp_4"
app:hl_dy="@dimen/main_shadow_dy"
app:hl_shadowColor="@color/shadow_color"
app:hl_shadowLimit="@dimen/main_shadow_limit"
app:layout_constraintTop_toBottomOf="@id/tv_compare_today_text" />
......@@ -127,20 +134,29 @@
</androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
<com.lihang.ShadowLayout
android:id="@+id/layout_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_10"
android:layout_marginRight="@dimen/dp_10"
android:orientation="horizontal"
app:hl_cornerRadius="@dimen/dp_4"
app:hl_dy="@dimen/main_shadow_dy"
app:hl_shadowBackColor="@color/white"
app:hl_shadowColor="@color/shadow_color"
app:hl_shadowLimit="@dimen/main_shadow_limit"
app:layout_constraintTop_toBottomOf="@id/cl_top">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
android:paddingLeft="@dimen/dp_20"
android:paddingTop="@dimen/dp_15"
android:paddingRight="@dimen/dp_20"
android:paddingBottom="@dimen/dp_15"
app:layout_constraintTop_toBottomOf="@id/cl_top">
<!-- 項目總金額-->
android:paddingBottom="@dimen/dp_15"><!-- 項目總金額-->
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
......@@ -308,6 +324,7 @@
android:textColor="#3c3c3c"
android:textSize="@dimen/sp_12" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
......@@ -335,7 +352,8 @@
android:textSize="@dimen/sp_12" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</com.lihang.ShadowLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/theme_background_color">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
\ No newline at end of file
<com.lihang.ShadowLayout
android:id="@+id/layout_business_chart"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_7"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginRight="@dimen/dp_7"
android:paddingBottom="@dimen/dp_15"
app:hl_cornerRadius="@dimen/dp_4"
app:hl_dy="@dimen/main_shadow_dy"
app:hl_shadowBackColor="@color/white"
app:hl_shadowColor="@color/shadow_color"
app:hl_shadowLimit="@dimen/main_shadow_limit">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingRight="@dimen/dp_10">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_10"
android:layout_marginTop="@dimen/dp_10"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="支付方式分析"
android:textColor="#181818"
android:textSize="@dimen/sp_17" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2020-02-14"
android:textColor="#181818"
android:textSize="@dimen/sp_10" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_7"
android:text="到"
android:textColor="#999"
android:textSize="@dimen/sp_10" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_7"
android:text="2020-02-20"
android:textColor="#181818"
android:textSize="@dimen/sp_10" />
</LinearLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.github.mikephil.charting.charts.PieChart
android:id="@+id/report_payment_method_chart"
android:layout_width="@dimen/dp_170"
android:layout_height="@dimen/dp_170"
android:layout_marginTop="@dimen/dp_10"
android:visibility="visible"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_chart_line"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/dp_36"
android:maxLines="1"
android:text="--------------------------------------------------------------------------------------------------"
android:textColor="#FF3F4E"
app:layout_constraintBottom_toBottomOf="@id/report_payment_method_chart"
app:layout_constraintLeft_toRightOf="@id/report_payment_method_chart"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@id/report_payment_method_chart" />
<TextView
android:id="@+id/tv_payment_method"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="支付方式1"
android:textColor="@color/color_3c"
android:textSize="@dimen/sp_13"
app:layout_constraintLeft_toLeftOf="@id/tv_chart_line"
app:layout_constraintRight_toRightOf="@id/tv_chart_line"
app:layout_constraintTop_toBottomOf="@id/tv_chart_line" />
<TextView
android:id="@+id/tv_amount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="$10000"
android:textColor="#ff3f4e"
android:textSize="@dimen/sp_18"
app:layout_constraintLeft_toLeftOf="@id/tv_chart_line"
app:layout_constraintRight_toRightOf="@id/tv_chart_line"
app:layout_constraintTop_toBottomOf="@id/tv_payment_method" />
<TextView
android:id="@+id/tv_payment_method_percentage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/dp_10"
android:paddingTop="@dimen/dp_4"
android:paddingRight="@dimen/dp_10"
android:paddingBottom="@dimen/dp_4"
android:text="30%"
android:textColor="@color/white"
android:textSize="@dimen/sp_13"
app:layout_constraintLeft_toLeftOf="@id/tv_chart_line"
app:layout_constraintRight_toRightOf="@id/tv_chart_line"
app:layout_constraintTop_toBottomOf="@id/tv_amount" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_payment_color"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</com.lihang.ShadowLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_20"
android:layout_marginTop="@dimen/dp_20"
android:text="支付方式"
android:textColor="#181818"
android:textSize="@dimen/sp_17" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_payment_proportion"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_19"
android:layout_marginTop="@dimen/dp_18"
android:layout_marginRight="@dimen/dp_19" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/theme_background_color"
android:orientation="vertical">
</LinearLayout>
\ No newline at end of file
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<com.lihang.ShadowLayout
android:id="@+id/layout_business_chart"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_10"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginRight="@dimen/dp_10"
android:paddingBottom="@dimen/dp_15"
app:hl_cornerRadius="@dimen/dp_4"
app:hl_dy="@dimen/main_shadow_dy"
app:hl_shadowBackColor="@color/white"
app:hl_shadowColor="@color/shadow_color"
app:hl_shadowLimit="@dimen/main_shadow_limit">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingRight="@dimen/dp_10"
android:paddingBottom="@dimen/dp_10">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_10"
android:layout_marginTop="@dimen/dp_10"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="食品銷售"
android:textColor="#181818"
android:textSize="@dimen/sp_17" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2020-02-14"
android:textColor="#181818"
android:textSize="@dimen/sp_10" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_7"
android:text="到"
android:textColor="#999"
android:textSize="@dimen/sp_10" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_7"
android:text="2020-02-20"
android:textColor="#181818"
android:textSize="@dimen/sp_10" />
</LinearLayout>
<com.github.mikephil.charting.charts.PieChart
android:id="@+id/report_sales_chart"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_175"
android:layout_marginTop="@dimen/dp_10"
android:visibility="visible" />
</LinearLayout>
</com.lihang.ShadowLayout>
<com.lihang.ShadowLayout
android:id="@+id/layout_business_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_10"
android:layout_marginTop="@dimen/dp_4"
android:layout_marginRight="@dimen/dp_10"
app:hl_cornerRadius="@dimen/dp_4"
app:hl_dy="@dimen/main_shadow_dy"
app:hl_shadowBackColor="@color/white"
app:hl_shadowColor="@color/shadow_color"
app:hl_shadowLimit="@dimen/main_shadow_limit">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_10"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginBottom="@dimen/dp_24"
android:focusable="true"
android:focusableInTouchMode="true"
android:text="食品銷售前十"
android:textColor="#181818"
android:textSize="@dimen/sp_17" />
<include layout="@layout/include_horizontal_color_f0_dividing_line" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<!-- 序號要一直顯示,所以單獨放一邊-->
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_sort_numbering"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="none">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_restaurant"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</HorizontalScrollView>
</LinearLayout>
</LinearLayout>
</com.lihang.ShadowLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="@dimen/report_ranking_item_height"
android:gravity="center"
android:orientation="horizontal">
<include layout="@layout/include_vertical_color_f0_dividing_line" />
<TextView
android:id="@+id/tv_ranking_foodname"
style="@style/report_food_ranking"
android:layout_width="@dimen/dp_80"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_10"
android:layout_marginRight="@dimen/dp_10"
android:singleLine="true"
android:text="食品名稱" />
<include layout="@layout/include_vertical_color_f0_dividing_line" />
<TextView
android:id="@+id/tv_ranking_food_sales_num"
style="@style/report_food_ranking"
android:layout_width="@dimen/dp_80"
android:layout_height="wrap_content"
android:text="銷售數量" />
<include layout="@layout/include_vertical_color_f0_dividing_line" />
<TextView
android:id="@+id/tv_ranking_food_sales_amount"
style="@style/report_food_ranking"
android:layout_width="@dimen/dp_80"
android:layout_height="wrap_content"
android:text="銷售金額" />
<include layout="@layout/include_vertical_color_f0_dividing_line" />
<TextView
android:id="@+id/tv_ranking_food_unit_price"
style="@style/report_food_ranking"
android:layout_width="@dimen/dp_80"
android:layout_height="wrap_content"
android:text="單價" />
<include layout="@layout/include_vertical_color_f0_dividing_line" />
<TextView
android:id="@+id/tv_ranking_proportion_quantity"
style="@style/report_food_ranking"
android:layout_width="@dimen/dp_80"
android:layout_height="wrap_content"
android:text="數量佔比" />
<include layout="@layout/include_vertical_color_f0_dividing_line" />
<TextView
android:id="@+id/tv_ranking_ratio_amount"
style="@style/report_food_ranking"
android:layout_width="@dimen/dp_80"
android:layout_height="wrap_content"
android:text="金額佔比" />
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="horizontal">
<View
android:id="@+id/circle_color"
android:layout_width="@dimen/dp_9"
android:layout_height="@dimen/dp_9"
/>
<TextView
android:id="@+id/tv_payment_method"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_4"
android:text="支付方式1"
android:textColor="#3d455e"
android:textSize="@dimen/sp_13" />
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_5"
android:background="@drawable/shape_white_eight_corners_bg"
android:gravity="center"
android:orientation="vertical"
android:padding="@dimen/dp_8">
<TextView
android:id="@+id/tv_payment_method_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:text="支付方式1"
android:textColor="@color/theme_333_color"
android:textSize="@dimen/sp_13" />
<com.gingersoft.gsa.cloud.main.mvp.ui.view.MyProgressBar
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="@dimen/dp_50"
android:layout_height="@dimen/dp_50"
android:layout_marginTop="@dimen/dp_8"
android:progress="50"
android:scrollbarStyle="insideOverlay"
app:bga_pb_isCapRounded="true"
app:bga_pb_mode="circle"
app:bga_pb_radius="@dimen/dp_25"
app:bga_pb_reachedHeight="@dimen/dp_5"
app:bga_pb_textColor="@color/theme_333_color"
app:bga_pb_textSize="@dimen/sp_16"
app:bga_pb_unReachedColor="@color/line_color2"
app:bga_pb_unReachedHeight="@dimen/dp_4" />
<TextView
android:id="@+id/tv_payment_amount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_12"
android:singleLine="true"
android:text="$10000"
android:textColor="@color/theme_333_color"
android:textSize="@dimen/sp_13" />
</LinearLayout>
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout
android:layout_width="@dimen/dp_55"
android:layout_height="@dimen/report_ranking_item_height">
<TextView
android:id="@+id/tv_ranking_numbering"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="排序"
android:textColor="@color/white"
android:textSize="@dimen/sp_13" />
<ImageView
android:id="@+id/iv_ranking_numbering"
android:layout_width="@dimen/dp_22"
android:layout_height="@dimen/dp_29"
android:layout_centerInParent="true" />
</RelativeLayout>
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical"
android:paddingBottom="@dimen/dp_20">
<include layout="@layout/include_horizontal_color_ccc_dividing_line" />
<TextView
android:id="@+id/tv_business_info_amount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_20"
android:text="10000.0"
android:textColor="@color/theme_color"
android:textSize="@dimen/sp_17" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_5"
android:text="項目銷售總金額"
android:textColor="@color/color_3c"
android:textSize="@dimen/sp_12" />
</LinearLayout>
<include layout="@layout/include_vertical_color_ccc_dividing_line" />
</LinearLayout>
\ No newline at end of file
......@@ -82,7 +82,7 @@ public class OldPrintActivity extends Activity implements PrintSocketHolder.OnSt
if (dialog != null) {
dialog.dismiss();
}
dialog = LoadingDialog.showNewDialogForLoading(this, "初始化...", false);
dialog = LoadingDialog.showNewDialogForLoading(this, "初始化...", true);
dialog.setOnDismissListener(this);
if (executor == null) {
executor = new PrintExecutor(ip, Integer.parseInt(port), paperType);
......@@ -95,7 +95,6 @@ public class OldPrintActivity extends Activity implements PrintSocketHolder.OnSt
executor.setIp(ip, Integer.parseInt(port));
executor.doPrinterRequestAsync(maker);
executor.setReconnectTimes(3);
// executor.doPrinterRequest()
}
@Override
......@@ -157,7 +156,6 @@ public class OldPrintActivity extends Activity implements PrintSocketHolder.OnSt
private void dismiss(String msg) {
ToastUtils.show(this, msg);
//延遲一秒
dialog.dismiss();
......
......@@ -9,6 +9,7 @@ import android.os.Bundle;
import android.os.IBinder;
import android.os.Looper;
import android.os.RemoteException;
import android.util.Log;
import com.billy.cc.core.component.CCUtil;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
......@@ -30,7 +31,7 @@ import com.joe.print.di.component.DaggerPrintComponent;
import com.joe.print.mvp.contract.PrintContract;
import com.joe.print.mvp.presenter.PrintPresenter;
import com.joe.print.mvp.print.SunMiPrint;
import com.joe.print.mvp.ui.adapter.PrinterListAdapter;
import com.joe.print.mvp.ui.adapter.DialogPrinterListAdapter;
import com.yanzhenjie.recyclerview.widget.DefaultItemDecoration;
import java.util.List;
......@@ -98,10 +99,9 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
@Override
public void initData(@Nullable Bundle savedInstanceState) {
type = CCUtil.getNavigateParam(this, "type", 1001);
Log.e("bbb", "打印類型:" + type);
List<Bitmap> bitmaps = PrintUtils.getPrintBitmap(mContext, type, 500);
if (bitmaps.size() <= 0) {
ToastUtils.show(mContext, "打印失敗");
finish();
return;
}
......@@ -113,6 +113,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
for (int i = 0; i < bitmaps.size(); i++) {
locationPrint(bitmaps.get(i));
}
dialog.dismiss();
});
hepler.setViewClick(R.id.internet_print, v -> {
//IP打印
......@@ -225,7 +226,8 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.snackbarText(message);
// ArmsUtils.snackbarText(message);
ToastUtils.show(mContext, message);
}
@Override
......@@ -241,6 +243,9 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
@Override
public void showPrinterList() {
if (selectDialog != null && selectDialog.isShowing()) {
selectDialog.dismiss();
}
//有打印機,彈出彈窗,選擇打印機
new DialogUtils(mContext, R.layout.print_dialog_internet_list) {
@Override
......@@ -248,7 +253,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
dialogCount++;
RecyclerView mRvPrintList = hepler.getView(R.id.rv_print_list);
List<PrinterDeviceBean> deviceBeans = PrinterManager.getPrinterManager().getDeviceBeans();
PrinterListAdapter printListAdapter = new PrinterListAdapter(deviceBeans, mContext);
DialogPrinterListAdapter printListAdapter = new DialogPrinterListAdapter(deviceBeans, mContext);
mRvPrintList.setLayoutManager(new LinearLayoutManager(mContext));
//分割线
mRvPrintList.addItemDecoration(new DefaultItemDecoration(ContextCompat.getColor(mContext, R.color.line_color)));
......@@ -261,12 +266,13 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
intent.putExtra("type", type);
startActivity(intent);
});
dialog.setOnDismissListener(dialog1 -> finish());
}
}.setWidth(ArmsUtils.getScreenWidth(mContext) / 2)
}
// .setWidth(ArmsUtils.getScreenHeidth(mContext))
.setHeight(ArmsUtils.getScreenHeidth(mContext) / 2)
.createDialogView()
.show();
selectDialog.dismiss();
}
@Override
......
......@@ -6,15 +6,14 @@ import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.TextView;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.gingersoft.gsa.cloud.ui.view.MyEditText;
import com.jess.arms.base.BaseActivity;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
......@@ -139,7 +138,8 @@ public class PrinterAddActivity extends BaseActivity<PrinterAddPresenter> implem
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.snackbarText(message);
// ArmsUtils.snackbarText(message);
ToastUtils.show(mContext, message);
}
@Override
......
......@@ -6,6 +6,8 @@ import android.os.Bundle;
import android.view.ViewGroup;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.common.bean.PrinterManger.PrinterManager;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.jess.arms.base.BaseActivity;
import com.jess.arms.di.component.AppComponent;
......@@ -14,7 +16,6 @@ import com.joe.print.R;
import com.joe.print.R2;
import com.joe.print.di.component.DaggerPrintListComponent;
import com.joe.print.mvp.contract.PrintListContract;
import com.gingersoft.gsa.cloud.base.common.bean.PrinterManger.PrinterManager;
import com.joe.print.mvp.presenter.PrintListPresenter;
import com.joe.print.mvp.ui.adapter.PrinterListAdapter;
import com.qmuiteam.qmui.widget.QMUITopBar;
......@@ -165,7 +166,8 @@ public class PrinterListActivity extends BaseActivity<PrintListPresenter> implem
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.snackbarText(message);
// ArmsUtils.snackbarText(message);
ToastUtils.show(mContext, message);
}
@Override
......
package com.joe.print.mvp.ui.adapter;
import android.content.Context;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.joe.print.R;
import java.util.List;
import androidx.annotation.Nullable;
/**
* Created by Wyh on 2020/1/16.
*/
public class DialogPrinterListAdapter extends BaseQuickAdapter<PrinterDeviceBean, BaseViewHolder> {
private Context mContext;
public DialogPrinterListAdapter(@Nullable List<PrinterDeviceBean> data, Context mContext) {
super(R.layout.printer_dialog_item, data);
this.mContext = mContext;
}
@Override
protected void convert(BaseViewHolder helper, PrinterDeviceBean item) {
helper.setText(R.id.tv_printer_name, item.getIp() + "");
helper.setText(R.id.tv_printer_ip, String.format(mContext.getString(R.string.print_ip), item.getIp()));
helper.setText(R.id.tv_printer_port, String.format(mContext.getString(R.string.print_port), item.getPort() + ""));
}
public void notifyData(List<PrinterDeviceBean> data) {
this.mData = data;
super.notifyDataSetChanged();
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/shape_white_eight_corners_bg"
android:gravity="center"
......
......@@ -16,7 +16,7 @@
android:textColor="@color/theme_333_color"
android:textSize="@dimen/sp_20" />
<include layout="@layout/include_dividing_line" />
<include layout="@layout/include_horizontal_color_ccc_dividing_line" />
<TextView
android:id="@+id/internet_print"
......
......@@ -128,7 +128,7 @@
</LinearLayout>
</LinearLayout>
<include layout="@layout/include_dividing_line" />
<include layout="@layout/include_horizontal_color_ccc_dividing_line" />
<LinearLayout
style="@style/print_add_printer_input_style"
......@@ -160,7 +160,7 @@
android:textSize="@dimen/dp_14" />
</LinearLayout>
<include layout="@layout/include_dividing_line" />
<include layout="@layout/include_horizontal_color_ccc_dividing_line" />
<LinearLayout
style="@style/print_add_printer_input_style"
......@@ -204,7 +204,7 @@
</RadioGroup>
</LinearLayout>
<include layout="@layout/include_dividing_line" />
<include layout="@layout/include_horizontal_color_ccc_dividing_line" />
<TextView
android:id="@+id/print_test"
......
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="@dimen/dp_10"
android:paddingBottom="@dimen/dp_10">
<TextView
android:id="@+id/tv_printer_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="@dimen/dp_10"
android:gravity="center"
android:textColor="@color/normal_color"
android:textSize="@dimen/dp_16"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_printer_ip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
android:singleLine="true"
android:text="IP:"
android:textColor="@color/normal_color"
android:textSize="@dimen/dp_14"
app:layout_constraintHorizontal_weight="0.5"
app:layout_constraintLeft_toLeftOf="@id/tv_printer_name"
app:layout_constraintTop_toBottomOf="@id/tv_printer_name" />
<TextView
android:id="@+id/tv_printer_port"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_10"
android:singleLine="true"
android:text="端口號:"
android:textColor="@color/normal_color"
android:textSize="@dimen/dp_14"
app:layout_constraintHorizontal_weight="0.5"
app:layout_constraintLeft_toRightOf="@id/tv_printer_ip"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@id/tv_printer_ip" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
......@@ -81,5 +81,6 @@ dependencies {
implementation 'com.android.support:design:28.0.0'
//陰影背景
implementation 'com.github.Liberuman:ShadowDrawable:0.1'
// implementation 'com.github.Liberuman:ShadowDrawable:0.1'
api 'com.github.lihangleo2:ShadowLayout:2.1.6'
}
......@@ -467,7 +467,7 @@ public class OrderDetail implements Serializable {
}
public String getPrintseting() {
return printseting;
return printseting == null ? "" : printseting;
}
public void setPrintseting(String printseting) {
......
......@@ -40,8 +40,8 @@ import androidx.recyclerview.widget.RecyclerView;
public class PrintUtils {
private static int paperWidth = 380;
/**
*
* @param mContext 上下文
* @param type 打印類型 0:上菜紙
* * 1:印單
......@@ -66,6 +66,28 @@ public class PrintUtils {
//廚房單,需要切紙
List<OrderDetail> orderDetails = MyOrderManage.getInstance().getNewFoodList();
if (orderDetails != null) {
// 將沒有打印位置的歸類到一起
// 如果沒有打印位置,向上尋找,如果都沒有,就不打印
for (int i = 0; i < orderDetails.size(); i++) {
//需要判斷大於0的原因是,如果為0,是第一個食品,則不需要向上尋找,直接不打印
if (orderDetails.get(i).getPrintseting().equals("") && i > 0) {
//沒有打印位置的食品,向上尋找
for (int j = i - 1; j >= 0; j--) {
if (!orderDetails.get(j).getPrintseting().equals("")) {
//找到打印位置不為空的食品
if (orderDetails.get(j).getPrintseting().contains("*")) {
//如果找到的打印位置包含*號,則將這些食品單獨分為一組
//因為帶*號的食品會單獨打印一張紙,需求是將這些沒有打印位置的打印到向上能找到的食品的打印位置上,不管有沒有*號,都打印到一張紙上
//所以如果帶*號,就要特殊處理
String newPrintSetting = orderDetails.get(j).getPrintseting();
orderDetails.get(i).setPrintseting(newPrintSetting);
} else {
orderDetails.get(i).setPrintseting(orderDetails.get(j).getPrintseting());
}
}
}
}
}
//將所有送單的食品通過打印位置分組,不同的打印位置在不同的打印紙上。
Map<String, List<OrderDetail>> map = new HashMap<>();
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
......@@ -91,7 +113,12 @@ public class PrintUtils {
orders.add(orderDetail);
bitmaps.add(PrintUtils.getKitChenPrintBitmap(mContext, orders));
}
} else {
}
// else if (key.equals("")) {
// //如果沒有打印位置,向上尋找,如果都沒有,就不打印
//
// }
else {
//不帶*號,所有同樣廚房位置的食品都在一張紙上
bitmaps.add(PrintUtils.getKitChenPrintBitmap(mContext, entry.getValue()));
}
......@@ -273,7 +300,7 @@ public class PrintUtils {
rvFood.setLayoutManager(new LinearLayoutManager(context));
rvFood.setAdapter(foodAdapter);
//廚房位置
tvKitChenLocation.setText(foodList.get(0).getPrintseting());
tvKitChenLocation.setText(foodList.get(0).getPrintseting().replace("*", ""));
}
if (OpenTableManage.getDefault().getTableBean() != null) {
// 台號
......
......@@ -5,8 +5,8 @@ package com.gingersoft.gsa.cloud.base.utils.constans;
*/
public class HttpsConstans {
public static String ROOT_SERVER_ADDRESS_FORMAL = "http://gingersoft.tpddns.cn:58201/ricepon-cloud-gsa/api/";// 深圳服务器
// public static String ROOT_SERVER_ADDRESS_FORMAL = "http://a.ricepon.com:58201/ricepon-cloud-gsa/api/";// 香港服务器
// public static String ROOT_SERVER_ADDRESS_FORMAL = "http://gingersoft.tpddns.cn:58201/ricepon-cloud-gsa/api/";// 深圳服务器
public static String ROOT_SERVER_ADDRESS_FORMAL = "http://a.ricepon.com:58201/ricepon-cloud-gsa/api/";// 香港服务器
public static String ROOT_SERVER_ADDRESS_FORMAL2 = "http://gingersoft.tpddns.cn:53000/mock/49/ricepon-cloud-gsa/api/";//測試服務器
......
......@@ -15,6 +15,7 @@ import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
......@@ -89,7 +90,9 @@ public abstract class DialogUtils {
}
public DialogUtils dismiss() {
if (dialog != null) {
dialog.dismiss();
}
return this;
}
......@@ -98,6 +101,10 @@ public abstract class DialogUtils {
return this;
}
public boolean isShowing() {
return dialog != null && dialog.isShowing();
}
public DialogUtils setOnDismissListener(DialogInterface.OnDismissListener dismissListener) {
dialog.setOnDismissListener(dismissListener);
return this;
......
package com.gingersoft.gsa.cloud.ui.view.utils;
import android.graphics.Color;
import android.view.View;
import com.sxu.shadowdrawable.ShadowDrawable;
import static com.qmuiteam.qmui.util.QMUIDisplayHelper.dpToPx;
/**
* Created by Wyh on 2020/2/24.
*/
public class ShadowUtil {
public static void setShadowDrawable(View view) {
ShadowDrawable.setShadowDrawable(view, Color.parseColor("#FFFFFF"), dpToPx(5),
Color.parseColor("#73888888"), dpToPx(5), 0, 2);
}
public static void setShadowDrawable(View view, int bgColor, int shapeRadius, int shadowColor, int shadowRadius, int offsetX, int offsetY) {
ShadowDrawable.setShadowDrawable(view, bgColor, shapeRadius,
shadowColor, shadowRadius, offsetX, offsetY);
}
}
<?xml version="1.0" encoding="utf-8"?>
<View xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/horizontal_dividing_line"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_0_5"
android:background="@color/color_ccc" />
<?xml version="1.0" encoding="utf-8"?>
<View xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/horizontal_dividing_line"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_1"
android:layout_height="@dimen/dp_0_5"
android:background="@color/line_color2" />
<?xml version="1.0" encoding="utf-8"?>
<View xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/vertical_dividing_line"
android:layout_width="@dimen/dp_0_5"
android:layout_height="match_parent"
android:background="@color/color_ccc"
android:orientation="vertical" />
<?xml version="1.0" encoding="utf-8"?>
<View xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/vertical_dividing_line"
android:layout_width="@dimen/dp_0_5"
android:layout_height="match_parent"
android:background="@color/line_color2"
android:orientation="vertical" />
......@@ -415,5 +415,8 @@
<color name="hint_color">#676767</color>
<color name="main_home_function_head_bg">#F4F4F4</color>
<color name="shadow_color">#73888888</color>
<color name="color_8f">#8f8f8f</color>
<color name="color_3c">#3c3c3c</color>
</resources>
......@@ -47,7 +47,10 @@
<dimen name="bottom_dialog_top_icon">38dp</dimen>
<dimen name="bottom_dialog_left_icon">32dp</dimen>
<dimen name="main_shadow_dy">@dimen/dp_1</dimen>
<dimen name="main_shadow_limit">@dimen/dp_3</dimen>
<dimen name="report_ranking_item_height">@dimen/dp_47</dimen>
<!-- dp and sp values, must be defind in this file! -->
<!-- view size,you can add if there is no one -->
<dimen name="dp_m_60">-60dp</dimen>
......
......@@ -276,4 +276,10 @@
<item name="android:textColor">#333</item>
<item name="android:textSize">35sp</item>
</style>
<style name="report_food_ranking">
<item name="android:gravity">center</item>
<item name="android:textSize">@dimen/sp_13</item>
<item name="android:textColor">@color/theme_hint_color</item>
</style>
</resources>
......@@ -8,18 +8,21 @@ import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.R2;
import com.gingersoft.gsa.cloud.table.di.component.DaggerAllTableComponent;
import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
import com.gingersoft.gsa.cloud.table.mvp.contract.AllTableContract;
import com.gingersoft.gsa.cloud.table.mvp.presenter.AllTablePresenter;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.TableActivity;
import com.jess.arms.base.BaseFragment;
import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.gingersoft.gsa.cloud.table.mvp.contract.AllTableContract;
import com.gingersoft.gsa.cloud.table.mvp.presenter.AllTablePresenter;
import com.gingersoft.gsa.cloud.table.R2;
import java.util.List;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.DefaultItemAnimator;
......@@ -167,7 +170,8 @@ public class AllTableFragment extends BaseFragment<AllTablePresenter> implements
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.snackbarText(message);
// ArmsUtils.snackbarText(message);
ToastUtils.show(mContext, message);
}
@Override
......
......@@ -9,17 +9,18 @@ import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
import com.gingersoft.gsa.cloud.base.utils.VibratorUtils;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.R2;
import com.gingersoft.gsa.cloud.table.di.component.DaggerInputTableComponent;
import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
import com.gingersoft.gsa.cloud.table.mvp.contract.InputTableContract;
import com.gingersoft.gsa.cloud.table.mvp.presenter.InputTablePresenter;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.TableActivity;
import com.jess.arms.base.BaseFragment;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.gingersoft.gsa.cloud.table.mvp.contract.InputTableContract;
import com.gingersoft.gsa.cloud.table.mvp.presenter.InputTablePresenter;
import java.util.ArrayList;
import java.util.List;
......@@ -405,7 +406,8 @@ public class InputTableFragment extends BaseFragment<InputTablePresenter> implem
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.snackbarText(message);
// ArmsUtils.snackbarText(message);
ToastUtils.show(mContext, message);
}
@Override
......
......@@ -7,18 +7,19 @@ import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.R2;
import com.gingersoft.gsa.cloud.table.di.component.DaggerStateTableComponent;
import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
import com.gingersoft.gsa.cloud.table.mvp.contract.StateTableContract;
import com.gingersoft.gsa.cloud.table.mvp.presenter.StateTablePresenter;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.TableActivity;
import com.jess.arms.base.BaseFragment;
import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.gingersoft.gsa.cloud.table.mvp.contract.StateTableContract;
import com.gingersoft.gsa.cloud.table.mvp.presenter.StateTablePresenter;
import com.gingersoft.gsa.cloud.table.R;
import java.util.List;
......@@ -170,7 +171,8 @@ public class StateTableFragment extends BaseFragment<StateTablePresenter> implem
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.snackbarText(message);
// ArmsUtils.snackbarText(message);
ToastUtils.show(mContext, message);
}
@Override
......
......@@ -120,7 +120,8 @@ public class LoginActivity extends BaseActivity<LoginPresenter> implements Login
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.snackbarText(message);
// ArmsUtils.snackbarText(message);
ToastUtils.show(mContext, message);
}
@Override
......@@ -136,7 +137,6 @@ public class LoginActivity extends BaseActivity<LoginPresenter> implements Login
@Override
public void loginSuccess(LoginBean loginBean) {
if (loginBean.getData() != null ) {
GsaCloudApplication.setLoginToken(LoginActivity.this, loginBean.getData().getToken());
......
......@@ -77,7 +77,7 @@
app:ed_singLeLine="true"
app:ed_textColor="#333"
app:ed_textSize="@dimen/edit_text_size"
app:inputType="numberPassword"
app:inputType="textPassword"
app:layout_constraintBottom_toBottomOf="@id/iv_login_pwd_icon"
app:layout_constraintLeft_toRightOf="@id/iv_login_pwd_icon"
app:layout_constraintRight_toRightOf="parent"
......@@ -90,6 +90,7 @@
android:layout_marginTop="10dp"
android:text="忘記密碼?"
android:textSize="14dp"
android:visibility="invisible"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/ed_login_user_pwd" />
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment