From a824b62bde75373c9b6b8d3a60b3a279895c8675 Mon Sep 17 00:00:00 2001
From: Administrator <123>
Date: Sat, 06 Nov 2021 08:17:44 +0000
Subject: [PATCH] 广场 帖子 UI

---
 app/src/main/java/com/duqing/missions/widgets/QuadrateLinearLayout.java          |   40 ++++++++++
 app/src/main/res/drawable-v21/btn_white.xml                                      |   23 +++++
 app/src/main/java/com/duqing/missions/base/adapter/BaseAdapter.java              |   12 +++
 app/src/main/res/color/radio_text.xml                                            |    2 
 app/src/main/java/com/duqing/missions/ui/main/dynamic/square/SquareFragment.java |   15 +++
 app/src/main/res/drawable/ic_baseline_more_vert_24.xml                           |   10 ++
 app/src/main/res/layout/item_square.xml                                          |   18 ++--
 app/src/main/res/drawable/bg_trans_red_circle.xml                                |    9 ++
 app/src/main/java/com/duqing/missions/ui/main/hall/popup/PopupClassify.java      |    5 
 app/src/main/res/values/colors.xml                                               |    2 
 app/src/main/res/layout/item/layout/dynamic_item_square.xml                      |  103 ++++++++++++++++++++++++-
 11 files changed, 224 insertions(+), 15 deletions(-)

diff --git a/app/src/main/java/com/duqing/missions/base/adapter/BaseAdapter.java b/app/src/main/java/com/duqing/missions/base/adapter/BaseAdapter.java
index 3d2cdb0..84f958a 100644
--- a/app/src/main/java/com/duqing/missions/base/adapter/BaseAdapter.java
+++ b/app/src/main/java/com/duqing/missions/base/adapter/BaseAdapter.java
@@ -12,6 +12,7 @@
 import com.duqing.missions.databinding.LayoutNullBinding;
 import com.duqing.missions.util.DeviceUtil;
 
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.lang.reflect.ParameterizedType;
 import java.util.ArrayList;
@@ -64,6 +65,17 @@
                 Method method = entityClass.getMethod("inflate", LayoutInflater.class,ViewGroup.class,boolean.class);//get method from name "inflate";
                 B vBind = (B) method.invoke(entityClass,LayoutInflater.from(parent.getContext()),parent,false);//execute method to create a objct of viewbind;
                 return new ViewBindHolder(vBind);
+            } catch (SecurityException e) {
+                e.printStackTrace();
+            } catch (NoSuchMethodException e) {
+                e.printStackTrace();
+            } catch (IllegalArgumentException e) {
+                e.printStackTrace();
+            } catch (IllegalAccessException e) {
+                e.printStackTrace();
+            } catch (InvocationTargetException e) {
+                Throwable t = e.getTargetException();// 获取目标异常
+                t.printStackTrace();
             } catch (Exception e) {
                 e.printStackTrace();
             }
diff --git a/app/src/main/java/com/duqing/missions/ui/main/dynamic/square/SquareFragment.java b/app/src/main/java/com/duqing/missions/ui/main/dynamic/square/SquareFragment.java
index e59f3f5..526516e 100644
--- a/app/src/main/java/com/duqing/missions/ui/main/dynamic/square/SquareFragment.java
+++ b/app/src/main/java/com/duqing/missions/ui/main/dynamic/square/SquareFragment.java
@@ -4,6 +4,9 @@
 import com.duqing.missions.data.BasePageResult;
 import com.duqing.missions.databinding.RefreshRecyclerBinding;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * 广场
  * Created by Administrator on 2021/11/5 0005.
@@ -11,4 +14,16 @@
 public class SquareFragment extends BaseLoadPageFragment<RefreshRecyclerBinding,SquareViewModel,SquareAdapter, BasePageResult<String>> {
 
 
+    @Override
+    public void initViews() {
+        super.initViews();
+
+        List<String> mData = new ArrayList<>();
+        mData.add("");
+        mData.add("");
+        mData.add("");
+        mData.add("");
+        mData.add("");
+        adapter.setData(mData);
+    }
 }
diff --git a/app/src/main/java/com/duqing/missions/ui/main/hall/popup/PopupClassify.java b/app/src/main/java/com/duqing/missions/ui/main/hall/popup/PopupClassify.java
index e7e1fa6..98ab66a 100644
--- a/app/src/main/java/com/duqing/missions/ui/main/hall/popup/PopupClassify.java
+++ b/app/src/main/java/com/duqing/missions/ui/main/hall/popup/PopupClassify.java
@@ -31,8 +31,9 @@
         HallClassifyAdapter adapter = new HallClassifyAdapter();
         adapter.setData(new ArrayList<>(Arrays.asList(classifies)));
         binding.recycler.setAdapter(adapter);
