帖子内 评论 点赞 UI实现

This commit is contained in:
BA7LZD 2020-05-26 14:01:32 +08:00
parent 579c02be95
commit 4ac14b54d9
7 changed files with 138 additions and 21 deletions

View File

@ -35,8 +35,8 @@ dependencies {
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.annotation:annotation:1.1.0'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
implementation 'androidx.navigation:navigation-fragment:2.0.0'
implementation 'androidx.navigation:navigation-ui:2.0.0'
implementation 'androidx.navigation:navigation-fragment:2.2.2'
implementation 'androidx.navigation:navigation-ui:2.2.2'
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'com.google.android.material:material:1.1.0'
//aar包
@ -58,6 +58,8 @@ dependencies {
implementation 'com.lzy.widget:ninegridview:0.2.0'
//sdk
implementation 'com.tencent.qcloud:cosxml:5.4.31'
//
implementation 'com.sackcentury:shinebutton:1.0.0'
//
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'

View File

@ -34,7 +34,9 @@ public class GrowModel extends ViewModel {
"根据NineGridView的属性来控制不同的显示模式\n" +
"向QQ空间那样大于9张图片的时候以+号显示\n" +
"图片加载非常的灵活。\n" +
"大图加载的时候有预览动画,大图的尺寸根据原图的尺度", null, new ArrayList<String>(picUrlList.subList(0, i % 10)), 15 + i, true,0));
"大图加载的时候有预览动画,大图的尺寸根据原图的尺度", null,
new ArrayList<String>(picUrlList.subList(0, i % 10)), 1 + i, i % 2 == 0, i
));
}
postListLD.setValue(postList);

View File

