2 İşlemeler 71375e4ce2 ... 53e8a66af8

Yazar SHA1 Mesaj Tarih
  huping 53e8a66af8 Merge branch 'master' of http://git.ddse.io/cricditadmin/cricdit_android 1 yıl önce
  huping 56dcdc6ec5 积分页面(部分完成) 1 yıl önce
21 değiştirilmiş dosya ile 747 ekleme ve 1 silme
  1. 3 0
      TMessagesProj/build.gradle
  2. 22 0
      TMessagesProj/src/main/java/org/telegram/cricdit/adapter/FilterTypeAdapter.java
  3. 24 0
      TMessagesProj/src/main/java/org/telegram/cricdit/adapter/PointsRecordAdapter.java
  4. 13 0
      TMessagesProj/src/main/java/org/telegram/cricdit/bean/PointsRecordBean.java
  5. 35 0
      TMessagesProj/src/main/java/org/telegram/cricdit/mvp/PointsRecordPresenter.java
  6. 14 0
      TMessagesProj/src/main/java/org/telegram/cricdit/mvp/PointsRecordView.java
  7. 4 0
      TMessagesProj/src/main/java/org/telegram/cricdit/net/ApiService.java
  8. 8 0
      TMessagesProj/src/main/java/org/telegram/cricdit/ui/MeActivity.java
  9. 135 0
      TMessagesProj/src/main/java/org/telegram/cricdit/ui/PointsRecordActivity.java
  10. 92 0
      TMessagesProj/src/main/java/org/telegram/cricdit/view/CustomBubbleAttachPopup.java
  11. 141 0
      TMessagesProj/src/main/java/org/telegram/cricdit/view/CustomDateDialog.java
  12. 5 0
      TMessagesProj/src/main/res/drawable/dialog_bg.xml
  13. 6 0
      TMessagesProj/src/main/res/drawable/shape_divider.xml
  14. 8 0
      TMessagesProj/src/main/res/drawable/shape_record_filter_bg.xml
  15. 37 1
      TMessagesProj/src/main/res/layout/activity_me3.xml
  16. 92 0
      TMessagesProj/src/main/res/layout/activity_points_record.xml
  17. 15 0
      TMessagesProj/src/main/res/layout/custom_bubble_attach_popup.xml
  18. 47 0
      TMessagesProj/src/main/res/layout/date_dialog.xml
  19. 22 0
      TMessagesProj/src/main/res/layout/item_filter_type.xml
  20. 6 0
      TMessagesProj/src/main/res/layout/item_points_record.xml
  21. 18 0
      TMessagesProj/src/main/res/values/styles.xml

+ 3 - 0
TMessagesProj/build.gradle