-        binding.textConfirm.setOnClickListener(v -> dismiss());
-        binding.textCancel.setOnClickListener(v -> dismiss());
+        setOutsideTouchable(true);
+        binding.textConfirm.setOnClickListener(v -> {adapter.notifyDataSetChanged();dismiss();});
+        binding.textCancel.setOnClickListener(v -> {adapter.notifyDataSetChanged();dismiss();});
     }
 
 
diff --git a/app/src/main/java/com/duqing/missions/widgets/QuadrateLinearLayout.java b/app/src/main/java/com/duqing/missions/widgets/QuadrateLinearLayout.java
new file mode 100644
index 0000000..97cf63d
--- /dev/null
+++ b/app/src/main/java/com/duqing/missions/widgets/QuadrateLinearLayout.java
@@ -0,0 +1,40 @@
+package com.duqing.missions.widgets;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.widget.LinearLayout;
+
+/**
+ * My father is Object, ites purpose of   正方形控件
+ *
+ * @purpose Created by Runt (qingingrunt2010@qq.com) on 2019-3-24.
+ */
+
+public class QuadrateLinearLayout extends LinearLayout {
+
+    public QuadrateLinearLayout(Context context, AttributeSet attrs,
+                                int defStyle) {
+        super(context, attrs, defStyle);
+    }
+
+    public QuadrateLinearLayout(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public QuadrateLinearLayout(Context context) {
+        super(context);
+    }
+
+    @Override
+    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        setMeasuredDimension(getDefaultSize(0, widthMeasureSpec),
+                getDefaultSize(0, heightMeasureSpec));
+
+        int childWidthSize = getMeasuredWidth();
+        // 高度和宽度一样
+        heightMeasureSpec = widthMeasureSpec = MeasureSpec.makeMeasureSpec(
+                childWidthSize, MeasureSpec.EXACTLY);
+        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+    }
+
+}
diff --git a/app/src/main/res/color/radio_text.xml b/app/src/main/res/color/radio_text.xml
index e2ff57b..2eb57b1 100644
--- a/app/src/main/res/color/radio_text.xml
+++ b/app/src/main/res/color/radio_text.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <selector   xmlns:android="http://schemas.android.com/apk/res/android"  >
-    <item android:state_checked="true" android:color="@color/sky" />
+    <item android:state_checked="true" android:color="@color/deep_sky" />
     <item  android:color="@color/black"  />
 </selector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable-v21/btn_white.xml b/app/src/main/res/drawable-v21/btn_white.xml
new file mode 100644
index 0000000..21bba20
--- /dev/null
+++ b/app/src/main/res/drawable-v21/btn_white.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+    android:color="@color/white_2">
+    <item>
+        <selector xmlns:android="http://schemas.android.com/apk/res/android">
+            <item android:state_enabled="false">
+                <shape>
+                    <solid android:color="@color/light_gray" />
+                </shape>
+            </item>
+            <item android:state_pressed="true">
+                <shape>
+                    <solid android:color="@color/gray" />
+                </shape>
+            </item>
+            <item>
+                <shape>
+                    <solid android:color="@color/white" />
+                </shape>
+            </item>
+        </selector>
+    </item>
+</ripple>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_trans_red_circle.xml b/app/src/main/res/drawable/bg_trans_red_circle.xml
new file mode 100644
index 0000000..480f692
--- /dev/null
+++ b/app/src/main/res/drawable/bg_trans_red_circle.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <shape android:shape="rectangle">
+            <solid android:color="@color/trans_red" />
+            <corners android:radius="@dimen/circle"/>
+        </shape>
+    </item>
+</selector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_baseline_more_vert_24.xml b/app/src/main/res/drawable/ic_baseline_more_vert_24.xml
new file mode 100644
index 0000000..34b93ec
--- /dev/null
+++ b/app/src/main/res/drawable/ic_baseline_more_vert_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="M12,8c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM12,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM12,16c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2z"/>
+</vector>
diff --git a/app/src/main/res/layout/item/layout/dynamic_item_square.xml b/app/src/main/res/layout/item/layout/dynamic_item_square.xml
index 962ebf1..45d4070 100644
--- a/app/src/main/res/layout/item/layout/dynamic_item_square.xml
+++ b/app/src/main/res/layout/item/layout/dynamic_item_square.xml
@@ -1,7 +1,102 @@
 <?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:background="@drawable/bg_white_corner"
+    android:layout_margin="@dimen/activity_horizontal_margin"
+    android:padding="@dimen/activity_horizontal_margin"
+    android:elevation="@dimen/small_radios"
     android:layout_width="match_parent"
-    android:layout_height="match_parent" >
+    android:layout_height="wrap_content">
 
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
+
+    <ImageView
+        android:id="@+id/image_avatar"
+        android:layout_width="50dp"
+        android:layout_height="50dp"
+        android:layout_gravity="center_vertical"
+        android:layout_marginRight="@dimen/frame_margin_lr"
+        tools:srcCompat="@tools:sample/avatars" />
+
+    <TextView
+        android:id="@+id/text_name"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="名称"
+        android:layout_toRightOf="@id/image_avatar"
+        android:textSize="16sp"
+        android:textStyle="bold"
+        android:layout_marginRight="@dimen/frame_margin_lr"
+        android:textColor="@color/black" />
+
+    <TextView
+        android:id="@+id/text_sex"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:background="@drawable/bg_trans_red_circle"
+        android:textColor="@color/red"
+        android:paddingLeft="@dimen/frame_margin_lr"
+        android:paddingRight="@dimen/frame_margin_lr"
+        android:paddingTop="2dp"
+        android:paddingBottom="3dp"
+        android:text="性别"
+        android:textSize="10sp"
+        android:layout_toRightOf="@id/text_name"/>
+    <TextView
+        android:id="@+id/text_time"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="2020-02-02"
+        android:layout_alignBottom="@id/image_avatar"
+        android:layout_alignStart="@id/text_name"
+        android:textColor="@color/deep_gray" />
+
+    <ImageView
+        android:id="@+id/image_more"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentRight="true"
+        android:src="@drawable/ic_baseline_more_vert_24" />
+
+
+    <androidx.recyclerview.widget.RecyclerView
+        android:id="@+id/recycler"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:overScrollMode="never"
+        android:layout_below="@id/image_avatar"
+        android:layout_marginTop="@dimen/frame_margin_lr"
+        app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
+        tools:listitem="@layout/item_square"
+        tools:itemCount="9"
+        app:spanCount="3" />
+
+    <TextView
+        android:id="@+id/text_desc"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:maxLines="3"
+        android:textColor="@color/black_4"
+        android:ellipsize="end"
+        android:layout_below="@id/recycler"
+        android:layout_marginTop="@dimen/frame_margin_lr"
+        android:text="描述" />
+
+
+
+    <ImageView
+        android:id="@+id/check_like"
+        android:src="@android:drawable/btn_star_big_on"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/text_desc" />
+
+    <ImageView
+        android:id="@+id/comment"
+        android:src="@android:drawable/btn_star_big_on"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/text_desc"
+        android:layout_alignParentRight="true" />
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_square.xml b/app/src/main/res/layout/item_square.xml
index 748af5f..3ae11cc 100644
--- a/app/src/main/res/layout/item_square.xml
+++ b/app/src/main/res/layout/item_square.xml
@@ -1,13 +1,15 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<com.duqing.missions.widgets.QuadrateLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:background="@drawable/bg_white_corner"
-    android:layout_marginTop="@dimen/activity_horizontal_margin"
-    android:layout_marginLeft="@dimen/activity_horizontal_margin"
-    android:layout_marginRight="@dimen/activity_horizontal_margin"
-    android:elevation="@dimen/small_radios">
+    xmlns:tools="http://schemas.android.com/tools">
+
+    <ImageView
+        android:id="@+id/image"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:scaleType="centerCrop"
+        tools:srcCompat="@tools:sample/avatars" />
 
 
-
-</LinearLayout>
\ No newline at end of file
+</com.duqing.missions.widgets.QuadrateLinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index d2b0fc8..b15bd48 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -6,8 +6,10 @@
     <color name="white">#FFFFFFFF</color>
     <color name="white_2">#F3F3F3</color>
     <color name="red">#FF1414</color>
+    <color name="trans_red">#4DFF1414</color>
     <color name="light_gray">#E3E3E3</color>
     <color name="gray">#CDCDCD</color>
+    <color name="deep_gray">#808080</color>
     <color name="trans_gray">#4DFFFFFF</color>
     <color name="enable">#ECECEC</color>
     <color name="enable_sky">#889DB6</color>

--
Gitblit v1.9.1