2 Commits 5c8e1da406 ... 71375e4ce2

Autor SHA1 Mensagem Data
  ltt 71375e4ce2 Merge branch 'dev-ranklist' há 1 ano atrás
  ltt 1e014e2b6b 新闻详情展示群组 há 1 ano atrás

+ 0 - 1
TMessagesProj/src/main/java/org/telegram/cricdit/adapter/NewsSearchHotAdapter.java

@@ -18,7 +18,6 @@ import com.chad.library.adapter.base.BaseQuickAdapter;
 import com.chad.library.adapter.base.BaseViewHolder;
 
 import org.telegram.cricdit.bean.NewsSearchBean;
-import org.telegram.cricdit.ui.NewsDetailActivity;
 import org.telegram.cricdit.ui.NewsDetailCommentFragment;
 import org.telegram.cricdit.utils.ColorUtil;
 import org.telegram.cricdit.utils.DensityUtil;

+ 4 - 0
TMessagesProj/src/main/java/org/telegram/cricdit/bean/NewsBean.java

@@ -2,6 +2,9 @@ package org.telegram.cricdit.bean;
 
 import android.text.TextUtils;
 
+import com.google.gson.GsonBuilder;
+
+import org.telegram.cricdit.utils.GsonHel;
 import org.telegram.cricdit.utils.StringUtils;
 import org.telegram.messenger.R;
 
@@ -265,6 +268,7 @@ public class NewsBean implements Serializable{
         public void setVideo(String video) {
             this.video = video;
         }
+
     }
 
 }

+ 53 - 0
TMessagesProj/src/main/java/org/telegram/cricdit/bean/NewsItemBean.java

@@ -0,0 +1,53 @@
+package org.telegram.cricdit.bean;
+
+import org.telegram.cricdit.base.BaseResponse;
+
+public class NewsItemBean{
+    private RankDetailBean.GroupBean group1;
+    private RankDetailBean.GroupBean group2;
+    public RankDetailBean.GroupBean getGroup2() {
+        return group2;
+    }
+
+    public RankDetailBean.GroupBean getGroup1() {
+        return group1;
+    }
+
+    public void setGroup2(RankDetailBean.GroupBean group2) {
+        this.group2 = group2;
+    }
+
+    public void setGroup1(RankDetailBean.GroupBean group1) {
+        this.group1 = group1;
+    }
+
+    private int errCode = -1;
+    private String errMsg;
+    private NewsBean.NewsFeedBean data;
+
+    public int getErrCode() {
+        return errCode;
+    }
+
+    public void setErrCode(int errCode) {
+        this.errCode = errCode;
+    }
+
+    public String getErrMsg() {
+        return errMsg;
+    }
+
+    public void setErrMsg(String errMsg) {
+        this.errMsg = errMsg;
+    }
+
+    public NewsBean.NewsFeedBean getData() {
+        return data;
+    }
+
+    public void setData(NewsBean.NewsFeedBean data) {
+        this.data = data;
+    }
+
+
+}

+ 32 - 9
TMessagesProj/src/main/java/org/telegram/cricdit/mvp/CommentPresenter.java

@@ -6,19 +6,28 @@ import android.widget.TextView;
 
 import org.telegram.cricdit.base.BaseObserver;
 import org.telegram.cricdit.base.BasePresenter;
+import org.telegram.cricdit.base.BaseResponse;
+import org.telegram.cricdit.bean.BaseCodeBean;
 import org.telegram.cricdit.bean.ChildCommendListBean;
 import org.telegram.cricdit.bean.GroupInfoBean;
 import org.telegram.cricdit.bean.MainCommendListBean;
 import org.telegram.cricdit.bean.MoreCommendBean;
 import org.telegram.cricdit.bean.MultiItemEntity;
 import org.telegram.cricdit.bean.NewsBean;
+import org.telegram.cricdit.bean.NewsItemBean;
 import org.telegram.cricdit.bean.RankDetailBean;
 import org.telegram.cricdit.bean.ReplyBean;
 import org.telegram.cricdit.net.ApiService;
 import org.telegram.cricdit.net.Parameter;
+import org.telegram.cricdit.net.RetrofitClient;
+import org.telegram.cricdit.utils.GsonHel;
 import org.telegram.cricdit.utils.ParamsUtil;
 import org.telegram.messenger.UserConfig;