@@ -116,6 +116,9 @@ dependencies {
 
     //SuperTextView
     implementation 'com.github.chenBingX:SuperTextView:v3.2.5.99'
+
+//    implementation 'com.github.gzu-liyujiang.AndroidPicker:Common:3.0.0'
+//    implementation 'com.github.gzu-liyujiang.AndroidPicker:CalendarPicker:3.0.0'
 }
 
 android {

+ 22 - 0
TMessagesProj/src/main/java/org/telegram/cricdit/adapter/FilterTypeAdapter.java

@@ -0,0 +1,22 @@
+package org.telegram.cricdit.adapter;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.BaseViewHolder;
+
+import org.telegram.messenger.R;
+
+import java.util.List;
+
+public class FilterTypeAdapter extends BaseQuickAdapter<String, BaseViewHolder> {
+    public FilterTypeAdapter(int layoutResId, @Nullable List<String> data) {
+        super(layoutResId, data);
+    }
+
+    @Override
+    protected void convert(@NonNull BaseViewHolder helper, String item) {
+        helper.setText(R.id.filter_type_title,item);
+    }
+}

+ 24 - 0
TMessagesProj/src/main/java/org/telegram/cricdit/adapter/PointsRecordAdapter.java

@@ -0,0 +1,24 @@
+package org.telegram.cricdit.adapter;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.BaseViewHolder;
+
+import org.telegram.cricdit.bean.PointsRecordBean;
+
+import java.util.List;
+
+public class PointsRecordAdapter extends BaseQuickAdapter<PointsRecordBean,BaseViewHolder> {
+
+    public PointsRecordAdapter(int layoutResId, @Nullable List<PointsRecordBean> data) {
+        super(layoutResId, data);
+    }
+
+    @Override
+    protected void convert(@NonNull BaseViewHolder helper, PointsRecordBean item) {
+
+    }
+}

+ 13 - 0
TMessagesProj/src/main/java/org/telegram/cricdit/bean/PointsRecordBean.java

@@ -0,0 +1,13 @@
+package org.telegram.cricdit.bean;
+
+import java.util.List;
+
+public class PointsRecordBean {
+    public Data data;
+    public Integer errCode;
+    public String errMsg;
+
+    public static class Data {
+
+    }
+}

+ 35 - 0
TMessagesProj/src/main/java/org/telegram/cricdit/mvp/PointsRecordPresenter.java

@@ -0,0 +1,35 @@
+package org.telegram.cricdit.mvp;
+
+import org.telegram.cricdit.base.BaseObserver;
+import org.telegram.cricdit.base.BasePresenter;
+import org.telegram.cricdit.bean.PersonPostBean;
+import org.telegram.cricdit.bean.PointsRecordBean;
+import org.telegram.cricdit.net.ApiService;
+import org.telegram.cricdit.net.Parameter;
+import org.telegram.cricdit.utils.ParamsUtil;
+import org.telegram.messenger.UserConfig;
+
+public class PointsRecordPresenter extends BasePresenter<PointsRecordView> {
+
+    public void getNormalRecord(int start, int limit, String type, String time) {
+        Parameter parameter = new Parameter();
+        parameter.add("operationID", ParamsUtil.buildOperationID());
+        parameter.add("limit", limit);
+
+
+        parameter.add("start", start);
+        addSubscribe(create(ApiService.class).getPointsRecord(parameter.buildJsonBody()), new BaseObserver<PointsRecordBean.Data>(getView()) {
+            @Override
+            protected void onSuccess(PointsRecordBean.Data data) {
+                getView().getRecordListSuccess(data);
+            }
+
+            @Override
+            public void onError(Throwable e) {
+                super.onError(e);
+                getView().loadDataFailed();
+            }
+        });
+    }
+
+}

+ 14 - 0
TMessagesProj/src/main/java/org/telegram/cricdit/mvp/PointsRecordView.java

@@ -0,0 +1,14 @@
+package org.telegram.cricdit.mvp;
+
+import org.telegram.cricdit.base.IView;
+import org.telegram.cricdit.bean.PointsRecordBean;
+
+import java.util.List;
+
+public interface PointsRecordView extends IView {
+
+    void getRecordListSuccess(PointsRecordBean.Data data);
+
+    void loadDataFailed();
+
+}

+ 4 - 0
TMessagesProj/src/main/java/org/telegram/cricdit/net/ApiService.java

@@ -13,6 +13,7 @@ import org.telegram.cricdit.bean.NewsTagBean;
 import org.telegram.cricdit.bean.PersonFollowerBean;
 import org.telegram.cricdit.bean.PersonFollowingBean;
 import org.telegram.cricdit.bean.PersonPostBean;
+import org.telegram.cricdit.bean.PointsRecordBean;
 import org.telegram.cricdit.bean.ProfileSelfBean;
 import org.telegram.cricdit.bean.RankListBean;
 import org.telegram.cricdit.bean.RankDetailBean;
@@ -172,6 +173,9 @@ public interface ApiService {
     @POST(Constants.APP_AUTH_URL + "/demo/video_limit")
     Observable<BaseResponse<VideoLimitBean>> getVideoLimit(@Body RequestBody requestBody);
 
+    @POST(Constants.APP_AUTH_URL + "/demo/video_limit")
+    Observable<BaseResponse<PointsRecordBean.Data>> getPointsRecord(@Body RequestBody requestBody);
+
     @POST("https://pf.cricdit.com/index.php/api/Rank/GetCategories")
     Call<ResponseBody> publicRanking(@Body RequestBody requestBody);
 

+ 8 - 0
TMessagesProj/src/main/java/org/telegram/cricdit/ui/MeActivity.java

@@ -385,6 +385,14 @@ public class MeActivity extends BaseTabActivity<MePresenter> implements MeView {
 
         });
 
+        view.findViewById(R.id.me_profile_score_container).setOnClickListener(v -> {
+            if (UserConfig.getInstance(UserConfig.selectedAccount).isClientActivated()) {
+                presentFragment(new PointsRecordActivity());
+            } else {
+                presentFragment(new LoginActivity());
+            }
+        });
+
     }
 
     private void jumpToProfile() {

+ 135 - 0
TMessagesProj/src/main/java/org/telegram/cricdit/ui/PointsRecordActivity.java

@@ -0,0 +1,135 @@
+package org.telegram.cricdit.ui;
+
+import android.app.AlertDialog;
+import android.app.DatePickerDialog;
+import android.content.res.Resources;
+import android.graphics.Color;
+import android.os.Build;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.DatePicker;
+import android.widget.ImageView;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.lxj.xpopup.XPopup;
+import com.lxj.xpopup.util.XPopupUtils;
+import com.scwang.smart.refresh.layout.SmartRefreshLayout;
+
+import org.jetbrains.annotations.NotNull;
+import org.telegram.cricdit.adapter.PointsRecordAdapter;
+import org.telegram.cricdit.base.BaseActivity;
+import org.telegram.cricdit.base.IPresenter;
+import org.telegram.cricdit.bean.PointsRecordBean;
+import org.telegram.cricdit.mvp.PointsRecordPresenter;
+import org.telegram.cricdit.view.CustomBubbleAttachPopup;
+import org.telegram.cricdit.view.CustomDateDialog;
+import org.telegram.messenger.R;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.List;
+
+
+public class PointsRecordActivity extends BaseActivity<PointsRecordPresenter> {
+
+    private RecyclerView mRecyclerView;
+    private SmartRefreshLayout mRefreshLayout;
+    private List<PointsRecordBean> mPointsRecordBeanList;
+    private PointsRecordAdapter mAdapter;
+    private TextView mFilterType;
+    private TextView mFilterTime;
+    private ImageView mFilterTypeImg;
+    private ImageView mFilterTimeImg;
+    private int year;
+    private int month;
+    private int day;
+
+    @Override
+    protected int getLayoutResId() {
+        return R.layout.activity_points_record;
+    }
+
+    @Override
+    public String setActionBarTitle() {
+        return "Points record";
+    }
+
+    @Override
+    protected PointsRecordPresenter createPresenter() {
+        return new PointsRecordPresenter();
+    }
+
+    @Override
+    protected void initView(View view) {
+
+        mPointsRecordBeanList = new ArrayList<>();
+
+        mFilterType = view.findViewById(R.id.points_record_filter_type);
+        mFilterTime = view.findViewById(R.id.points_record_filter_time);
+        mFilterTypeImg = view.findViewById(R.id.points_record_filter_type_img);
+        mFilterTimeImg = view.findViewById(R.id.points_record_filter_time_img);
+
+        mRefreshLayout = view.findViewById(R.id.points_record_refresh_layout);
+
+        mRecyclerView = view.findViewById(R.id.points_record_recycler_view);
+
+        mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
+
+        mAdapter = new PointsRecordAdapter(R.layout.item_points_record, mPointsRecordBeanList);
+
+        View inflate = LayoutInflater.from(getContext()).inflate(R.layout.layout_empty_view, null, false);
+        mAdapter.setEmptyView(inflate);
+
+        mRecyclerView.setAdapter(mAdapter);
+
+        mFilterType.setOnClickListener(v -> {
+            getType();
+        });
+        mFilterTypeImg.setOnClickListener(v -> {
+            getType();
+        });
+
+        mFilterTime.setOnClickListener(v -> {
+            getDate();
+        });
+        mFilterTimeImg.setOnClickListener(v -> {
+            getDate();
+        });
+
+
+    }
+
+    public void getDate() {
+
+        CustomDateDialog dialog = new CustomDateDialog(getContext());
+        Calendar calendar = Calendar.getInstance();
+        dialog.setDate(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), (year, month) -> {
+            mFilterTime.setText(year +"-"+ month + "");
+        });
+        dialog.show();
+    }
+
+    public void getType() {
+        new XPopup.Builder(getContext())
+//                        .isCenterHorizontal(true)
+                .isDestroyOnDismiss(true) //对于只使用一次的弹窗,推荐设置这个
+                .atView(mFilterType)
+                .hasShadowBg(false) // 去掉半透明背景
+//                        .offsetX(XPopupUtils.dp2px(getContext(), 20))
+                .offsetY(XPopupUtils.dp2px(getContext(), 6))
+                .asCustom(new CustomBubbleAttachPopup(getContext(), new CustomBubbleAttachPopup.OnTypeSelectListener() {
+                    @Override
+                    public void select(String type) {
+                        mFilterType.setText(type);
+                    }
+                }))
+                .show();
+    }
+
+}

+ 92 - 0
TMessagesProj/src/main/java/org/telegram/cricdit/view/CustomBubbleAttachPopup.java

@@ -0,0 +1,92 @@
+package org.telegram.cricdit.view;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.DividerItemDecoration;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.bumptech.glide.Glide;
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.lxj.xpopup.core.BubbleAttachPopupView;
+import com.lxj.xpopup.util.XPopupUtils;
+
+import org.telegram.cricdit.adapter.FilterTypeAdapter;
+import org.telegram.messenger.R;
+import org.telegram.onecric.widget.ItemDecoration;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class CustomBubbleAttachPopup extends BubbleAttachPopupView {
+
+    private RecyclerView mRecyclerView;
+
+    public CustomBubbleAttachPopup(@NonNull Context context,OnTypeSelectListener onTypeSelectListener) {
+        super(context);
+        mOnTypeSelectListener = onTypeSelectListener;
+    }
+
+    @Override
+    protected int getImplLayoutId() {
+        return R.layout.custom_bubble_attach_popup;
+    }
+
+    @Override
+    protected void onCreate() {
+        super.onCreate();
+        setBubbleBgColor(Color.WHITE);
+        setBubbleShadowSize(XPopupUtils.dp2px(getContext(), 10));
+        setBubbleShadowColor(getContext().getResources().getColor(R.color.line_color2));
+        setArrowWidth(XPopupUtils.dp2px(getContext(), 5));
+        setArrowHeight(XPopupUtils.dp2px(getContext(), 6));
+//                                .setBubbleRadius(100)
+        setArrowRadius(XPopupUtils.dp2px(getContext(), 3));
+
+        mRecyclerView = findViewById(R.id.filter_popup_recycler_view);
+
+        mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
+
+        List<String> stringList = new ArrayList<>();
+
+        stringList.add("All");
+        stringList.add("Daily login");
+        stringList.add("Like");
+        stringList.add("Post");
+        stringList.add("Cancel like");
+        stringList.add("Post a comment");
+
+        DividerItemDecoration decor = new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL);
+        decor.setDrawable(getContext().getResources().getDrawable(R.drawable.shape_divider));
+        mRecyclerView.addItemDecoration(decor);
+
+        FilterTypeAdapter adapter = new FilterTypeAdapter(R.layout.item_filter_type, stringList);
+        mRecyclerView.setAdapter(adapter);
+
+        adapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
+            @Override
+            public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
+                if (mOnTypeSelectListener != null) {
+                    dismiss();
+                    mOnTypeSelectListener.select(stringList.get(position));
+                }
+            }
+        });
+    }
+
+    private OnTypeSelectListener mOnTypeSelectListener;
+
+    public void setOnTypeSelectListener(OnTypeSelectListener onTypeSelectListener) {
+        mOnTypeSelectListener = onTypeSelectListener;
+    }
+
+    public interface OnTypeSelectListener {
+        void select(String type);
+    }
+
+}