@ -1,5 +1,6 @@
package com.yuxihan.sdu.ui.grow.adapter;
import android.annotation.SuppressLint;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.ViewGroup;
@ -12,7 +13,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.lzy.ninegrid.ImageInfo;
import com.lzy.ninegrid.NineGridView;
import com.lzy.ninegrid.NineGridViewAdapter;
import com.sackcentury.shinebuttonlib.ShineButton;
import com.yuxihan.sdu.R;
import com.yuxihan.sdu.comm.util.CommViewHolder;
import com.yuxihan.sdu.comm.util.TimeConvert;
@ -20,8 +21,6 @@ import com.yuxihan.sdu.data.model.PostDetailBean;
import java.util.ArrayList;
import de.hdodenhof.circleimageview.CircleImageView;
public class GrowListAdapter extends RecyclerView.Adapter {
private ArrayList<PostDetailBean> mDataSet;
@ -49,21 +48,34 @@ public class GrowListAdapter extends RecyclerView.Adapter {
return new MyViewHolder(v);
}
@SuppressLint("SetTextI18n")
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
PostDetailBean curPost = mDataSet.get(position);
//findView
//findView & setData
ImageView posterHead = CommViewHolder.get(holder.itemView, R.id.poster_head);
TextView posterName = CommViewHolder.get(holder.itemView, R.id.tv_poster_name);
TextView postTime = CommViewHolder.get(holder.itemView, R.id.tv_post_time);
TextView postContentText = CommViewHolder.get(holder.itemView, R.id.tv_post_content_text);
NineGridView ngvPicContainer = CommViewHolder.get(holder.itemView, R.id.ngv_pic_container);
//setData
posterName.setText(curPost.getUserName());
Glide.with(mContext).load(curPost.getUserHead()).into(posterHead);
TextView posterName = CommViewHolder.get(holder.itemView, R.id.tv_poster_name);
posterName.setText(curPost.getUserName());
TextView postTime = CommViewHolder.get(holder.itemView, R.id.tv_post_time);
postTime.setText(TimeConvert.getTimeElapse(curPost.getPostTime()));
TextView postContentText = CommViewHolder.get(holder.itemView, R.id.tv_post_content_text);
postContentText.setText(curPost.getPostTextContent());
TextView tvCommentCount = CommViewHolder.get(holder.itemView, R.id.tv_comment_count);
tvCommentCount.setText(curPost.getCommentCount() + "");
ShineButton shineButton = CommViewHolder.get(holder.itemView, R.id.bt_like);
shineButton.setChecked(curPost.isLikedByCurAccount());
TextView tvLikeCount = CommViewHolder.get(holder.itemView, R.id.tv_like_count);
tvLikeCount.setText(curPost.getPostLikeCount() + "");
NineGridView ngvPicContainer = CommViewHolder.get(holder.itemView, R.id.ngv_pic_container);
ArrayList<ImageInfo> imageInfoList = new ArrayList<>();
ArrayList<String> postPicUrls = curPost.getPostPicUrls();
if (postPicUrls != null) {
@ -83,7 +95,7 @@ public class GrowListAdapter extends RecyclerView.Adapter {
}
public void updateData(ArrayList<PostDetailBean> myDataSet) {
mDataSet=myDataSet;
mDataSet = myDataSet;
notifyDataSetChanged();
}
}

View File

@ -0,0 +1,18 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="200dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M850.88,96.42l-676.3,0c-60.68,0 -110.05,49.37 -110.05,110.05l0,446.2c0,60.68 49.37,110.05 110.05,110.05l90.31,0L396.94,931.13c3.79,4.84 9.6,7.66 15.75,7.66s11.95,-2.83 15.75,-7.66l132.05,-168.41 290.4,0c60.68,0 110.05,-49.37 110.05,-110.05L960.93,206.47C960.93,145.78 911.56,96.42 850.88,96.42zM920.91,652.67c0,38.61 -31.42,70.03 -70.03,70.03L550.74,722.7c-6.15,0 -11.95,2.83 -15.75,7.66L412.68,886.36l-122.32,-156c-3.79,-4.84 -9.6,-7.66 -15.75,-7.66l-100.05,0c-38.61,0 -70.03,-31.42 -70.03,-70.03L104.55,206.47c0,-38.61 31.42,-70.03 70.03,-70.03l676.3,0c38.61,0 70.03,31.42 70.03,70.03L920.91,652.67z"
android:fillColor="#888888"/>
<path
android:pathData="M272.62,344.53c-44.13,0 -80.04,35.9 -80.04,80.04 0,44.13 35.9,80.04 80.04,80.04s80.04,-35.9 80.04,-80.04C352.66,380.43 316.75,344.53 272.62,344.53zM272.62,464.58c-22.07,0 -40.02,-17.95 -40.02,-40.02 0,-22.07 17.95,-40.02 40.02,-40.02 22.07,0 40.02,17.95 40.02,40.02C312.64,446.63 294.69,464.58 272.62,464.58z"
android:fillColor="#888888"/>
<path
android:pathData="M512.73,344.53c-44.13,0 -80.04,35.9 -80.04,80.04 0,44.13 35.9,80.04 80.04,80.04 44.13,0 80.04,-35.9 80.04,-80.04C592.76,380.43 556.86,344.53 512.73,344.53zM512.73,464.58c-22.07,0 -40.02,-17.95 -40.02,-40.02 0,-22.07 17.95,-40.02 40.02,-40.02 22.07,0 40.02,17.95 40.02,40.02C552.75,446.63 534.79,464.58 512.73,464.58z"
android:fillColor="#888888"/>
<path
android:pathData="M752.84,344.53c-44.13,0 -80.04,35.9 -80.04,80.04 0,44.13 35.9,80.04 80.04,80.04s80.04,-35.9 80.04,-80.04C832.87,380.43 796.97,344.53 752.84,344.53zM752.84,464.58c-22.07,0 -40.02,-17.95 -40.02,-40.02 0,-22.07 17.95,-40.02 40.02,-40.02s40.02,17.95 40.02,40.02C792.85,446.63 774.9,464.58 752.84,464.58z"
android:fillColor="#888888"/>
</vector>

View File

@ -1,6 +1,7 @@
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
@ -15,12 +16,11 @@
android:paddingStart="10dp"
android:paddingEnd="10dp"
android:paddingBottom="10dp"
android:text="若您只使用上传、下载和复制功能,则可以使用简化版的 SDK
首先在根目录下的 build.gradle 中添加 maven 仓库:"
android:textColor="@color/black"
android:textSize="15sp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@+id/ll_poster_info" />
app:layout_constraintTop_toBottomOf="@+id/ll_poster_info"
tools:text="若您只使用上传、下载和复制功能,则可以使用简化版的 SDK" />
<com.lzy.ninegrid.NineGridView
android:id="@+id/ngv_pic_container"
@ -31,9 +31,23 @@
app:layout_constraintTop_toBottomOf="@+id/tv_post_content_text" />
<View
android:id="@+id/inner_divider"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_height="1dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="@color/divider_gray"
android:padding="10dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/ngv_pic_container" />
<include
android:id="@+id/item_post_comment"
layout="@layout/item_post_comment" />
<View
android:layout_width="match_parent"
android:layout_height="10dp"
android:background="@color/divider_gray"
app:layout_constraintTop_toBottomOf="@+id/item_post_comment"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,68 @@
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/ll_comment"
android:layout_width="match_parent"
android:layout_height="35dp"
android:gravity="center_vertical"
android:weightSum="1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/ngv_pic_container">
<RelativeLayout
android:id="@+id/rl_comment"
android:layout_width="wrap_content"
android:layout_height="35dp"
android:layout_weight="0.5"
android:gravity="center">
<ImageView
android:id="@+id/iv_comment"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_centerInParent="true"
android:layout_marginStart="20dp"
android:src="@drawable/ic_comment" />
<TextView
android:layout_width="wrap_content"
android:id="@+id/tv_comment_count"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="10dp"
android:layout_toEndOf="@+id/iv_comment"
tools:text="1234" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/rl_like"
android:layout_width="wrap_content"
android:layout_height="35dp"
android:layout_weight="0.5"
android:gravity="center">
<com.sackcentury.shinebuttonlib.ShineButton
android:id="@+id/bt_like"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_centerInParent="true"
android:layout_marginStart="20dp"
android:elevation="10dp"
app:btn_color="@color/text_hint"
app:btn_fill_color="#f26d7d"
app:siShape="@raw/heart" />
<TextView
android:layout_width="wrap_content"
android:id="@+id/tv_like_count"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="10dp"
android:layout_toEndOf="@+id/bt_like"
tools:text="1234" />
</RelativeLayout>
</LinearLayout>

View File

@ -2,6 +2,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="63dp"
xmlns:tools="http://schemas.android.com/tools"
android:padding="10dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent">
@ -18,7 +19,7 @@
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_toEndOf="@+id/poster_head"
android:text="四脚吞金兽"
tools:text="四脚吞金兽"
android:textColor="@color/black"
android:textSize="15sp"
/>
@ -31,5 +32,5 @@
android:layout_alignBottom="@+id/poster_head"
android:textColor="@color/text_hint"
android:textSize="12sp"
android:text="二小时前" />
tools:text="二小时前" />
</RelativeLayout>