Explorar el Código

加入图标修改边框

xsjgod hace 4 años
padre
commit
0d2bacc369

+ 171 - 0
app-android/app/src/main/java/com/slient/udiApplication/controls/DividerGridItemDecoration.java

@@ -0,0 +1,171 @@
+package com.slient.udiApplication.controls;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.Canvas;
+import android.graphics.Rect;
+import android.graphics.drawable.Drawable;
+import android.view.View;
+
+import androidx.recyclerview.widget.GridLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.StaggeredGridLayoutManager;
+
+public class DividerGridItemDecoration extends RecyclerView.ItemDecoration {
+
+    private static final int[] ATTRS = new int[] { android.R.attr.listDivider };
+    private Drawable mDivider;
+
+    public DividerGridItemDecoration(Context context)
+    {
+        final TypedArray a = context.obtainStyledAttributes(ATTRS);
+        mDivider = a.getDrawable(0);
+        a.recycle();
+    }
+
+    @Override
+    public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state)
+    {
+
+        drawHorizontal(c, parent);
+        drawVertical(c, parent);
+
+    }
+
+    private int getSpanCount(RecyclerView parent)
+    {
+        // 列数
+        int spanCount = -1;
+        RecyclerView.LayoutManager layoutManager = parent.getLayoutManager();
+        if (layoutManager instanceof GridLayoutManager)
+        {
+
+            spanCount = ((GridLayoutManager) layoutManager).getSpanCount();
+        } else if (layoutManager instanceof StaggeredGridLayoutManager)
+        {
+            spanCount = ((StaggeredGridLayoutManager) layoutManager)
+                    .getSpanCount();
+        }
+        return spanCount;
+    }
+
+    public void drawHorizontal(Canvas c, RecyclerView parent)
+    {
+        int childCount = parent.getChildCount();
+        for ( int i = 0; i < childCount; i++)
+        {
+            final View child = parent.getChildAt(i);
+            final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child
+                    .getLayoutParams();
+            final int left = child.getLeft() - params.leftMargin;
+            final int right = child.getRight() + params.rightMargin
+                    + mDivider.getIntrinsicWidth();
+            final int top = child.getBottom() + params.bottomMargin;
+            final int bottom = top + mDivider.getIntrinsicHeight();
+            mDivider.setBounds(left, top, right, bottom);
+            mDivider.draw(c);
+        }
+    }
+
+    public void drawVertical(Canvas c, RecyclerView parent)
+    {
+        final int childCount = parent.getChildCount();
+        for ( int i = 0; i < childCount; i++)
+        {
+            final View child = parent.getChildAt(i);
+
+            final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child
+                    .getLayoutParams();
+            final int top = child.getTop() - params.topMargin;
+            final int bottom = child.getBottom() + params.bottomMargin;
+            final int left = child.getRight() + params.rightMargin;
+            final int right = left + mDivider.getIntrinsicWidth();
+
+            mDivider.setBounds(left, top, right, bottom);
+            mDivider.draw(c);
+        }
+    }
+
+    private boolean isLastColum(RecyclerView parent, int pos, int spanCount,
+                                int childCount)
+    {
+        RecyclerView.LayoutManager layoutManager = parent.getLayoutManager();
+        if (layoutManager instanceof GridLayoutManager)
+        {
+            if ((pos + 1) % spanCount == 0) // 如果是最后一列,则不需要绘制右边
+            {
+                return true;
+            }
+        } else if (layoutManager instanceof StaggeredGridLayoutManager)
+        {
+            int orientation = ((StaggeredGridLayoutManager) layoutManager)
+                    .getOrientation();
+            if (orientation == StaggeredGridLayoutManager.VERTICAL )
+            {
+                if ((pos + 1) % spanCount == 0) // 如果是最后一列,则不需要绘制右边
+                {
+                    return true;
+                }
+            } else
+            {
+                childCount = childCount - childCount % spanCount;
+                if (pos >= childCount) // 如果是最后一列,则不需要绘制右边
+                    return true;
+            }
+        }
+        return false;
+    }
+
+    private boolean isLastRaw(RecyclerView parent, int pos, int spanCount,
+                              int childCount)
+    {
+        RecyclerView.LayoutManager layoutManager = parent.getLayoutManager();
+        if (layoutManager instanceof GridLayoutManager)
+        {
+            childCount = childCount - childCount % spanCount;
+            if (pos >= childCount) // 如果是最后一行,则不需要绘制底部
+                return true;
+        } else if (layoutManager instanceof StaggeredGridLayoutManager)
+        {
+            int orientation = ((StaggeredGridLayoutManager) layoutManager)
+                    .getOrientation();
+            // StaggeredGridLayoutManager 且纵向滚动
+            if (orientation == StaggeredGridLayoutManager.VERTICAL )
+            {
+                childCount = childCount - childCount % spanCount;
+                // 如果是最后一行,则不需要绘制底部
+                if (pos >= childCount)
+                    return true;
+            } else
+            // StaggeredGridLayoutManager 且横向滚动
+            {
+                // 如果是最后一行,则不需要绘制底部
+                if ((pos + 1) % spanCount == 0)
+                {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    @Override
+    public void getItemOffsets(Rect outRect, int itemPosition,
+                               RecyclerView parent)
+    {
+        int spanCount = getSpanCount(parent);
+        int childCount = parent.getAdapter().getItemCount();
+        if (isLastRaw(parent, itemPosition, spanCount, childCount))// 如果是最后一行,则不需要绘制底部
+        {
+            outRect.set(0, 0, mDivider.getIntrinsicWidth(), 0);
+        } else if (isLastColum(parent, itemPosition, spanCount, childCount))// 如果是最后一列,则不需要绘制右边
+        {
+            outRect.set(0, 0, 0, mDivider.getIntrinsicHeight());
+        } else
+        {
+            outRect.set(0, 0, mDivider.getIntrinsicWidth(),
+                    mDivider.getIntrinsicHeight());
+        }
+    }
+}
+

+ 3 - 1
app-android/app/src/main/java/com/slient/udiApplication/main/udiui/UDIMainFragment.java

@@ -19,6 +19,7 @@ import com.slient.udiApplication.base.LazyFragment;
 import com.slient.udiApplication.common.AppHelper;
 import com.slient.udiApplication.common.RVAdapter;
 
+import com.slient.udiApplication.controls.DividerGridItemDecoration;
 import com.slient.udiApplication.invoke.IAdpaterConvert;
 import com.slient.udiresources.databinding.FragmentInBoxBinding;
 import com.slient.udiresources.databinding.FragmentUdiMainBinding;
@@ -74,7 +75,7 @@ public class UDIMainFragment extends LazyFragment {
         List<Map> data = new ArrayList<>();
         String[] subMenuNames = {"装箱", "入库", "出库", "退货"};
         String[] subMenuUrls = {"/udi/inBox", "/udi/inStock", "/udi/outStock", "/udi/returnGoodss"};
-        int[] imgRes = {R.drawable.gis_alarm, R.drawable.gis_alarm, R.drawable.gis_alarm, R.drawable.gis_alarm};
+        int[] imgRes = {R.drawable.ic_baseline_inbox_24, R.drawable.ic_instock_24, R.drawable.ic_outstock_24, R.drawable.ic_return_goods_24};
         for (int i = 0; i < subMenuNames.length; i++) {
             Map<String, Object> mapItem = new HashMap<>();
             mapItem.put("name", subMenuNames[i]);
@@ -84,6 +85,7 @@ public class UDIMainFragment extends LazyFragment {
         }
         adapter.add(data);
         binding.setVariable(BR.adapter, adapter);
+        binding.realTimeRv.addItemDecoration(new DividerGridItemDecoration(this.getContext()));
         binding.realTimeRv.setLayoutManager(new GridLayoutManager(this.getContext(), 3));
 
 //        binding.realTimeRv.addItemDecoration(new RecyclerView.ItemDecoration() {

+ 10 - 0
app-android/udiResources/src/main/res/drawable/ic_baseline_inbox_24.xml

@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M19,3L4.99,3c-1.11,0 -1.98,0.89 -1.98,2L3,19c0,1.1 0.88,2 1.99,2L19,21c1.1,0 2,-0.9 2,-2L21,5c0,-1.11 -0.9,-2 -2,-2zM19,15h-4c0,1.66 -1.35,3 -3,3s-3,-1.34 -3,-3L4.99,15L4.99,5L19,5v10z"/>
+</vector>

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 9 - 0
app-android/udiResources/src/main/res/drawable/ic_instock_24.xml


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 8 - 0
app-android/udiResources/src/main/res/drawable/ic_outstock_24.xml


+ 13 - 0
app-android/udiResources/src/main/res/drawable/ic_return_goods_24.xml

@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="1024"
+    android:viewportHeight="1024"
+    android:tint="?attr/colorControlNormal">
+    <path
+        android:fillColor="@android:color/white"
+        android:pathData="M897.81,32.56A73.11,73.11 0,0 0,837.02 0L184.32,0c-24.41,0 -47.24,12.22 -60.83,32.56L0,219.03v731c0,40.17 32.9,73.08 73.08,73.08h876.95a73.32,73.32 0,0 0,73.08 -73.08L1023.11,219.03L897.84,32.56zM950.03,950.03L73.05,950.03L73.05,292.11h876.95v657.92zM73.05,219.03l106.91,-145.48 665.29,-0.58 104.76,146.06L73.05,219.03z" />
+    <path
+        android:fillColor="@android:color/white"
+        android:pathData="M716.63,622.11c0,-66.56 -48.98,-120.63 -111.55,-127.25v-1.33h-261.73l80.9,-83.8 -30.75,6.69L307.2,505.75l86.25,89.29 30.75,6.66 -79.67,-82.47h247.88c54.95,0 99.33,46.05 99.33,102.84 0,56.76 -44.37,102.88 -99.33,102.88H331.88v25.7h273.17v-1.3c62.6,-6.62 111.62,-60.76 111.62,-127.25zM331.54,507.12l2.63,-1.71v3.45l-2.63,-1.71z" />
+</vector>

+ 3 - 1
app-android/udiResources/src/main/res/layout/udi_menu_list.xml

@@ -26,7 +26,8 @@
                 app:imageRes="@{Integer.valueOf(map.get(`img`).toString())}"
                 app:layout_constraintLeft_toLeftOf="parent"
                 app:layout_constraintRight_toRightOf="parent"
-                app:layout_constraintTop_toTopOf="parent" />
+                app:layout_constraintTop_toTopOf="parent"
+                app:tint="#03A9F4" />
 
             <TextView
                 android:layout_width="wrap_content"
@@ -34,6 +35,7 @@
                 android:layout_marginTop="5dp"
                 android:text="@{map.get(`name`).toString()}"
                 android:textSize="17sp"
+                android:textColor="#393838"
                 app:layout_constraintLeft_toLeftOf="parent"
                 app:layout_constraintRight_toRightOf="parent"
                 app:layout_constraintTop_toBottomOf="@id/imgView"></TextView>

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio