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