-import org.telegram.tgnet.TLRPC;
+
+import java.io.IOException;
+
+import okhttp3.ResponseBody;
+import retrofit2.Call;
 
 
 public class CommentPresenter extends BasePresenter<CommentView> {
@@ -225,18 +234,32 @@ public class CommentPresenter extends BasePresenter<CommentView> {
             parameter.add("user_id", UserConfig.getInstance(UserConfig.selectedAccount).getCurrentUser().id + "");
         }
         parameter.add("id", id);
-        addSubscribe(create(ApiService.class).getNewsDetail(parameter.buildJsonBody()), new BaseObserver<NewsBean.NewsFeedBean>(getView()) {
+        ApiService apiService = RetrofitClient.getInstance().getRetrofit().create(ApiService.class);
+        Call<ResponseBody> responseCall = apiService.getNewsDetail(parameter.buildJsonBody());
+        responseCall.enqueue(new retrofit2.Callback<ResponseBody>() {
             @Override
-            protected void onSuccess(NewsBean.NewsFeedBean bean) {
-                getView().showDetail(bean);
+            public void onResponse(Call<ResponseBody> call, retrofit2.Response<ResponseBody> response) {
+                try {
+                    if (response.body() == null) {
+                        return;
+                    }
+                    String string = response.body().string();
+                    if (TextUtils.isEmpty(string)) {
+                        return;
+                    }
+                    if(getView()==null){
+                        return;
+                    }
+                    NewsItemBean baseBean = GsonHel.fromJson(string, NewsItemBean.class);
+                    getView().showDetail(baseBean);
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
             }
 
             @Override
-            public void onError(Throwable e) {
-                if (getView() != null) {
-                    getView().showError(e);
-                }
-                super.onError(e);
+            public void onFailure(Call<ResponseBody> call, Throwable t) {
+                if(getView()!=null){getView().showError(t);}
             }
         });
     }

+ 2 - 1
TMessagesProj/src/main/java/org/telegram/cricdit/mvp/CommentView.java

@@ -9,6 +9,7 @@ import org.telegram.cricdit.bean.MainCommendListBean;
 import org.telegram.cricdit.bean.MoreCommendBean;
 import org.telegram.cricdit.bean.MultiItemEntity;
 import org.telegram.cricdit.bean.NewsBean;
+import org.telegram.cricdit.bean.NewsItemBean;
 import org.telegram.cricdit.bean.RankDetailBean;
 import org.telegram.cricdit.bean.ReplyBean;
 
@@ -32,5 +33,5 @@ public interface CommentView extends IView {
 
     void showError(Throwable e);
 
-    void showDetail(NewsBean.NewsFeedBean bean);
+    void showDetail(NewsItemBean bean);
 }

+ 0 - 39
TMessagesProj/src/main/java/org/telegram/cricdit/mvp/NewsDetailPresenter.java

@@ -1,39 +0,0 @@
-package org.telegram.cricdit.mvp;
-
-
-import org.telegram.cricdit.base.BaseObserver;
-import org.telegram.cricdit.base.BasePresenter;
-import org.telegram.cricdit.bean.NewsBean;
-import org.telegram.cricdit.net.ApiService;
-import org.telegram.cricdit.net.Parameter;
-import org.telegram.cricdit.utils.ParamsUtil;
-
-public class NewsDetailPresenter extends BasePresenter<NewsDetailView> {
-    public void getDetail(int id){
-        Parameter parameter = new Parameter();
-        parameter.add("operationID", ParamsUtil.buildOperationID());
-        parameter.add("id", id);
-        addSubscribe(create(ApiService.class).getNewsDetail(parameter.buildJsonBody()), new BaseObserver<NewsBean.NewsFeedBean>(getView()) {
-            @Override
-            protected  void onSuccess(NewsBean.NewsFeedBean bean) {
-                getView().showDetail(bean);
-            }
-
-            @Override
-            public void onError(Throwable e) {
-                if(getView()!=null){
-                    getView().showError(e);
-                }
-                super.onError(e);
-            }
-        });
-    }
-
-    public void follow(String followId, BaseObserver<Object> baseObserver){
-        Parameter parameter = new Parameter();
-        parameter.add("operationID", ParamsUtil.buildOperationID());
-        parameter.add("follow_id", followId);
-        parameter.add("user_id", getView().getUid());
-        addSubscribe(create(ApiService.class).follow(parameter.buildJsonBody()), baseObserver);
-    }
-}

+ 0 - 11
TMessagesProj/src/main/java/org/telegram/cricdit/mvp/NewsDetailView.java

@@ -1,11 +0,0 @@
-package org.telegram.cricdit.mvp;
-
-
-import org.telegram.cricdit.base.IView;
-import org.telegram.cricdit.bean.NewsBean;
-
-public interface NewsDetailView extends IView {
-    void showDetail(NewsBean.NewsFeedBean bean);
-    void showError(Throwable e);
-    String getUid();
-}

+ 1 - 2
TMessagesProj/src/main/java/org/telegram/cricdit/net/ApiService.java

@@ -48,7 +48,6 @@ public interface ApiService {
     @POST(Constants.APP_AUTH_URL + "/demo/user_vote")
     Observable<BaseResponse<Object>> goToRankVote(@Body RequestBody requestBody);
 
-    //News
     @POST(Constants.APP_AUTH_URL + "/feed/list")
     Observable<BaseResponse<NewsBean>> getNewsFeedList(@Body RequestBody requestBody);
 
@@ -68,7 +67,7 @@ public interface ApiService {
     Observable<BaseResponse<Object>> follow(@Body RequestBody requestBody);
 
     @POST(Constants.APP_AUTH_URL + "/feed/item")
-    Observable<BaseResponse<NewsBean.NewsFeedBean>> getNewsDetail(@Body RequestBody requestBody);
+    Call<ResponseBody> getNewsDetail(@Body RequestBody requestBody);
 
     @POST(Constants.APP_AUTH_URL + "/feed/submit")
     Observable<BaseResponse<Object>> publicNews(@Body RequestBody requestBody);

+ 2 - 1
TMessagesProj/src/main/java/org/telegram/cricdit/ui/CommentFragment.java

@@ -33,6 +33,7 @@ import org.telegram.cricdit.bean.MainCommendListBean;
 import org.telegram.cricdit.bean.MoreCommendBean;
 import org.telegram.cricdit.bean.MultiItemEntity;
 import org.telegram.cricdit.bean.NewsBean;
+import org.telegram.cricdit.bean.NewsItemBean;
 import org.telegram.cricdit.bean.RankDetailBean;
 import org.telegram.cricdit.bean.ReplyBean;
 import org.telegram.cricdit.callback.DeleteCommentCallBack;
@@ -575,7 +576,7 @@ public class CommentFragment extends BaseActivity<CommentPresenter> implements O
     }
 
     @Override
-    public void showDetail(NewsBean.NewsFeedBean bean) {
+    public void showDetail(NewsItemBean bean) {
 
     }
 

+ 0 - 424
TMessagesProj/src/main/java/org/telegram/cricdit/ui/NewsDetailActivity.java

@@ -1,424 +0,0 @@
-package org.telegram.cricdit.ui;
-
-import static org.telegram.cricdit.utils.Base64Utils.base64ToBitmap;
-
-import android.app.ActivityOptions;
-import android.content.Intent;
-import android.graphics.Bitmap;
-import android.graphics.drawable.GradientDrawable;
-import android.os.Bundle;
-import android.os.Message;
-import android.text.Html;
-import android.text.TextUtils;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.WindowManager;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import androidx.core.widget.NestedScrollView;
-
-import com.bumptech.glide.Glide;
-import com.bumptech.glide.load.resource.bitmap.CircleCrop;
-import com.bumptech.glide.request.RequestOptions;
-import com.google.android.exoplayer2.SeekParameters;
-import com.lzy.ninegrid.preview.ImagePreviewActivity;
-import com.zhy.view.flowlayout.FlowLayout;
-import com.zhy.view.flowlayout.TagAdapter;
-import com.zhy.view.flowlayout.TagFlowLayout;
-
-import org.telegram.cricdit.base.BaseActivity;
-import org.telegram.cricdit.base.BaseObserver;
-import org.telegram.cricdit.bean.NewsBean;
-import org.telegram.cricdit.bean.NewsItemEvent;
-import org.telegram.cricdit.mvp.NewsDetailPresenter;
-import org.telegram.cricdit.mvp.NewsDetailView;
-import org.telegram.cricdit.mvp.NewsPresenter;
-import org.telegram.cricdit.mvp.RankDetailPresenter;
-import org.telegram.cricdit.mvp.RankDetailsView;
-import org.telegram.cricdit.utils.ColorUtil;
-import org.telegram.cricdit.utils.EventBusHelper;
-import org.telegram.cricdit.utils.TimeUtils;
-import org.telegram.cricdit.utils.ToastUtil;
-import org.telegram.cricdit.utils.UIUtil;
-import org.telegram.messenger.ImageLoader;
-import org.telegram.messenger.ImageReceiver;
-import org.telegram.messenger.LocaleController;
-import org.telegram.messenger.MediaController;
-import org.telegram.messenger.MessageObject;
-import org.telegram.messenger.R;
-import org.telegram.messenger.SecureDocument;
-import org.telegram.messenger.SendMessagesHelper;
-import org.telegram.messenger.UserConfig;
-import org.telegram.messenger.VideoEditedInfo;
-import org.telegram.tgnet.TLRPC;
-import org.telegram.ui.ChatActivity;
-import org.telegram.ui.LoginActivity;
-import org.telegram.ui.PassportActivity;
-import org.telegram.ui.PhotoViewer;
-import org.telegram.ui.ProfileActivity;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
-
-public class NewsDetailActivity extends BaseActivity<NewsDetailPresenter> implements NewsDetailView {
-    private NestedScrollView nestedScrollview;
-    private TextView tvTitle;
-    private LinearLayout llHead;
-    private ImageView ivHead;
-    private TextView tvUserName;
-    private TextView tvPublicTime;
-    private LinearLayout llFollow;
-    private ImageView ivHeart;
-    private TextView tvFollow;
-    private TextView tvContentTop;
-    private ImageView ivSinger;
-    private LinearLayout llMoreImg;
-    private TextView tvContentDown;
-    private TextView tvEnd;
-    private TextView tvCommentsNum;
-    private View viewLine;
-    private TagFlowLayout flowlayout;
-    private View view;
-//    private CommentFragment commentFragment;
-    private String newsType;
-    //与信息流相关:先给newsBean赋值,保证传过去的是同一个对象
-    public static NewsBean.NewsFeedBean newsBean;
-    //与信息流无关
-    private int newsId;
-    //视频
-//    private boolean isPlay;
-//    private boolean isPause;
-//    private OrientationUtils orientationUtils;
-//    private GSYVideoOptionBuilder gsyVideoOption;
-//    private long floatProgress;
-
-    public NewsDetailActivity(Bundle bundle){
-        newsId = bundle.getInt("news_id");
-//        floatProgress = bundle.getLong("news_video_progress",0);
-    }
-
-    @Override
-    protected void initView(View view) {
-        this.view = view;
-        nestedScrollview = view.findViewById(R.id.nested_scrollview);
-        tvTitle = view.findViewById(R.id.tv_title);
-        llHead= view.findViewById(R.id.ll_head);
-        ivHead = view.findViewById(R.id.iv_head);
-        tvUserName = view.findViewById(R.id.tv_user_name);
-        tvPublicTime = view.findViewById(R.id.tv_public_time);
-        llFollow = view.findViewById(R.id.ll_follow);
-        ivHeart = view.findViewById(R.id.iv_heart);
-        tvFollow = view.findViewById(R.id.tv_follow);
-        tvContentTop = view.findViewById(R.id.tv_content_top);
-        ivSinger = view.findViewById(R.id.iv_singer);
-        llMoreImg = view.findViewById(R.id.ll_more_img);
-        tvContentDown= view.findViewById(R.id.tv_content_down);
-        tvEnd = view.findViewById(R.id.tv_end);
-        viewLine = view.findViewById(R.id.view_line);
-        tvCommentsNum = view.findViewById(R.id.tv_comments_num);
-        flowlayout= view.findViewById(R.id.flowlayout);
-
-        tvTitle.setTextColor(ColorUtil.COLOR_BLACK_TEXT);
-        tvUserName.setTextColor(ColorUtil.COLOR_BLACK_TEXT);
-        tvContentTop.setTextColor(ColorUtil.COLOR_BLACK_TEXT);
-        tvContentDown.setTextColor(ColorUtil.COLOR_BLACK_TEXT);
-        tvCommentsNum.setTextColor(ColorUtil.COLOR_BLACK_TEXT);
-        tvPublicTime.setTextColor(ColorUtil.COLOR_GRAY_TEXT);
-        tvFollow.setTextColor(ColorUtil.COLOR_WHITE);
-        tvEnd.setTextColor(ColorUtil.COLOR_GRAY_TEXT);
-        viewLine.setBackgroundColor(ColorUtil.COLOR_LINE_GRAY);
-        nestedScrollview.setOverScrollMode(View.OVER_SCROLL_NEVER);
-        initData();
-    }
-
-    private void initData(){
-        //没id才拿bean
-        if(newsId == 0){
-            if(newsBean == null){
-                finishFragment();
-            }else{
-                newsId = newsBean.getId();
-            }
-        }else{
-            newsBean = null;
-        }
-        presenter.getDetail(newsId);
-    }
-
-    @Override
-    public void showDetail(NewsBean.NewsFeedBean bean) {
-        if (bean == null) {
-            finishFragment();
-        }
-
-        if(newsBean == null){
-            newsBean = bean;
-        }else{
-            //替换最新数据
-            newsBean.setNewest(bean.getIsFollow(),bean.getUserBio(),bean.getCommentNum(),bean.getLikeNum(),bean.getShareNum(),bean.getIsLike(),bean.getMedium());
-        }
-        newsType = newsBean.getType();
-        prepareVideo();
-        
-         /*FrameLayout frameLayout = view.findViewById(R.id.fl_container_1);
-        headView = LayoutInflater.from(getContext()).inflate(R.layout.activity_rank_detail_comment,frameLayout,false);*/
-        
-        String tags = newsBean.getTags();
-        if (!TextUtils.isEmpty(tags)) {
-            flowlayout.setVisibility(View.VISIBLE);
-            String[] splitList = tags.split(",");
-            TagAdapter tagRecordAdapter = new TagAdapter<String>(new ArrayList<>(Arrays.asList(splitList))){
-                @Override
-                public View getView(FlowLayout flowLayout, int i, String s) {
-                    TextView tv = (TextView) LayoutInflater.from(getContext()).inflate(R.layout.item_tv,flowLayout,false);
-                    tv.setTextColor(ColorUtil.COLOR_BLUE_TEXT);
-                    tv.setText("#"+s+"#");
-                    return tv;
-                }
-            };
-            flowlayout.setAdapter(tagRecordAdapter);
-            flowlayout.setOnTagClickListener((view, p, parent) -> {
-                Bundle bundle = new Bundle();
-                bundle.putString("news_tag",splitList[p]);
-                bundle.putString("news_type",newsType);
-                presentFragment(new NewsTagActivity(bundle));
-                return true;
-            });
-        }else{
-            flowlayout.setVisibility(View.GONE);
-        }
-
-        //文字位置:feed文字在前、news文字在后
-        if("feed".equals(newsType)){
-            tvContentTop.setText(Html.fromHtml(newsBean.getContent()));
-        }else{
-            tvContentTop.setVisibility(View.GONE);
-            tvContentDown.setVisibility(View.VISIBLE);
-            tvContentDown.setText(Html.fromHtml(newsBean.getContent()));
-        }
-        tvUserName.setText(newsBean.getUserName());
-        tvPublicTime.setText(TimeUtils.timeEngMonthStr(getContext(),Long.parseLong(newsBean.getPublishTime() + "000")));
-        if (TextUtils.isEmpty(newsBean.getTitle())) {
-            tvTitle.setVisibility(View.GONE);
-        } else {
-            tvTitle.setText(newsBean.getTitle());
-        }
-        GradientDrawable gd = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[]{ColorUtil.COLOR_LINE_GRAY,ColorUtil.COLOR_LINE_GRAY});
-        gd.setShape(GradientDrawable.RECTANGLE);
-        gd.setCornerRadius(UIUtil.dip2px(getContext(), 7));
-        llFollow.setVisibility(View.GONE);
-        if (UserConfig.getInstance(currentAccount).isClientActivated()) {
-            if (!newsBean.getUserId().equals(UserConfig.getInstance(currentAccount).getCurrentUser().id+"")) {
-                llFollow.setVisibility(View.VISIBLE);
-                ivHeart.setVisibility(newsBean.getIsFollow()?View.GONE:View.VISIBLE);
-                tvFollow.setText(newsBean.getIsFollow()?R.string.focus_on:R.string.follow);
-                if(newsBean.getIsFollow()) {
-                    llFollow.setBackground(gd);
-                }else{
-                    llFollow.setBackgroundResource(R.drawable.img_follow_btn);
-                }
-            }
-        }
-
-        Glide.with(getContext()).load(base64ToBitmap(newsBean.getUserAvatar()))
-                .apply(new RequestOptions().transforms(new CircleCrop()))
-                .placeholder(R.drawable.book_user)
-                .error(R.drawable.book_user)
-                .into(ivHead);
-
-        llHead.setOnClickListener(view -> {
-            if(newsBean!=null){
-                Bundle bundle = new Bundle();
-                bundle.putLong("user_id", Long.parseLong(newsBean.getUserId()));
-                presentFragment(new ProfileActivity(bundle));
-            }
-        });
-
-//        if(TextUtils.isEmpty(newsBean.getVideo())){
-            //图片
-            String url = newsBean.getMedium();
-            if (!TextUtils.isEmpty(url)) {
-                String[] splitList = url.split(",");
-                if (splitList.length <= 1) {
-                    ivSinger.setVisibility(View.VISIBLE);
-                    Glide.with(getContext()).load(url).fitCenter()
-                            .into(ivSinger);
-                    ivSinger.setOnClickListener(view -> {
-                        Bundle bundle = new Bundle();
-                        bundle.putStringArrayList(ImagePreviewActivity.IMAGE_INFO, new ArrayList<String>() {{add(url);}});
-                        bundle.putInt(ImagePreviewActivity.CURRENT_ITEM, 0);
-                        presentFragment(new MagnifyImagesActivity(bundle));
-                    });
-                } else {
-                    llMoreImg.setVisibility(View.VISIBLE);
-                    llMoreImg.removeAllViews();
-                    for (int i = 0; i < splitList.length; i++) {
-                        ImageView iv = new ImageView(getContext());
-                        iv.setTag(i);
-                        iv.setLayoutParams(new LinearLayout.LayoutParams(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT));
-                        iv.setPadding(0, 0, 0, UIUtil.dip2px(getContext(), 10));
-                        Glide.with(iv)
-                                .load(splitList[i])
-                                .fitCenter()
-                                .into(iv);
-                        iv.setScaleType(ImageView.ScaleType.FIT_CENTER);
-                        iv.setLayoutParams(new LinearLayout.LayoutParams(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT));
-                        iv.setPadding(0, 0, 0, UIUtil.dip2px(getContext(), 10));
-                        llMoreImg.addView(iv);
-                        iv.setOnClickListener(v2 -> {
-                            Bundle bundle = new Bundle();
-                            bundle.putStringArrayList(ImagePreviewActivity.IMAGE_INFO, new ArrayList<>(Arrays.asList(splitList)));
-                            bundle.putInt(ImagePreviewActivity.CURRENT_ITEM,  (Integer) v2.getTag());
-                            presentFragment(new MagnifyImagesActivity(bundle));
-                        });
-                    }
-                }
-            }
-//        }
-
-        /*if (commentFragment == null) {
-            commentFragment = CommentFragment.newInstance("news", newsBean.getId() + "");
-            commentFragment.setNewDetaiBean(newsBean);
-            commentFragment.setHeadViewHolder(new NewsHeadViewHolder(getRoot()));
-            getSupportFragmentManager().beginTransaction().add(R.id.fl_container_1, commentFragment, "").commit();
-        }else{
-            commentFragment.adapter.notifyItemChanged(0);
-        }*/
-    }
-
-    @Override
-    public void showError(Throwable e) {
-
-    }
-
-    @Override
-    public String getUid() {
-        return UserConfig.getInstance(currentAccount).getCurrentUser().id+"";
-    }
-
-    @Override
-    protected int getLayoutResId() {
-        return R.layout.activity_news_detail_comment;//activity_rank_detail
-    }
-
-    @Override
-    public String setActionBarTitle() {
-        return LocaleController.getString("CdNewsDetails", R.string.CdNewsDetails);
-    }
-
-    @Override
-    protected NewsDetailPresenter createPresenter() {
-        return new NewsDetailPresenter();
-    }
-
-    @Override
-    public void onStop() {
-        //退出时刷新单个bean
-        EventBusHelper.post(new NewsItemEvent(newsType));
-        super.onStop();
-    }
-
-    public void prepareVideo(){
-        //  GSYVideoManager.instance().clearAllDefaultCache(MainActivity.this);//清理缓存
-        /*if(!TextUtils.isEmpty(newsBean.getVideo())){
-            StandardGSYVideoPlayer player = viewDataBinding.videoPlayer;
-            player.setVisibility(View.INVISIBLE);
-            viewDataBinding.ivBack.setImageDrawable(getDrawable(R.mipmap.bt_white_back));
-            player.getTitleTextView().setVisibility(View.GONE);
-            player.getBackButton().setVisibility(View.GONE);
-            player.getFullscreenButton().setOnClickListener(v -> {
-                //旋转屏幕
-                orientationUtils.resolveByClick();
-                //是否需要隐藏actionbar,第二个true是否需要隐藏statusbar
-                viewDataBinding.videoPlayer.startWindowFullscreen(mContext, false, true);
-            });
-
-            ImageView imageView = new ImageView(this);
-            //增加封面
-            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
-            imageView.setImageBitmap(getFirstBitmap(mContext,newsBean.getVideo(),false));
-            ThreadPoolUtil.execute(() ->{
-                //外部辅助的旋转,帮助全屏,不打开外部的旋转
-                orientationUtils = new OrientationUtils(this, viewDataBinding.videoPlayer);
-                orientationUtils.setEnable(false);
-                Map<String, String> header = new HashMap<>();
-                header.put("ee", "33");
-                header.put("allowCrossProtocolRedirects", "true");
-                gsyVideoOption = new GSYVideoOptionBuilder();
-
-                gsyVideoOption.setThumbImageView(imageView)
-                        .setIsTouchWiget(true)
-                        .setRotateViewAuto(false)
-                        .setLockLand(false)
-                        .setAutoFullWithSize(false)
-                        .setShowFullAnimation(false)
-                        .setNeedLockFull(true)
-                        .setUrl(newsBean.getVideo())
-                        .setMapHeadData(header)
-                        .setCacheWithPlay(true)
-                        .setVideoAllCallBack(new GSYSampleCallBack() {
-                            @Override
-                            public void onPrepared(String url, Object... objects) {
-                                Debuger.printfError("***** onPrepared **** " + objects[0]+"***** onPrepared **** " + objects[1]);
-                                super.onPrepared(url, objects);
-                                //开始播放了才能旋转和全屏
-                                orientationUtils.setEnable(viewDataBinding.videoPlayer.isRotateWithSystem());
-                                isPlay = true;
-
-                                //设置 seek 的临近帧。
-                                if (viewDataBinding.videoPlayer.getGSYVideoManager().getPlayer() instanceof Exo2PlayerManager) {
-                                    ((Exo2PlayerManager) viewDataBinding.videoPlayer.getGSYVideoManager().getPlayer()).setSeekParameter(SeekParameters.NEXT_SYNC);
-                                    Debuger.printfError("***** setSeekParameter **** ");
-                                }
-                            }
-
-                            @Override
-                            public void onEnterFullscreen(String url, Object... objects) {
-                                super.onEnterFullscreen(url, objects);
-                                Debuger.printfError("***** onEnterFullscreen **** " + objects[0]);//title
-                                Debuger.printfError("***** onEnterFullscreen **** " + objects[1]);//当前全屏player
-                            }
-
-                            @Override
-                            public void onAutoComplete(String url, Object... objects) {
-                                super.onAutoComplete(url, objects);
-                            }
-
-                            @Override
-                            public void onClickStartError(String url, Object... objects) {
-                                super.onClickStartError(url, objects);
-                            }
-
-                            @Override
-                            public void onQuitFullscreen(String url, Object... objects) {
-                                super.onQuitFullscreen(url, objects);
-                                // 不需要屏幕旋转,还需要设置 c(false)
-                                if (orientationUtils != null) {
-                                    orientationUtils.backToProtVideo();
-                                }
-                            }
-                        })
-                        .setLockClickListener((view, lock) -> {
-                            if (orientationUtils != null) {
-                                //配合下方的onConfigurationChanged
-                                orientationUtils.setEnable(!lock);
-                            }
-                        })
-                        .setGSYVideoProgressListener((progress, secProgress, currentPosition, duration) -> {
-                            if(progress >= 99){
-                                isPlay = false;
-                            }
-                        });
-
-                Message message = new Message();
-                message.what = 1;
-                mHandler.sendMessage(message);
-            });
-        }*/
-    }
-
-}

+ 232 - 1
TMessagesProj/src/main/java/org/telegram/cricdit/ui/NewsDetailCommentFragment.java

@@ -42,7 +42,9 @@ import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
 
 import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.resource.bitmap.CenterCrop;
 import com.bumptech.glide.load.resource.bitmap.CircleCrop;
+import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
 import com.bumptech.glide.request.RequestOptions;
 import com.classic.common.MultipleStatusView;
 import com.lzy.ninegrid.preview.ImagePreviewActivity;
@@ -76,6 +78,7 @@ import org.telegram.cricdit.bean.MainCommendListBean;
 import org.telegram.cricdit.bean.MoreCommendBean;
 import org.telegram.cricdit.bean.MultiItemEntity;
 import org.telegram.cricdit.bean.NewsBean;
+import org.telegram.cricdit.bean.NewsItemBean;
 import org.telegram.cricdit.bean.NewsItemEvent;
 import org.telegram.cricdit.bean.RankDetailBean;
 import org.telegram.cricdit.bean.ReplyBean;
@@ -95,6 +98,7 @@ import org.telegram.cricdit.share.ShareUtils;
 import org.telegram.cricdit.utils.Base64Utils;
 import org.telegram.cricdit.utils.ColorUtil;
 import org.telegram.cricdit.utils.EventBusHelper;
+import org.telegram.cricdit.utils.GsonHel;
 import org.telegram.cricdit.utils.SPUtils;
 import org.telegram.cricdit.utils.StringUtils;
 import org.telegram.cricdit.utils.TimeUtils;
@@ -108,6 +112,7 @@ import org.telegram.cricdit.view.floatwindow.MoveType;
 import org.telegram.cricdit.view.floatwindow.Screen;
 import org.telegram.cricdit.view.floatwindow.Util;
 import org.telegram.messenger.AndroidUtilities;
+import org.telegram.messenger.ChatObject;
 import org.telegram.messenger.LocaleController;
 import org.telegram.messenger.MessagesController;
 import org.telegram.messenger.MessagesStorage;
@@ -117,8 +122,10 @@ import org.telegram.tgnet.ConnectionsManager;
 import org.telegram.tgnet.TLObject;
 import org.telegram.tgnet.TLRPC;
 import org.telegram.ui.ActionBar.AlertDialog;
+import org.telegram.ui.ChatActivity;
 import org.telegram.ui.Components.AvatarDrawable;
 import org.telegram.ui.Components.BackupImageView;
+import org.telegram.ui.Components.JoinGroupAlert;
 import org.telegram.ui.LaunchActivity;
 import org.telegram.ui.LoginActivity;
 import org.telegram.ui.ProfileActivity;
@@ -183,6 +190,22 @@ public class NewsDetailCommentFragment extends BaseActivity<CommentPresenter> im
     private RelativeLayout ll_head_feed;
     private TextView tv_user_name_feed;
     private TextView tv_public_time_feed;
+    private RelativeLayout rl_group;
+    private RelativeLayout rl_group2;
+    private View view_group;
+    private View view_group2;
+    private ImageView iv_group;
+    private ImageView iv_group2;
+    private TextView tv_join_group_name;
+    private TextView tv_join_group_name2;
+    private TextView tv_join_group_count;
+    private TextView tv_join_group_count2;
+    private TextView tv_join_info;
+    private TextView tv_join_info2;
+    private ImageView iv_group_arrow;
+    private ImageView iv_group_arrow2;
+
+
     //    private CommentFragment commentFragment;
     private String newsType;
     //与信息流相关:先给newsBean赋值,保证传过去的是同一个对象
@@ -917,6 +940,30 @@ public class NewsDetailCommentFragment extends BaseActivity<CommentPresenter> im
         tvEnd.setTextColor(ColorUtil.COLOR_GRAY_TEXT);
         viewLine.setBackgroundColor(ColorUtil.COLOR_LINE_GRAY);
         nestedScrollview.setOverScrollMode(View.OVER_SCROLL_NEVER);
+
+        //group
+        rl_group = view.findViewById(R.id.rl_group);
+        rl_group2 = view.findViewById(R.id.rl_group2);
+        view_group = view.findViewById(R.id.view_group);
+        view_group2 = view.findViewById(R.id.view_group2);
+        iv_group = view.findViewById(R.id.iv_group);
+        iv_group2 = view.findViewById(R.id.iv_group2);
+        tv_join_group_name = view.findViewById(R.id.tv_join_group_name);
+        tv_join_group_name2 = view.findViewById(R.id.tv_join_group_name2);
+        tv_join_group_count = view.findViewById(R.id.tv_join_group_count);
+        tv_join_group_count2 = view.findViewById(R.id.tv_join_group_count2);
+        tv_join_info = view.findViewById(R.id.tv_join_info);
+        tv_join_info2 = view.findViewById(R.id.tv_join_info2);
+        iv_group_arrow = view.findViewById(R.id.iv_group_arrow);
+        iv_group_arrow2 = view.findViewById(R.id.iv_group_arrow2);
+        GradientDrawable gd = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[]{ColorUtil.COLOR_BLUE_ACTIONBAR});
+        gd.setShape(GradientDrawable.RECTANGLE);
+        gd.setColor(ColorUtil.COLOR_BLUE_ACTIONBAR);
+        gd.setCornerRadius(UIUtil.dip2px(getContext(), 12));
+        view_group.setBackground(gd);
+        view_group2.setBackground(gd);
+        iv_group_arrow.setColorFilter(ColorUtil.COLOR_WHITE);
+        iv_group_arrow2.setColorFilter(ColorUtil.COLOR_WHITE);
         initDataNewsDetail();
     }
 
@@ -969,7 +1016,8 @@ public class NewsDetailCommentFragment extends BaseActivity<CommentPresenter> im
     }
 
     @Override
-    public void showDetail(NewsBean.NewsFeedBean bean) {
+    public void showDetail(NewsItemBean itemBean) {
+        NewsBean.NewsFeedBean bean = itemBean.getData();
         if (bean == null) {
             finishFragment();
         }
@@ -1054,6 +1102,7 @@ public class NewsDetailCommentFragment extends BaseActivity<CommentPresenter> im
             tvUserName.setText(" " + (!TextUtils.isEmpty(nickname) ? nickname : TextUtils.isEmpty(newsBean.getUserName()) ? "" : newsBean.getUserName()));
             tvPublicTime.setText(" " + getString(R.string.news_updated_on) + " " + TimeUtils.timeEngMonthStr(getContext(), Long.parseLong(newsBean.getPublishTime() + "000")));
             tvContentDown.setText(Html.fromHtml(newsBean.getContent()));
+            showRankGroup(itemBean.getGroup1(),itemBean.getGroup2());
         }
 
         if (TextUtils.isEmpty(newsBean.getTitle())) {
@@ -1213,6 +1262,188 @@ public class NewsDetailCommentFragment extends BaseActivity<CommentPresenter> im
         setHeadViewHolder(new ListHeadViewHolder(view));
     }
 
+    private void showRankGroup(RankDetailBean.GroupBean group1, RankDetailBean.GroupBean group2) {
+        if(group1 == null || TextUtils.isEmpty(group1.getGroup_id())){
+            rl_group.setVisibility(View.GONE);
+        }else{
+            rl_group.setVisibility(View.VISIBLE);
+            tv_join_info.setText(LocaleController.getString(R.string.join_live_discussion_groups));
+            tv_join_group_name.setText(group1.getGroup_name());
+            tv_join_group_count.setText(LocaleController.getString(R.string.member) + " " + group1.getGroup_num());
+            Glide.with(getContext()).load(Base64Utils.base64ToBitmap(group1.getGroup_image()))
+                    .apply(new RequestOptions().transforms(new CenterCrop(), new RoundedCorners(UIUtil.dip2px(getContext(), 7))))
+                    .placeholder(R.drawable.img_rank_group_empty)
+                    .error(R.drawable.img_rank_group_empty)
+                    .into(iv_group);
+        }
+
+        if(group2 == null || TextUtils.isEmpty(group2.getGroup_id())){
+            rl_group2.setVisibility(View.GONE);
+        }else{
+            rl_group2.setVisibility(View.VISIBLE);
+            tv_join_info2.setText(LocaleController.getString(R.string.join_live_discussion_groups));
+            tv_join_group_name2.setText(group2.getGroup_name());
+            tv_join_group_count2.setText(LocaleController.getString(R.string.member) + " " + group2.getGroup_num());
+            Glide.with(getContext()).load(Base64Utils.base64ToBitmap(group2.getGroup_image()))
+                    .apply(new RequestOptions().transforms(new CenterCrop(), new RoundedCorners(UIUtil.dip2px(getContext(), 7))))
+                    .placeholder(R.drawable.img_rank_group_empty)
+                    .error(R.drawable.img_rank_group_empty)
+                    .into(iv_group2);
+        }
+
+        rl_group.setOnClickListener(view -> {
+            if (!UserConfig.getInstance(currentAccount).isClientActivated()) {
+                presentFragment(new LoginActivity());
+            } else {
+                if(group1 == null || TextUtils.isEmpty(group1.getGroup_id())){
+                    return;
+                }
+                long chatID = Long.parseLong(group1.getGroup_id());
+                ConcurrentHashMap<Long, TLRPC.Chat> chats = getMessagesController().getChats();
+                TLRPC.Chat chat = chats.get(chatID);
+                if (chat != null) {
+                    Bundle bundle = new Bundle();
+                    bundle.putLong("chat_id", chatID);
+                    presentFragment(new ChatActivity(bundle));
+                } else {
+                    if (alertDialog != null) {
+                        alertDialog.show();
+                    }
+                    if (!TextUtils.isEmpty(group1.private_link)) {
+                        newSkipUrl(group1.private_link);
+                    } else {
+                        if (!TextUtils.isEmpty(group1.public_link)) {
+                            newSkipUrl("https://t.me/" + group1.public_link);
+                        } else {
+                            if (alertDialog != null) {
+                                alertDialog.dismiss();
+                            }
+                            ToastUtil.show(getParentActivity(), LocaleController.getString(R.string.CdExpiredGroup));
+                        }
+                    }
+                }
+            }
+        });
+
+        rl_group2.setOnClickListener(view -> {
+            if (!UserConfig.getInstance(currentAccount).isClientActivated()) {
+                presentFragment(new LoginActivity());
+            } else {
+                if(group2 == null || TextUtils.isEmpty(group2.getGroup_id())){
+                    return;
+                }
+                long chatID = Long.parseLong(group2.getGroup_id());
+                ConcurrentHashMap<Long, TLRPC.Chat> chats = getMessagesController().getChats();
+                TLRPC.Chat chat = chats.get(chatID);
+                if (chat != null) {
+                    Bundle bundle = new Bundle();
+                    bundle.putLong("chat_id", chatID);
+                    presentFragment(new ChatActivity(bundle));
+                } else {
+                    if (alertDialog != null) {
+                        alertDialog.show();
+                    }
+                    if (!TextUtils.isEmpty(group2.private_link)) {
+                        newSkipUrl(group2.private_link);
+
+                    } else {
+                        if (!TextUtils.isEmpty(group2.public_link)) {
+                            newSkipUrl("https://t.me/" + group2.public_link);
+                        } else {
+                            if (alertDialog != null) {
+                                alertDialog.dismiss();
+                            }
+                            ToastUtil.show(getParentActivity(), LocaleController.getString(R.string.CdExpiredGroup));
+                        }
+                    }
+                }
+            }
+        });
+
+    }
+    public void newSkipUrl(String finalWorkingText) {
+        if (finalWorkingText.contains("https://t.me/")) {
+            int index = finalWorkingText.indexOf("https://t.me/");
+            int end = finalWorkingText.indexOf(" ", index);
+            String gName;
+            String group = "";
+            if (end != -1) {
+                gName = finalWorkingText.substring(index + "https://t.me/".length(), end);
+            } else {
+                gName = finalWorkingText.substring(index + "https://t.me/".length());
+            }
+            if (gName.startsWith("+")) {
+                group = gName.replace("+", "");
+                if (AndroidUtilities.isNumeric(group)) {
+                    gName = group;
+                    group = null;
+                }
+            }
+            if (TextUtils.isEmpty(group)) {
+                if (gName != null) {
+                    TLObject req;
+                    if (AndroidUtilities.isNumeric(gName)) {
+                        TLRPC.TL_contacts_resolvePhone resolvePhone = new TLRPC.TL_contacts_resolvePhone();
+                        resolvePhone.phone = gName;
+                        req = resolvePhone;
+                    } else {
+                        TLRPC.TL_contacts_resolveUsername resolveUsername = new TLRPC.TL_contacts_resolveUsername();
+                        resolveUsername.username = gName;
+                        req = resolveUsername;
+                    }
+
+                    ConnectionsManager.getInstance(0).sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> {
+                        if (alertDialog != null) {
+                            alertDialog.dismiss();
+                        }
+                        TLRPC.TL_contacts_resolvedPeer res = (TLRPC.TL_contacts_resolvedPeer) response;
+                        if (error == null && res != null && res.users != null) {
+                            MessagesController.getInstance(0).putUsers(res.users, false);
+                            MessagesController.getInstance(0).putChats(res.chats, false);
+                            MessagesStorage.getInstance(0).putUsersAndChats(res.users, res.chats, false, true);
+                            Bundle args = new Bundle();
+                            if (!res.chats.isEmpty()) {
+                                args.putLong("chat_id", res.chats.get(0).id);
+                            } else {
+                                args.putLong("user_id", res.users.get(0).id);
+                            }
+                            presentFragment(new ChatActivity(args));
+                            System.out.println("rqwerwqer    1");
+                        } else {
+                            ToastUtil.show(getParentActivity(), LocaleController.getString("ExpiredLink", R.string.ExpiredLink));
+                        }
+                    }));
+                }
+            } else {
+                final TLRPC.TL_messages_checkChatInvite req = new TLRPC.TL_messages_checkChatInvite();
+                req.hash = group;
+                String finalGroup = group;
+                ConnectionsManager.getInstance(0).sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> {
+                    if (alertDialog != null) {
+                        alertDialog.dismiss();
+                    }
+                    if (error == null) {
+                        TLRPC.ChatInvite invite = (TLRPC.ChatInvite) response;
+                        if (invite.chat != null && (!ChatObject.isLeftFromChat(invite.chat) || !invite.chat.kicked && (!TextUtils.isEmpty(invite.chat.username) || invite instanceof TLRPC.TL_chatInvitePeek || invite.chat.has_geo))) {
+                            MessagesController.getInstance(0).putChat(invite.chat, false);
+                            ArrayList<TLRPC.Chat> chats = new ArrayList<>();
+                            chats.add(invite.chat);
+                            MessagesStorage.getInstance(0).putUsersAndChats(null, chats, false, true);
+                            Bundle args = new Bundle();
+                            args.putLong("chat_id", invite.chat.id);
+                            presentFragment(new ChatActivity(args));
+                            System.out.println("rqwerwqer    2");
+                        } else {
+                            System.out.println("rqwerwqer    3");
+                            showDialog(new JoinGroupAlert(getContext(), invite, finalGroup, this, null));
+                        }
+                    } else {
+                        ToastUtil.show(getContext(), LocaleController.getString("ExpiredLink", R.string.ExpiredLink));
+                    }
+                }));
+            }
+        }
+    }
 
     @Override
     public void onStop() {

+ 2 - 4
TMessagesProj/src/main/java/org/telegram/cricdit/ui/RankDetailCommentFragment.java

@@ -51,6 +51,7 @@ import org.telegram.cricdit.bean.MainCommendListBean;
 import org.telegram.cricdit.bean.MoreCommendBean;
 import org.telegram.cricdit.bean.MultiItemEntity;
 import org.telegram.cricdit.bean.NewsBean;
+import org.telegram.cricdit.bean.NewsItemBean;
 import org.telegram.cricdit.bean.RankDetailBean;
 import org.telegram.cricdit.bean.RankVoteEvent;
 import org.telegram.cricdit.bean.ReplyBean;
@@ -965,7 +966,6 @@ public class RankDetailCommentFragment extends BaseActivity<CommentPresenter> im
         tvGroupName.setTextColor(ColorUtil.COLOR_WHITE);
         tvGroupCount.setTextColor(ColorUtil.COLOR_WHITE);
         tvCommentsNum.setTextColor(ColorUtil.COLOR_BLACK_TEXT);
-        viewGroup.setBackgroundColor(ColorUtil.COLOR_WHITE);
         viewLine.setBackgroundColor(ColorUtil.COLOR_LINE_GRAY);
         GradientDrawable gd = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[]{ColorUtil.COLOR_BLUE_ACTIONBAR});
         gd.setShape(GradientDrawable.RECTANGLE);