+ 141 - 0
TMessagesProj/src/main/java/org/telegram/cricdit/view/CustomDateDialog.java

@@ -0,0 +1,141 @@
+package org.telegram.cricdit.view;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.content.res.Resources;
+import android.os.Build;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.Window;
+import android.widget.DatePicker;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import org.telegram.messenger.R;
+
+import java.lang.reflect.Field;
+import java.util.Calendar;
+
+public class CustomDateDialog implements View.OnClickListener, DatePicker.OnDateChangedListener {
+    private Dialog dialog;
+    private TextView titleTv;//标题
+    private DatePicker datePicker;//日期选择控件
+    private TextView confirmTv;//底部的“确认”
+    private View dialogView;
+    private OnDateSetListener onDateSetListener;
+
+    /**
+     * 构造器
+     * @param context 上下文
+     */
+    public CustomDateDialog(Context context){
+        dialogView = LayoutInflater.from(context).inflate(R.layout.date_dialog, null);
+        dialog=new Dialog(context,R.style.CustomDateDialog);
+        titleTv=dialogView.findViewById(R.id.titleTv);
+        datePicker=dialogView.findViewById(R.id.datePicker);
+//        ViewGroup viewGroup1= (ViewGroup) datePicker.getChildAt(0);
+//        ViewGroup viewGroup2= (ViewGroup) viewGroup1.getChildAt(0);//获取年月日的下拉列表项
+//        if(viewGroup2.getChildCount()==3){//有的机型没有竖线,只有年、月、日
+//            viewGroup2.getChildAt(2).setVisibility(View.GONE);
+//        }else if(viewGroup2.getChildCount()==5){//有的机型有有竖线
+//            viewGroup2.getChildAt(3).setVisibility(View.GONE);
+//            viewGroup2.getChildAt(4).setVisibility(View.GONE);
+//        }
+        confirmTv=dialogView.findViewById(R.id.confirmTv);
+        confirmTv.setOnClickListener(this);
+    }
+
+    /**
+     * 显示对话框
+     */
+    public void show(){
+        Window window = dialog.getWindow();
+        window.setContentView(dialogView);//设置对话框窗口的内容视图(这里有个坑,参数不要传R.layout.date_dialog,否则会出现各种问题,比如按钮响应不了点击事件)
+        window.setLayout(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);//设置对话框窗口的布局参数
+        dialog.show();
+        dialog.setCancelable(false);
+    }
+
+    /**
+     * 关闭对话框
+     */
+    public void dismiss(){
+        if(dialog!=null&&dialog.isShowing()){
+            dialog.dismiss();
+        }
+    }
+
+    /**
+     * 设置标题
+     * @param title 标题
+     */
+    public void setTitle(String title){
+        titleTv.setText(title);
+    }
+
+    public void setDate(int year,int month,OnDateSetListener onDateSetListener){
+        Calendar calendar = Calendar.getInstance();
+        hideDay(datePicker);
+        datePicker.init(year,month,calendar.get(Calendar.DAY_OF_MONTH),this);
+        this.onDateSetListener=onDateSetListener;
+    }
+
+    @Override
+    public void onClick(View v) {
+        if(v.getId()== R.id.confirmTv){
+            dialog.dismiss();
+            if(onDateSetListener!=null){
+                datePicker.clearFocus();
+                int year = datePicker.getYear();
+                int month = datePicker.getMonth();
+                int day = datePicker.getDayOfMonth();
+                onDateSetListener.onDateSet(year,month+1);
+            }
+        }
+    }
+
+    @Override
+    public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
+        System.out.println("weqrweqrwer   " + year + "  :  " + monthOfYear);
+        datePicker.init(year,monthOfYear,dayOfMonth,this);
+    }
+
+    public interface OnDateSetListener{
+        void onDateSet(int year,int month);
+    }
+
+    private void hideDay(DatePicker mDatePicker) {
+
+        try {
+            /* 处理android5.0以上的特殊情况 */
+            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+                int daySpinnerId = Resources.getSystem().getIdentifier("day", "id", "android");
+                if (daySpinnerId != 0) {
+                    View daySpinner = mDatePicker.findViewById(daySpinnerId);
+                    if (daySpinner != null) {
+                        daySpinner.setVisibility(View.GONE);
+                    }
+                }
+            } else {
+                Field[] datePickerfFields = mDatePicker.getClass().getDeclaredFields();
+                for (Field datePickerField : datePickerfFields) {
+                    if ("mDaySpinner".equals(datePickerField.getName()) || ("mDayPicker").equals(datePickerField.getName())) {
+                        datePickerField.setAccessible(true);
+                        Object dayPicker = new Object();
+                        try {
+                            dayPicker = datePickerField.get(mDatePicker);
+                        } catch (IllegalAccessException e) {
+                            e.printStackTrace();
+                        } catch (IllegalArgumentException e) {
+                            e.printStackTrace();
+                        }
+                        ((View) dayPicker).setVisibility(View.GONE);
+                    }
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}

+ 5 - 0
TMessagesProj/src/main/res/drawable/dialog_bg.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/colorWhite"/>
+    <corners android:radius="16dp"/>
+</shape>

+ 6 - 0
TMessagesProj/src/main/res/drawable/shape_divider.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="@color/line_color" />
+    <size android:height="1dp"/>
+</shape>

+ 8 - 0
TMessagesProj/src/main/res/drawable/shape_record_filter_bg.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="@color/colorWhite" />
+    <corners
+        android:topLeftRadius="10dp"
+        android:topRightRadius="10dp" />
+</shape>

+ 37 - 1
TMessagesProj/src/main/res/layout/activity_me3.xml

@@ -263,7 +263,7 @@
                         android:layout_height="65dp"
                         android:layout_marginStart="4dp"
                         android:layout_marginTop="16dp"
-                        android:layout_marginEnd="16dp"
+                        android:layout_marginEnd="4dp"
                         android:layout_marginBottom="16dp"
                         android:layout_weight="1"
                         android:background="@drawable/shape_me_post_bg"
@@ -294,6 +294,42 @@
                     </LinearLayout>
 
 
+                    <LinearLayout
+                        android:id="@+id/me_profile_score_container"
+                        android:layout_width="0dp"
+                        android:layout_height="65dp"
+                        android:layout_marginStart="4dp"
+                        android:layout_marginTop="16dp"
+                        android:layout_marginEnd="16dp"
+                        android:layout_marginBottom="16dp"
+                        android:layout_weight="1"
+                        android:background="@drawable/shape_me_post_bg"
+                        android:gravity="center"
+                        android:orientation="vertical">
+
+                        <TextView
+                            android:id="@+id/me_profile_score_num"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:background="@drawable/shape_me_post_bg"
+                            android:gravity="center"
+                            android:text="0"
+                            android:textColor="#000"
+                            android:textSize="17sp"
+                            android:textStyle="bold" />
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginTop="3dp"
+                            android:gravity="center"
+                            android:text="Points"
+                            android:textColor="#ff999999"
+                            android:textSize="12sp"
+                            android:textStyle="bold" />
+
+                    </LinearLayout>
+
                 </LinearLayout>
 
 

+ 92 - 0
TMessagesProj/src/main/res/layout/activity_points_record.xml

@@ -0,0 +1,92 @@
+<?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"
+    android:layout_width="match_parent"
+    android:paddingStart="16dp"
+    android:paddingEnd="16dp"
+    android:paddingTop="16dp"
+    android:background="@color/colorNormalBg"
+    android:layout_height="match_parent">
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:background="@drawable/shape_record_filter_bg"
+        android:id="@+id/points_record_filter_container"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        app:layout_constraintTop_toTopOf="parent">
+
+        <ImageView
+            android:id="@+id/points_record_filter_type_img"
+            android:layout_width="25dp"
+            android:layout_height="25dp"
+            android:layout_margin="12dp"
+            android:src="@mipmap/icon_match_filter"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <TextView
+            android:id="@+id/points_record_filter_type"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="3dp"
+            android:text="All"
+            android:paddingTop="8dp"
+            android:paddingBottom="8dp"
+            android:lines="1"
+            android:paddingEnd="20dp"
+            android:textColor="@color/colorBlack"
+            android:textSize="14sp"
+            app:layout_constraintBottom_toBottomOf="@id/points_record_filter_type_img"
+            app:layout_constraintStart_toEndOf="@id/points_record_filter_type_img"
+            app:layout_constraintTop_toTopOf="@id/points_record_filter_type_img" />
+
+        <TextView
+            android:id="@+id/points_record_filter_time"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="2020-02"
+            android:layout_marginEnd="5dp"
+            android:textColor="@color/colorBlack"
+            android:textSize="14sp"
+            app:layout_constraintEnd_toStartOf="@id/points_record_filter_time_img"
+            app:layout_constraintBottom_toBottomOf="@id/points_record_filter_type"
+            app:layout_constraintTop_toTopOf="@id/points_record_filter_type" />
+
+        <ImageView
+            android:id="@+id/points_record_filter_time_img"
+            android:layout_width="12dp"
+            android:layout_height="12dp"
+            android:layout_margin="12dp"
+            android:src="@mipmap/icon_arrow_down_four"
+            app:layout_constraintBottom_toBottomOf="@id/points_record_filter_type_img"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintTop_toTopOf="@id/points_record_filter_type_img" />
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="1dp"
+            android:layout_marginTop="12dp"
+            android:background="@color/line_color"
+            app:layout_constraintTop_toBottomOf="@id/points_record_filter_type_img" />
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+    <com.scwang.smart.refresh.layout.SmartRefreshLayout
+        android:background="@color/colorWhite"
+        android:id="@+id/points_record_refresh_layout"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/points_record_filter_container">
+
+        <include layout="@layout/base_head_refresh" />
+
+        <androidx.recyclerview.widget.RecyclerView
+            android:id="@+id/points_record_recycler_view"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:overScrollMode="never" />
+
+        <include layout="@layout/base_head_loadmore" />
+    </com.scwang.smart.refresh.layout.SmartRefreshLayout>
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 15 - 0
TMessagesProj/src/main/res/layout/custom_bubble_attach_popup.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+
+<androidx.recyclerview.widget.RecyclerView
+    android:id="@+id/filter_popup_recycler_view"
+    app:layout_constraintStart_toStartOf="parent"
+    app:layout_constraintTop_toTopOf="parent"
+    android:overScrollMode="never"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"/>
+
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 47 - 0
TMessagesProj/src/main/res/layout/date_dialog.xml

@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:gravity="center">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="40dp"
+        android:layout_marginRight="40dp"
+        android:background="@drawable/dialog_bg"
+        android:orientation="vertical">
+
+        <TextView
+            android:id="@+id/titleTv"
+            android:layout_width="wrap_content"
+            android:layout_height="16dp"
+            android:layout_marginLeft="16dp"
+            android:gravity="center_vertical"
+            android:textSize="16sp" />
+
+        <DatePicker
+            android:id="@+id/datePicker"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="#fff"
+            android:calendarViewShown="false"
+            android:datePickerMode="spinner"
+            android:spinnersShown="true" />
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="1dp"
+            android:background="#ddd" />
+
+        <TextView
+            android:id="@+id/confirmTv"
+            android:layout_width="match_parent"
+            android:layout_height="50dp"
+            android:gravity="center"
+            android:text="Confirm"
+            android:textColor="@color/colorBlack"
+            android:textSize="16sp" />
+    </LinearLayout>
+
+</LinearLayout>

+ 22 - 0
TMessagesProj/src/main/res/layout/item_filter_type.xml

@@ -0,0 +1,22 @@
+<?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"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:paddingEnd="24dp"
+    android:paddingTop="12dp"
+    android:paddingBottom="12dp"
+    android:paddingStart="12dp">
+
+    <TextView
+        android:id="@+id/filter_type_title"
+        android:layout_width="wrap_content"
+        android:minWidth="110dp"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="12dp"
+        android:textColor="@color/colorBlack"
+        android:textSize="13sp"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 6 - 0
TMessagesProj/src/main/res/layout/item_points_record.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content">
+
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 18 - 0
TMessagesProj/src/main/res/values/styles.xml

@@ -24,6 +24,24 @@
         <item name="android:selectableItemBackgroundBorderless">@null</item>
     </style>
 
+<!--    <style name="CustomDateDialog" parent="@android:style/Theme.Dialog">-->
+<!--        <item name="android:windowFrame">@null</item>-->
+<!--        <item name="android:windowNoTitle">true</item>-->
+<!--        <item name="android:windowBackground">@color/transparent</item>-->
+<!--        <item name="android:windowIsTranslucent">true</item>-->
+<!--    </style>-->
+
+    <style name="CustomDateDialog" parent="@android:style/Theme.Dialog">
+        <item name="android:windowFrame">@null</item>
+        <item name="android:windowNoTitle">true</item>
+        <item name="android:windowIsFloating">true</item>
+        <item name="android:windowIsTranslucent">true</item>
+        <item name="android:windowBackground">@color/transparent</item>
+        <item name="android:backgroundDimAmount">0.5</item>
+        <!--显示区域以外是否使用黑色半透明背景-->
+<!--        <item name="android:backgroundDimEnabled">true</item>-->
+    </style>
+
     <style name="UpdateDialog" parent="@android:style/Theme.Dialog">
         <item name="android:windowFrame">@null</item>
         <item name="android:windowNoTitle">true</item>