diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d58fde7..08c2c7b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -178,6 +178,11 @@
android:configChanges="orientation|screenSize|keyboardHidden"
android:exported="false"
android:screenOrientation="portrait" />
+
{
@Override
protected void onFindView(Bundle savedInstanceState) {
-// if (BuildConfig.DEBUG) {
-// setText(binding.inputUserName, "admin");
-// setText(binding.inputUserPass, "admin123");
-// }
+ if (BuildConfig.DEBUG) {
+ setText(binding.inputUserName, "admin");
+ setText(binding.inputUserPass, "admin123");
+ }
}
@Override
diff --git a/app/src/main/java/com/tairui/industrial_operation/ui/home/adapter/HomeAdapter.java b/app/src/main/java/com/tairui/industrial_operation/ui/home/adapter/HomeAdapter.java
index 3706048..2cb6087 100644
--- a/app/src/main/java/com/tairui/industrial_operation/ui/home/adapter/HomeAdapter.java
+++ b/app/src/main/java/com/tairui/industrial_operation/ui/home/adapter/HomeAdapter.java
@@ -8,6 +8,7 @@ import com.tairui.industrial_operation.R;
import com.tairui.industrial_operation.base.entity.BaseHolderEntity;
import com.tairui.industrial_operation.ui.brand.PublicBrandActivity;
import com.tairui.industrial_operation.ui.home.entity.HomeGoodsEntity;
+import com.tairui.industrial_operation.ui.mall.GoodsDetailActivity;
import com.tairui.industrial_operation.ui.smart_farm.SmartFarmActivity;
import com.tairui.industrial_operation.util.DensityUtils;
import com.tairui.industrial_operation.util.IntentUtil;
@@ -100,6 +101,8 @@ public class HomeAdapter extends BaseMultiItemQuickAdapter) entity.getData());
goodsRecycler.setAdapter(goodsAdapter);
+ goodsAdapter.setOnItemClickListener(
+ (baseQuickAdapter, view, i) -> IntentUtil.startActivity(mContext, GoodsDetailActivity.class));
break;
default:
break;
diff --git a/app/src/main/java/com/tairui/industrial_operation/ui/mall/GoodsDetailActivity.java b/app/src/main/java/com/tairui/industrial_operation/ui/mall/GoodsDetailActivity.java
new file mode 100644
index 0000000..57a6929
--- /dev/null
+++ b/app/src/main/java/com/tairui/industrial_operation/ui/mall/GoodsDetailActivity.java
@@ -0,0 +1,75 @@
+package com.tairui.industrial_operation.ui.mall;
+
+import com.gyf.immersionbar.ImmersionBar;
+import com.kongzue.dialogx.dialogs.BottomDialog;
+import com.kongzue.dialogx.interfaces.OnBindView;
+import com.tairui.industrial_operation.R;
+import com.tairui.industrial_operation.base.BaseActivity;
+import com.tairui.industrial_operation.databinding.ActivityGoodsDetailBinding;
+import com.tairui.industrial_operation.util.SingleClickListener;
+
+import android.os.Bundle;
+import android.view.View;
+
+public class GoodsDetailActivity extends BaseActivity {
+
+ @Override
+ protected Class getBindingClass() {
+ return ActivityGoodsDetailBinding.class;
+ }
+
+ @Override
+ protected void initStatusBar() {
+ ImmersionBar.with(this).fitsSystemWindows(false).transparentStatusBar()
+ .statusBarDarkFont(true).init();
+ }
+
+ @Override
+ protected void onQueryArguments() {
+ }
+
+ @Override
+ protected void onFindView(Bundle savedInstanceState) {
+ }
+
+ @Override
+ protected void onBindListener() {
+ binding.btnBack.setOnClickListener(new SingleClickListener() {
+ @Override
+ protected void onSingleClick(View v) {
+ finish();
+ }
+ });
+ binding.baozhang.setOnClickListener(new SingleClickListener() {
+ @Override
+ protected void onSingleClick(View v) {
+ new BottomDialog("null", "", new OnBindView(
+ R.layout.layout_dialog_baozhang) {
+ @Override
+ public void onBind(BottomDialog dialog, View v) {
+ v.setOnClickListener(v1 -> dialog.dismiss());
+ }
+ }).setBackgroundColor(getResColor(R.color.white)).show();
+ }
+ });
+ binding.canshu.setOnClickListener(new SingleClickListener() {
+ @Override
+ protected void onSingleClick(View v) {
+ new BottomDialog("null", "", new OnBindView(
+ R.layout.layout_dialog_canshu) {
+ @Override
+ public void onBind(BottomDialog dialog, View v) {
+ v.setOnClickListener(v1 -> dialog.dismiss());
+ }
+ }).setBackgroundColor(getResColor(R.color.white)).show();
+ }
+ });
+ }
+
+ @Override
+ protected void onApplyData() {
+ }
+
+ private void requestGoodsDetailInfo(String goodsId) {
+ }
+}
diff --git a/app/src/main/java/com/tairui/industrial_operation/ui/mall/MallFragment.java b/app/src/main/java/com/tairui/industrial_operation/ui/mall/MallFragment.java
index f531a7b..2a31f6a 100644
--- a/app/src/main/java/com/tairui/industrial_operation/ui/mall/MallFragment.java
+++ b/app/src/main/java/com/tairui/industrial_operation/ui/mall/MallFragment.java
@@ -13,6 +13,7 @@ import com.tairui.industrial_operation.http.OnError;
import com.tairui.industrial_operation.ui.home.entity.HomeGoodsEntity;
import com.tairui.industrial_operation.ui.mall.adapter.MallAdapter;
import com.tairui.industrial_operation.util.ArrayUtil;
+import com.tairui.industrial_operation.util.IntentUtil;
import com.tairui.industrial_operation.widget.RefreshRecyclerView;
import android.view.View;
@@ -60,7 +61,6 @@ public class MallFragment extends BaseFragment {
adapter.setOnItemClickListener((baseQuickAdapter, view, i) -> {
// Bundle bundle = new Bundle();
// bundle.putSerializable("data", (Serializable) adapter.getItem(i));
- // IntentUtil.startActivity(mContext, LandInfoDetailActivity.class, bundle);
});
}
diff --git a/app/src/main/java/com/tairui/industrial_operation/ui/mall/adapter/MallAdapter.java b/app/src/main/java/com/tairui/industrial_operation/ui/mall/adapter/MallAdapter.java
index a734948..7a50a1c 100644
--- a/app/src/main/java/com/tairui/industrial_operation/ui/mall/adapter/MallAdapter.java
+++ b/app/src/main/java/com/tairui/industrial_operation/ui/mall/adapter/MallAdapter.java
@@ -8,7 +8,9 @@ import com.tairui.industrial_operation.R;
import com.tairui.industrial_operation.base.entity.BaseHolderEntity;
import com.tairui.industrial_operation.ui.home.adapter.HomeGoodsAdapter;
import com.tairui.industrial_operation.ui.home.entity.HomeGoodsEntity;
+import com.tairui.industrial_operation.ui.mall.GoodsDetailActivity;
import com.tairui.industrial_operation.util.DensityUtils;
+import com.tairui.industrial_operation.util.IntentUtil;
import com.tairui.industrial_operation.widget.GridSpacingItemDecoration;
import androidx.annotation.NonNull;
@@ -55,6 +57,8 @@ public class MallAdapter extends BaseMultiItemQuickAdapter) entity.getData());
goodsRecycler.setAdapter(goodsAdapter);
+ goodsAdapter.setOnItemClickListener(
+ (baseQuickAdapter, view, i) -> IntentUtil.startActivity(mContext, GoodsDetailActivity.class));
break;
default:
break;
diff --git a/app/src/main/java/com/tairui/industrial_operation/widget/CustomRoundImageView.java b/app/src/main/java/com/tairui/industrial_operation/widget/CustomRoundImageView.java
new file mode 100644
index 0000000..b6dc550
--- /dev/null
+++ b/app/src/main/java/com/tairui/industrial_operation/widget/CustomRoundImageView.java
@@ -0,0 +1,485 @@
+package com.tairui.industrial_operation.widget;
+
+import com.tairui.industrial_operation.R;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.graphics.Path;
+import android.graphics.PorterDuff;
+import android.graphics.PorterDuffXfermode;
+import android.graphics.RectF;
+import android.text.TextPaint;
+import android.util.AttributeSet;
+import android.widget.ImageView;
+
+@SuppressLint("AppCompatCustomView")
+public class CustomRoundImageView extends ImageView {
+
+ private static final int LEFT_TOP = 0;
+ private static final int LEFT_BOTTOM = 1;
+ private static final int RIGHT_TOP = 2;
+ private static final int RIGHT_BOTTOM = 3;
+
+ private static final int SANS = 1;
+ private static final int SERIF = 2;
+ private static final int MONOSPACE = 3;
+ /**
+ * My paint.
+ */
+ private Paint mPaint = null;
+ /**
+ * The Border width.
+ */
+ private float borderWidth = 2;
+ /**
+ * The Border color.
+ */
+ private int borderColor = Color.parseColor("#8A2BE2");
+ /**
+ * The Display border.
+ */
+ private boolean displayBorder;
+ /**
+ * The Left top radius.
+ */
+ private float leftTopRadius,
+ /**
+ * The Right top radius.
+ */
+ rightTopRadius,
+ /**
+ * The Left bottom radius.
+ */
+ leftBottomRadius,
+ /**
+ * The Right bottom radius.
+ */
+ rightBottomRadius;
+
+ /**
+ * The Display type.
+ */
+ private DisplayType displayType;
+
+ /**
+ * The text paint
+ */
+ private TextPaint mTextPaint = null;
+ /**
+ * Text displayed on the label
+ */
+ private String text;
+
+ /**
+ * The enum Display type.
+ */
+ public enum DisplayType {
+ /**
+ * Normal display type.
+ */
+ NORMAL(0),
+ /**
+ * Circle display type.
+ */
+ CIRCLE(1),
+ /**
+ * Round rect display type.
+ */
+ ROUND_RECT(2);
+
+ DisplayType(int type) {
+ this.type = type;
+ }
+
+ /**
+ * The Type.
+ */
+ final int type;
+ }
+
+ /**
+ * The Display type array.
+ */
+ private static final DisplayType[] displayTypeArray = {
+ DisplayType.NORMAL,
+ DisplayType.CIRCLE,
+ DisplayType.ROUND_RECT
+ };
+
+ /**
+ * Instantiates a new Round image view.
+ *
+ * @param context the Context
+ */
+ public CustomRoundImageView(Context context) {
+ this(context, null);
+ }
+
+ /**
+ * Instantiates a new Round image view.
+ *
+ * @param context the Context
+ * @param attrs the AttributeSet
+ */
+ public CustomRoundImageView(Context context, AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ /**
+ * Instantiates a new Round image view.
+ *
+ * @param context the Context
+ * @param attrs the AttributeSet
+ * @param defStyleAttr the default style Attribute
+ */
+ public CustomRoundImageView(Context context, AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ init(context, attrs);
+ }
+
+ /**
+ * Init.
+ *
+ * @param ctx the Context
+ * @param attrs the AttributeSet
+ */
+ private void init(Context ctx, AttributeSet attrs) {
+ setLayerType(LAYER_TYPE_HARDWARE, null);
+ mPaint = new Paint();
+ mTextPaint = new TextPaint();
+
+ if (attrs != null) {
+ TypedArray a = ctx.obtainStyledAttributes(attrs, R.styleable.RoundImageView);
+
+ borderWidth = a.getDimension(R.styleable.RoundImageView_borderWidth, borderWidth);
+ borderColor = a.getColor(R.styleable.RoundImageView_borderColor, borderColor);
+ displayBorder = a.getBoolean(R.styleable.RoundImageView_displayBorder, displayBorder);
+
+ leftTopRadius = a.getDimension(R.styleable.RoundImageView_leftTopRadius, leftTopRadius);
+ rightTopRadius = a.getDimension(R.styleable.RoundImageView_rightTopRadius, rightTopRadius);
+ leftBottomRadius = a.getDimension(R.styleable.RoundImageView_leftBottomRadius, leftBottomRadius);
+ rightBottomRadius = a.getDimension(R.styleable.RoundImageView_rightBottomRadius, rightBottomRadius);
+
+ float radius = a.getDimension(R.styleable.RoundImageView_radiusSize, 0);
+ if (radius > 0) {
+ leftTopRadius = leftBottomRadius = rightTopRadius = rightBottomRadius = radius;
+ }
+
+ int index = a.getInt(R.styleable.RoundImageView_displayType, -1);
+
+ if (index >= 0) {
+ displayType = displayTypeArray[index];
+ } else {
+ displayType = DisplayType.NORMAL;
+ }
+ setScaleType(ScaleType.CENTER_CROP);
+ a.recycle();
+ }
+ }
+
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ int widthSize = MeasureSpec.getSize(widthMeasureSpec);
+ int heightSize = MeasureSpec.getSize(heightMeasureSpec);
+ if (displayType == DisplayType.CIRCLE) {
+ int measureSpec;
+ if (widthSize < heightSize) {
+ measureSpec = widthMeasureSpec;
+ } else {
+ measureSpec = heightMeasureSpec;
+ }
+ if (widthSize <= 0) {
+ measureSpec = heightMeasureSpec;
+ }
+ super.onMeasure(measureSpec, measureSpec);
+ } else {
+ super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+ }
+ }
+
+ @SuppressLint("DrawAllocation")
+ @Override
+ protected void onDraw(Canvas canvas) {
+ if (getDrawable() != null) {
+ resetSize(Math.min(getWidth(), getHeight()) / 2f);
+ Bitmap bm = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_4444);
+ Canvas mCanvas = new Canvas(bm);
+ super.onDraw(mCanvas);
+ mPaint.reset();
+ mPaint.setAntiAlias(true);
+ mPaint.setDither(true);
+ drawMyContent(mCanvas);
+ canvas.drawBitmap(bm, 0, 0, mPaint);
+ bm.recycle();
+ } else {
+ super.onDraw(canvas);
+ }
+ }
+
+ /**
+ * Reset Size.
+ *
+ * @param size the size
+ */
+ private void resetSize(float size) {
+ leftTopRadius = Math.min(leftTopRadius, size);
+ rightTopRadius = Math.min(rightTopRadius, size);
+ leftBottomRadius = Math.min(leftBottomRadius, size);
+ rightBottomRadius = Math.min(rightBottomRadius, size);
+ borderWidth = Math.min(borderWidth, size / 2);
+ }
+
+ /**
+ * Draw my content.
+ *
+ * @param mCanvas my canvas
+ */
+ private void drawMyContent(Canvas mCanvas) {
+
+ if (displayType != DisplayType.NORMAL) {
+ mPaint.setStyle(Paint.Style.FILL);
+ mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT));
+ Path path = createPath();
+ path.setFillType(Path.FillType.INVERSE_EVEN_ODD);
+ mCanvas.drawPath(path, mPaint);
+ mPaint.setXfermode(null);
+ }
+
+ if (displayBorder) {
+ drawBorders(mCanvas);
+ }
+ }
+
+ /**
+ * Draw borders.
+ *
+ * @param mCanvas my canvas
+ */
+ private void drawBorders(Canvas mCanvas) {
+ mPaint.setStyle(Paint.Style.STROKE);
+ mPaint.setColor(borderColor);
+ mPaint.setStrokeWidth(borderWidth);
+ Path path = createPath();
+ mCanvas.drawPath(path, mPaint);
+ }
+
+ /**
+ * Create path.
+ *
+ * @return the path
+ */
+ private Path createPath() {
+ Path mPath = new Path();
+ float size = borderWidth / 2;
+ switch (displayType) {
+ case CIRCLE:
+ mPath.addCircle(getWidth() / 2f, getHeight() / 2f, getWidth() / 2f - size, Path.Direction.CW);
+ break;
+ case ROUND_RECT:
+ RectF rectF = new RectF(0, 0, getWidth(), getHeight());
+ rectF.inset(size, size);
+ mPath.addRoundRect(rectF,
+ new float[]{
+ leftTopRadius, leftTopRadius,
+ rightTopRadius, rightTopRadius,
+ rightBottomRadius, rightBottomRadius,
+ leftBottomRadius, leftBottomRadius},
+ Path.Direction.CW);
+ break;
+ default:
+ RectF rect = new RectF(0, 0, getWidth(), getHeight());
+ rect.inset(size, size);
+ mPath.addRect(rect, Path.Direction.CW);
+ break;
+ }
+ return mPath;
+ }
+
+ /**
+ * Sets border color.
+ *
+ * @param borderColor the border color
+ */
+ public void setBorderColor(int borderColor) {
+ if (this.borderColor != borderColor) {
+ this.borderColor = borderColor;
+ if (displayBorder) {
+ postInvalidate();
+ }
+ }
+ }
+
+ /**
+ * Is display border boolean.
+ *
+ * @return the boolean
+ */
+ public boolean isDisplayBorder() {
+ return displayBorder;
+ }
+
+ /**
+ * Sets display border.
+ *
+ * @param displayBorder the display border
+ */
+ public void setDisplayBorder(boolean displayBorder) {
+ if (this.displayBorder != displayBorder) {
+ this.displayBorder = displayBorder;
+ postInvalidate();
+ }
+ }
+
+ /**
+ * Gets left top radius.
+ *
+ * @return the left top radius
+ */
+ public float getLeftTopRadius() {
+ return leftTopRadius;
+ }
+
+ /**
+ * Sets left top radius.
+ *
+ * @param leftTopRadius the left top radius
+ */
+ public void setLeftTopRadius(float leftTopRadius) {
+ if (this.leftTopRadius != leftTopRadius) {
+ this.leftTopRadius = leftTopRadius;
+ if (displayType != DisplayType.NORMAL) {
+ postInvalidate();
+ }
+ }
+ }
+
+ /**
+ * Gets right top radius.
+ *
+ * @return the right top radius
+ */
+ public float getRightTopRadius() {
+ return rightTopRadius;
+ }
+
+ /**
+ * Sets right top radius.
+ *
+ * @param rightTopRadius the right top radius
+ */
+ public void setRightTopRadius(float rightTopRadius) {
+ if (this.rightTopRadius != rightTopRadius) {
+ this.rightTopRadius = rightTopRadius;
+ if (displayType != DisplayType.NORMAL) {
+ postInvalidate();
+ }
+ }
+ }
+
+ /**
+ * Gets left bottom radius.
+ *
+ * @return the left bottom radius
+ */
+ public float getLeftBottomRadius() {
+ return leftBottomRadius;
+ }
+
+ /**
+ * Sets left bottom radius.
+ *
+ * @param leftBottomRadius the left bottom radius
+ */
+ public void setLeftBottomRadius(float leftBottomRadius) {
+ if (this.leftBottomRadius != leftBottomRadius) {
+ this.leftBottomRadius = leftBottomRadius;
+ if (displayType != DisplayType.NORMAL) {
+ postInvalidate();
+ }
+ }
+ }
+
+ /**
+ * Gets right bottom radius.
+ *
+ * @return the right bottom radius
+ */
+ public float getRightBottomRadius() {
+ return rightBottomRadius;
+ }
+
+ /**
+ * Sets right bottom radius.
+ *
+ * @param rightBottomRadius the right bottom radius
+ */
+ public void setRightBottomRadius(float rightBottomRadius) {
+ if (this.rightBottomRadius != rightBottomRadius) {
+ this.rightBottomRadius = rightBottomRadius;
+ if (displayType != DisplayType.NORMAL) {
+ postInvalidate();
+ }
+ }
+ }
+
+ /**
+ * Sets radius.
+ *
+ * @param leftTopRadius the left top radius
+ * @param rightTopRadius the right top radius
+ * @param leftBottomRadius the left bottom radius
+ * @param rightBottomRadius the right bottom radius
+ */
+ public void setRadius(float leftTopRadius, float rightTopRadius, float leftBottomRadius, float rightBottomRadius) {
+ if (this.leftTopRadius == leftTopRadius
+ && this.rightTopRadius == rightTopRadius
+ && this.leftBottomRadius == leftBottomRadius
+ && this.rightBottomRadius == rightBottomRadius) {
+ return;
+ }
+
+ this.leftTopRadius = leftTopRadius;
+ this.rightTopRadius = rightTopRadius;
+ this.leftBottomRadius = leftBottomRadius;
+ this.rightBottomRadius = rightBottomRadius;
+ if (displayType != DisplayType.NORMAL) {
+ postInvalidate();
+ }
+ }
+
+ /**
+ * Sets radius.
+ *
+ * @param radius the radius
+ */
+ public void setRadius(float radius) {
+ setRadius(radius, radius, radius, radius);
+ }
+
+ /**
+ * Gets display type.
+ *
+ * @return the display type
+ */
+ public DisplayType getDisplayType() {
+ return displayType;
+ }
+
+ /**
+ * Sets display type.
+ *
+ * @return the display type
+ */
+ public void setDisplayType(DisplayType _displayType) {
+ displayType = _displayType;
+ if (displayType != DisplayType.NORMAL) {
+ postInvalidate();
+ }
+ }
+
+}
diff --git a/app/src/main/res/drawable/bg_container_gray_border_raduis_5.xml b/app/src/main/res/drawable/bg_container_gray_border_raduis_5.xml
new file mode 100644
index 0000000..6f29ecc
--- /dev/null
+++ b/app/src/main/res/drawable/bg_container_gray_border_raduis_5.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_container_green_right_raduis_30.xml b/app/src/main/res/drawable/bg_container_green_right_raduis_30.xml
new file mode 100644
index 0000000..a630190
--- /dev/null
+++ b/app/src/main/res/drawable/bg_container_green_right_raduis_30.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_container_light_gray_raduis_30.xml b/app/src/main/res/drawable/bg_container_light_gray_raduis_30.xml
new file mode 100644
index 0000000..9357f24
--- /dev/null
+++ b/app/src/main/res/drawable/bg_container_light_gray_raduis_30.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_container_light_green_left_raduis_30.xml b/app/src/main/res/drawable/bg_container_light_green_left_raduis_30.xml
new file mode 100644
index 0000000..ef9619a
--- /dev/null
+++ b/app/src/main/res/drawable/bg_container_light_green_left_raduis_30.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_container_red_raduis_30.xml b/app/src/main/res/drawable/bg_container_red_raduis_30.xml
new file mode 100644
index 0000000..e3fab94
--- /dev/null
+++ b/app/src/main/res/drawable/bg_container_red_raduis_30.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_container_yellow_raduis_30.xml b/app/src/main/res/drawable/bg_container_yellow_raduis_30.xml
new file mode 100644
index 0000000..33d4789
--- /dev/null
+++ b/app/src/main/res/drawable/bg_container_yellow_raduis_30.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_dot_red.xml b/app/src/main/res/drawable/bg_dot_red.xml
new file mode 100644
index 0000000..4973004
--- /dev/null
+++ b/app/src/main/res/drawable/bg_dot_red.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_gray_round.xml b/app/src/main/res/drawable/bg_gray_round.xml
new file mode 100644
index 0000000..8575b46
--- /dev/null
+++ b/app/src/main/res/drawable/bg_gray_round.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_goods_detail.xml b/app/src/main/res/layout/activity_goods_detail.xml
new file mode 100644
index 0000000..acfdb5b
--- /dev/null
+++ b/app/src/main/res/layout/activity_goods_detail.xml
@@ -0,0 +1,404 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_goods_detail_info.xml b/app/src/main/res/layout/item_goods_detail_info.xml
new file mode 100644
index 0000000..355e84d
--- /dev/null
+++ b/app/src/main/res/layout/item_goods_detail_info.xml
@@ -0,0 +1,381 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/layout_dialog_baozhang.xml b/app/src/main/res/layout/layout_dialog_baozhang.xml
new file mode 100644
index 0000000..2f7ebfa
--- /dev/null
+++ b/app/src/main/res/layout/layout_dialog_baozhang.xml
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/layout_dialog_canshu.xml b/app/src/main/res/layout/layout_dialog_canshu.xml
new file mode 100644
index 0000000..a465ab9
--- /dev/null
+++ b/app/src/main/res/layout/layout_dialog_canshu.xml
@@ -0,0 +1,210 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-xxhdpi/bg_goods_detail_barcode.png b/app/src/main/res/mipmap-xxhdpi/bg_goods_detail_barcode.png
new file mode 100644
index 0000000..1616fcf
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/bg_goods_detail_barcode.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_arrow_right_black_small.png b/app/src/main/res/mipmap-xxhdpi/ic_arrow_right_black_small.png
new file mode 100644
index 0000000..6f77d47
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_arrow_right_black_small.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_home.png b/app/src/main/res/mipmap-xxhdpi/ic_home.png
new file mode 100644
index 0000000..6c9b35c
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_home.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_service.png b/app/src/main/res/mipmap-xxhdpi/ic_service.png
new file mode 100644
index 0000000..102d09b
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_service.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_shopcart_black.png b/app/src/main/res/mipmap-xxhdpi/ic_shopcart_black.png
new file mode 100644
index 0000000..0cddcd4
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_shopcart_black.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_voice.png b/app/src/main/res/mipmap-xxhdpi/ic_voice.png
new file mode 100644
index 0000000..463fee7
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_voice.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/pic_goods_detail_1.png b/app/src/main/res/mipmap-xxhdpi/pic_goods_detail_1.png
new file mode 100644
index 0000000..12ce028
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/pic_goods_detail_1.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/pic_goods_detail_2.png b/app/src/main/res/mipmap-xxhdpi/pic_goods_detail_2.png
new file mode 100644
index 0000000..915737b
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/pic_goods_detail_2.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/pic_goods_detail_3.png b/app/src/main/res/mipmap-xxhdpi/pic_goods_detail_3.png
new file mode 100644
index 0000000..170261c
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/pic_goods_detail_3.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/pic_goods_detail_4.png b/app/src/main/res/mipmap-xxhdpi/pic_goods_detail_4.png
new file mode 100644
index 0000000..5de4308
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/pic_goods_detail_4.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/pic_goods_detail_5.png b/app/src/main/res/mipmap-xxhdpi/pic_goods_detail_5.png
new file mode 100644
index 0000000..d785139
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/pic_goods_detail_5.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/pic_goods_detail_6.png b/app/src/main/res/mipmap-xxhdpi/pic_goods_detail_6.png
new file mode 100644
index 0000000..b19c02f
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/pic_goods_detail_6.png differ
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index d6e7c84..d29088a 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -38,4 +38,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+