@@ -1021,8 +1021,6 @@ public class RankDetailCommentFragment extends BaseActivity<CommentPresenter> im
                     .placeholder(R.drawable.img_rank_group_empty)
                     .error(R.drawable.img_rank_group_empty)
                     .into(ivGroup);
-            tvGroupName.setText(groupBean.getGroup_name());
-            tvGroupCount.setVisibility(View.VISIBLE);
         } else {
             rlGroup.setVisibility(View.GONE);
         }
@@ -1081,7 +1079,7 @@ public class RankDetailCommentFragment extends BaseActivity<CommentPresenter> im
     }
 
     @Override
-    public void showDetail(NewsBean.NewsFeedBean bean) {
+    public void showDetail(NewsItemBean bean) {
 
     }
 

+ 0 - 1
TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java

@@ -87,7 +87,6 @@ import org.telegram.cricdit.net.ApiService;
 import org.telegram.cricdit.net.Parameter;
 import org.telegram.cricdit.net.RetrofitClient;
 import org.telegram.cricdit.service.SyncDataService;
-import org.telegram.cricdit.ui.NewsDetailActivity;
 import org.telegram.cricdit.ui.NewsDetailCommentFragment;
 import org.telegram.cricdit.utils.AppInfoUtils;
 import org.telegram.cricdit.utils.GsonHel;

+ 151 - 0
TMessagesProj/src/main/res/layout/activity_news_detail_comment.xml

@@ -168,6 +168,157 @@
                 android:gravity="center"
                 android:text="@string/end" />
 
+            <RelativeLayout
+                android:id="@+id/rl_group"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="17dp"
+                android:layout_marginTop="20dp"
+                android:layout_marginRight="15dp"
+                android:layout_marginBottom="@dimen/dp_10"
+                android:visibility="gone">
+
+                <View
+                    android:id="@+id/view_group"
+                    android:layout_width="match_parent"
+                    android:layout_height="105dp"
+                    android:layout_marginLeft="20dp"
+                    android:layout_marginTop="16dp"
+                    android:layout_marginRight="4dp"
+                    android:layout_marginBottom="16dp"/>
+
+                <ImageView
+                    android:id="@+id/iv_group"
+                    android:layout_width="92dp"
+                    android:layout_height="95dp"
+                    android:scaleType="centerCrop"
+                    android:src="@drawable/img_rank_group_empty" />
+
+                <TextView
+                    android:id="@+id/tv_join_info"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignParentTop="true"
+                    android:layout_marginLeft="13dp"
+                    android:layout_marginTop="25dp"
+                    android:layout_toRightOf="@+id/iv_group"
+                    style="@style/TvItemTitleStyle"
+                    android:textColor="@color/white"
+                    android:textSize="@dimen/sp_14" />
+
+                <TextView
+                    android:id="@+id/tv_join_group_name"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignLeft="@+id/tv_join_info"
+                    android:layout_centerVertical="true"
+                    android:layout_toLeftOf="@+id/iv_group_arrow"
+                    android:ellipsize="end"
+                    android:maxLines="2"
+                    android:paddingTop="5dp"
+                    style="@style/TvNormalStyle"
+                    android:textColor="@color/white"/>
+
+                <TextView
+                    android:id="@+id/tv_join_group_count"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignLeft="@+id/tv_join_info"
+                    android:layout_alignBottom="@id/view_group"
+                    android:layout_marginBottom="15dp"
+                    style="@style/TvNumStyle"
+                    android:textSize="@dimen/sp_14"
+                    android:textColor="@color/white"/>
+
+                <ImageView
+                    android:id="@+id/iv_group_arrow"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignParentRight="true"
+                    android:layout_centerVertical="true"
+                    android:layout_marginRight="5dp"
+                    android:paddingLeft="20dp"
+                    android:paddingTop="20dp"
+                    android:paddingBottom="20dp"
+                    android:src="@drawable/msg_arrowright" />
+
+            </RelativeLayout>
+
+            <RelativeLayout
+                android:id="@+id/rl_group2"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="17dp"
+                android:layout_marginRight="15dp"
+                android:layout_marginBottom="@dimen/dp_10"
+                android:visibility="gone">
+
+                <View
+                    android:id="@+id/view_group2"
+                    android:layout_width="match_parent"
+                    android:layout_height="105dp"
+                    android:layout_marginLeft="20dp"
+                    android:layout_marginTop="16dp"
+                    android:layout_marginRight="4dp"
+                    android:layout_marginBottom="16dp"/>
+
+                <ImageView
+                    android:id="@+id/iv_group2"
+                    android:layout_width="92dp"
+                    android:layout_height="95dp"
+                    android:scaleType="centerCrop"
+                    android:src="@drawable/img_rank_group_empty" />
+
+                <TextView
+                    android:id="@+id/tv_join_info2"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignParentTop="true"
+                    android:layout_marginLeft="13dp"
+                    android:layout_marginTop="25dp"
+                    android:layout_toRightOf="@+id/iv_group2"
+                    style="@style/TvItemTitleStyle"
+                    android:textColor="@color/white"
+                    android:textSize="@dimen/sp_14" />
+
+                <TextView
+                    android:id="@+id/tv_join_group_name2"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignLeft="@+id/tv_join_info2"
+                    android:layout_centerVertical="true"
+                    android:layout_toLeftOf="@+id/iv_group_arrow2"
+                    android:ellipsize="end"
+                    android:maxLines="2"
+                    android:paddingTop="5dp"
+                    style="@style/TvNormalStyle"
+                    android:textColor="@color/white"/>
+
+                <TextView
+                    android:id="@+id/tv_join_group_count2"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignLeft="@+id/tv_join_info2"
+                    android:layout_alignBottom="@id/view_group2"
+                    android:layout_marginBottom="15dp"
+                    style="@style/TvNumStyle"
+                    android:textSize="@dimen/sp_14"
+                    android:textColor="@color/white"/>
+
+                <ImageView
+                    android:id="@+id/iv_group_arrow2"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignParentRight="true"
+                    android:layout_centerVertical="true"
+                    android:layout_marginRight="5dp"
+                    android:paddingLeft="20dp"
+                    android:paddingTop="20dp"
+                    android:paddingBottom="20dp"
+                    android:src="@drawable/msg_arrowright" />
+
+            </RelativeLayout>
+
             <View
                 android:id="@+id/view_line"
                 android:layout_width="match_parent"

+ 2 - 1
TMessagesProj/src/main/res/layout/activity_rank_detail_comment.xml

@@ -37,6 +37,7 @@
                 android:layout_marginLeft="17dp"
                 android:layout_marginTop="50dp"
                 android:layout_marginRight="15dp"
+                android:layout_marginBottom="10dp"
                 android:visibility="gone">
 
                 <View
@@ -105,7 +106,7 @@
             <View
                 android:id="@+id/view_line"
                 android:layout_width="match_parent"
-                android:layout_height="0.5dp" />
+                android:layout_height="8dp" />
 
             <TextView
                 android:id="@+id/tv_comments_num"

+ 20 - 0
TMessagesProj_App/bundleAfat_SDK23/release/output-metadata.json

@@ -0,0 +1,20 @@
+{
+  "version": 3,
+  "artifactType": {
+    "type": "APK",
+    "kind": "Directory"
+  },
+  "applicationId": "com.cricdit.cricdit",
+  "variantName": "bundleAfat_SDK23Release",
+  "elements": [
+    {
+      "type": "SINGLE",
+      "filters": [],
+      "attributes": [],
+      "versionCode": 13,
+      "versionName": "0.1.2",
+      "outputFile": "Cricdit0.1.2.apk"
+    }
+  ],
+  "elementType": "File"
+}