ソースを参照

评论列表开发

huyuguo 5 年 前
コミット
f748bbe347

+ 18 - 6
app/src/main/java/com/electric/chargingpile/activity/ChatContentListActivity.java

@ -2,6 +2,7 @@ package com.electric.chargingpile.activity;
2 2
3 3
import android.content.BroadcastReceiver;
4 4
import android.content.Intent;
5
import android.graphics.Color;
5 6
import android.os.Handler;
6 7
import android.os.Message;
7 8
import android.support.annotation.Nullable;
@ -34,6 +35,7 @@ import com.electric.chargingpile.data.ChatBeanLab;
34 35
import com.electric.chargingpile.data.ChatRecommendBean;
35 36
import com.electric.chargingpile.data.TopicDetailBeanLab;
36 37
import com.electric.chargingpile.data.UserPageBeanLab;
38
import com.electric.chargingpile.fragment.ChatContentCommentListDialogFragment;
37 39
import com.electric.chargingpile.fragment.ChatPhotoFragment;
38 40
import com.electric.chargingpile.fragment.CommonDialogFragment;
39 41
import com.electric.chargingpile.iview.ChatVerticalViewPager;
@ -232,16 +234,19 @@ public class ChatContentListActivity extends AppCompatActivity {
232 234
    public class ChatContentAdapter extends FragmentStatePagerAdapter {
233 235
234 236
        public Map<String, ChatContentFragment> map = new HashMap<>();
237
        private FragmentManager fm;
235 238
        private Handler handler;
236 239
237 240
        public ChatContentAdapter(FragmentManager fm, Handler handler) {
238 241
            super(fm);
242
            this.fm = fm;
239 243
            this.handler = handler;
240 244
        }
241 245
242 246
        @Override
243 247
        public android.support.v4.app.Fragment getItem(int i) {
244 248
            ChatContentFragment fragment = ChatContentFragment.newInstance(i, from);
249
            fragment.fm = fm;
245 250
            fragment.handler = handler;
246 251
            map.put(i + "", fragment);
247 252
            return fragment;
@ -262,6 +267,7 @@ public class ChatContentListActivity extends AppCompatActivity {
262 267
263 268
264 269
    public static class ChatContentFragment extends Fragment implements View.OnClickListener {
270
        private FragmentManager fm;
265 271
        private Handler handler;
266 272
        private static final String ARG_INDEX = "index";
267 273
        private static final String ARG_FROM = "from";
@ -293,6 +299,7 @@ public class ChatContentListActivity extends AppCompatActivity {
293 299
        private List<ChatPhotoFragment> chatPhotoFragments;
294 300
        private ChatPhotoFragmentPagerAdapter chatPhotoFragmentPagerAdapter;
295 301
        private TextView bCommentContent;
302
        private TextView bPublish;
296 303
297 304
        public static ChatContentFragment newInstance(int index, String from) {
298 305
            ChatContentFragment fragment = new ChatContentFragment();
@ -451,8 +458,11 @@ public class ChatContentListActivity extends AppCompatActivity {
451 458
                    break;
452 459
                case R.id.writeComment: // 评论列表
453 460
                case R.id.comment:
454
                    setViewPagerScroll(false);
455
                    allCommentsContainer.setVisibility(View.VISIBLE);
461
//                    bean.commentNums
462
                    //setViewPagerScroll(false);
463
                    //allCommentsContainer.setVisibility(View.VISIBLE);
464
                    ChatContentCommentListDialogFragment dialogFragment = ChatContentCommentListDialogFragment.newInstance(bean);
465
                    dialogFragment.show(getChildFragmentManager(), "评论列表");
456 466
                    break;
457 467
                case R.id.allCommentsClose: // 关闭评论
458 468
                case R.id.allCommentsContainer:
@ -467,12 +477,16 @@ public class ChatContentListActivity extends AppCompatActivity {
467 477
                        @Override
468 478
                        public void updateComment(String comment) {
469 479
                            bCommentContent.setText(comment);
480
                            if (comment.length() > 0) {
481
                                bPublish.setTextColor(Color.parseColor("#00EDB2"));
482
                            } else {
483
                                bPublish.setTextColor(Color.parseColor("#7e7e7e"));
484
                            }
470 485
                        }
471 486
472 487
                        @Override
473 488
                        public void publish() {
474 489
                            Log.d(TAG, "publish: xxxxxxxxxxxxxx");
475
476 490
                        }
477 491
                    });
478 492
                    break;
@ -511,6 +525,7 @@ public class ChatContentListActivity extends AppCompatActivity {
511 525
            allCommentsContainer = rootView.findViewById(R.id.allCommentsContainer);
512 526
            allComments = rootView.findViewById(R.id.allComments);
513 527
            bCommentContent = rootView.findViewById(R.id.bCommentContent);
528
            bPublish = rootView.findViewById(R.id.bPublish);
514 529
515 530
            ConstraintLayout.LayoutParams statusBarParams = (ConstraintLayout.LayoutParams) statusBar.getLayoutParams();
516 531
            statusBarParams.height = statusBarHeight;
@ -565,9 +580,6 @@ public class ChatContentListActivity extends AppCompatActivity {
565 580
566 581
            topicTitle.setMaxWidth(screenWidth - DensityUtil.dip2px(getContext(), 100));
567 582
568
            msg.setText("都是老款附件是打开了附近看落地时间付款了的设计费考虑到司法鉴定所可是大家放开了世纪东方可是大家开飞机圣诞快乐风骚的收到了快捷方式迪克辣鸡福克斯第六届逢狼时刻大嫁风尚了会计师的反馈了十多斤狂蜂浪蝶涉及开发了十多斤圣诞快乐附件是大立科技发");
569
            topicTitle.setText("打扫房间莱克斯顿及反馈了十多斤放开了时代峻峰看电视剧范德萨看来酒发牢骚的sfsdsdfdsf");
570
571 583
            if (bean.commentNums == 0) {
572 584
                commentNumber.setText("");
573 585
            } else {

+ 57 - 0
app/src/main/java/com/electric/chargingpile/fragment/ChatContentCommentListDialogFragment.java

@ -0,0 +1,57 @@
1
package com.electric.chargingpile.fragment;
2
3
import android.app.Dialog;
4
import android.os.Bundle;
5
import android.support.annotation.NonNull;
6
import android.support.annotation.Nullable;
7
import android.support.v4.app.DialogFragment;
8
import android.view.Gravity;
9
import android.view.LayoutInflater;
10
import android.view.View;
11
import android.view.ViewGroup;
12
import android.view.Window;
13
import android.view.WindowManager;
14
15
import com.electric.chargingpile.R;
16
import com.electric.chargingpile.data.ChatRecommendBean;
17
18
public class ChatContentCommentListDialogFragment extends DialogFragment {
19
    private static final String ARG_BEAN = "bean";
20
    private ChatRecommendBean bean;
21
22
    public static ChatContentCommentListDialogFragment newInstance(ChatRecommendBean bean) {
23
        Bundle args = new Bundle();
24
        args.putSerializable(ARG_BEAN, bean);
25
        ChatContentCommentListDialogFragment dialogFragment = new ChatContentCommentListDialogFragment();
26
        dialogFragment.setArguments(args);
27
        return dialogFragment;
28
    }
29
30
    @NonNull
31
    @Override
32
    public Dialog onCreateDialog(Bundle savedInstanceState) {
33
        Dialog dialog = new Dialog(getActivity(), R.style.BottomDialog);
34
        // 外部点击设置为可取消
35
        dialog.setCancelable(true);
36
        dialog.setCanceledOnTouchOutside(true);
37
38
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
39
        dialog.setContentView(R.layout.fragment_chat_content_comment_list);
40
41
        Window window = dialog.getWindow();
42
        WindowManager.LayoutParams layoutParams = window.getAttributes();
43
        // 布局属性位于整个窗口底部
44
        layoutParams.gravity = Gravity.BOTTOM;
45
        // 布局属性宽度填充整个窗口,默认是有margin的
46
        layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
47
        window.setAttributes(layoutParams);
48
49
        initDialog(dialog);
50
        return dialog;
51
    }
52
53
54
    private void initDialog(Dialog dialog) {
55
        bean = (ChatRecommendBean) getArguments().getSerializable(ARG_BEAN);
56
    }
57
}

+ 1 - 7
app/src/main/java/com/electric/chargingpile/fragment/ChatPhotoFragment.java

@ -3,17 +3,11 @@ package com.electric.chargingpile.fragment;
3 3
import android.os.Bundle;
4 4
import android.support.annotation.Nullable;
5 5
import android.support.v4.app.Fragment;
6
import android.util.Log;
7
import android.view.GestureDetector;
8 6
import android.view.LayoutInflater;
9
import android.view.MotionEvent;
10 7
import android.view.View;
11 8
import android.view.ViewGroup;
12
import android.widget.ImageView;
13 9
14 10
import com.electric.chargingpile.R;
15
import com.electric.chargingpile.util.CircleTransform;
16
import com.electric.chargingpile.util.ImageDisplayUtils;
17 11
import com.github.chrisbanes.photoview.PhotoView;
18 12
import com.squareup.picasso.Picasso;
19 13
@ -68,7 +62,7 @@ public class ChatPhotoFragment extends Fragment {
68 62
69 63
    private void initView(View rootView, String url) {
70 64
        photoView = rootView.findViewById(R.id.photoView);
71
//        ImageDisplayUtils.dispalyImg(getContext(), url, photoView);
65
72 66
        Picasso.with(getContext()).load(url).placeholder(R.drawable.photo_loading_icon).error(R.drawable.photo_loading_icon).into(photoView);
73 67
    }
74 68
}

+ 58 - 20
app/src/main/java/com/electric/chargingpile/fragment/CommonDialogFragment.java

@ -3,6 +3,7 @@ package com.electric.chargingpile.fragment;
3 3
import android.app.Dialog;
4 4
import android.graphics.Color;
5 5
import android.os.Bundle;
6
import android.support.constraint.ConstraintLayout;
6 7
import android.support.v4.app.DialogFragment;
7 8
import android.text.Editable;
8 9
import android.text.TextWatcher;
@ -13,18 +14,23 @@ import android.view.Window;
13 14
import android.view.WindowManager;
14 15
import android.view.inputmethod.InputMethodManager;
15 16
import android.widget.EditText;
17
import android.widget.ImageView;
16 18
import android.widget.TextView;
17 19
18 20
import com.electric.chargingpile.R;
19 21
import com.electric.chargingpile.iview.SoftKeyBoardListener;
22
import com.electric.chargingpile.util.DensityUtil;
20 23
21
public class CommonDialogFragment extends DialogFragment implements View.OnClickListener {
24
public class CommonDialogFragment extends DialogFragment {
22 25
    private static final String TAG = "CommonDialogFragment";
23 26
    private static final String ARG_COMMENT = "comment";
24 27
    private Dialog dialogFragment;
25 28
    private EditText editText;
26 29
    private TextView send;
27 30
    public OnCommonDialogFragmentListener commonDialogFragmentListener;
31
    private ImageView dialogIcon;
32
    private ConstraintLayout countInfo;
33
    private TextView count;
28 34
29 35
    public static CommonDialogFragment newInstance(String comment) {
30 36
        CommonDialogFragment dialogFragment = new CommonDialogFragment();
@ -54,9 +60,27 @@ public class CommonDialogFragment extends DialogFragment implements View.OnClick
54 60
        layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
55 61
        window.setAttributes(layoutParams);
56 62
63
        countInfo = dialogFragment.findViewById(R.id.countInfo);
64
        count = dialogFragment.findViewById(R.id.count);
65
        dialogIcon = dialogFragment.findViewById(R.id.dialogIcon);
57 66
        editText = dialogFragment.findViewById(R.id.dialogEdit);
67
        send = dialogFragment.findViewById(R.id.dialogPublish);
68
58 69
        editText.setText(comment);
59 70
        editText.setSelection(comment.length());
71
72
        updateView(comment);
73
74
        send.setOnClickListener(new View.OnClickListener() {
75
            @Override
76
            public void onClick(View view) {
77
                if (commonDialogFragmentListener != null && editText.getText().toString().trim().length() > 0) {
78
                    dismiss();
79
                    commonDialogFragmentListener.publish();
80
                }
81
            }
82
        });
83
60 84
        editText.addTextChangedListener(new TextWatcher() {
61 85
            @Override
62 86
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
@ -65,11 +89,12 @@ public class CommonDialogFragment extends DialogFragment implements View.OnClick
65 89
            @Override
66 90
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
67 91
                String comment = charSequence.toString().trim();
68
                if (comment.length() > 0) {
69
                    send.setTextColor(Color.parseColor("#00EDB2"));
70
                } else {
71
                    send.setTextColor(Color.parseColor("#7e7e7e"));
92
                if (comment.length() > 200) {
93
                    comment = comment.substring(0, 200);
94
                    editText.setText(comment);
95
                    editText.setSelection(comment.length());
72 96
                }
97
                updateView(comment);
73 98
                if (commonDialogFragmentListener != null) {
74 99
                    commonDialogFragmentListener.updateComment(comment);
75 100
                }
@ -80,14 +105,10 @@ public class CommonDialogFragment extends DialogFragment implements View.OnClick
80 105
81 106
            }
82 107
        });
83
        send = dialogFragment.findViewById(R.id.dialogPublish);
84
        send.setOnClickListener(this);
85 108
86
        //打开软键盘
87
        InputMethodManager imm = (InputMethodManager)getActivity().getSystemService(getContext().INPUT_METHOD_SERVICE);
109
        // 键盘打开隐藏监听
110
        InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(getContext().INPUT_METHOD_SERVICE);
88 111
        imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
89
90
91 112
        SoftKeyBoardListener.setListener(getActivity(), new SoftKeyBoardListener.OnSoftKeyBoardChangeListener() {
92 113
            @Override
93 114
            public void keyBoardShow(int height) {
@ -102,20 +123,37 @@ public class CommonDialogFragment extends DialogFragment implements View.OnClick
102 123
        return dialogFragment;
103 124
    }
104 125
105
    @Override
106
    public void onClick(View view) {
107
        switch (view.getId()) {
108
            case R.id.dialogPublish:
109
                if (commonDialogFragmentListener != null && editText.getText().toString().trim().length() > 0) {
110
                    dismiss();
111
                    commonDialogFragmentListener.publish();
112
                }
113
                break;
126
127
    private void updateView(String comment) {
128
        ConstraintLayout.LayoutParams editParams = (ConstraintLayout.LayoutParams) editText.getLayoutParams();
129
130
        if (comment.length() > 0) {
131
            dialogIcon.setVisibility(View.GONE);
132
            send.setTextColor(Color.parseColor("#00EDB2"));
133
134
            countInfo.setVisibility(View.VISIBLE);
135
            editParams.bottomMargin = DensityUtil.dip2px(getContext(), 20);
136
        } else {
137
            dialogIcon.setVisibility(View.VISIBLE);
138
            send.setTextColor(Color.parseColor("#7e7e7e"));
139
140
            countInfo.setVisibility(View.GONE);
141
            editParams.bottomMargin = DensityUtil.dip2px(getContext(), 0);
114 142
        }
143
144
        if (comment.length() == 200) {
145
            count.setTextColor(Color.parseColor("#FF5858"));
146
        } else {
147
            count.setTextColor(Color.parseColor("#ffffff"));
148
        }
149
150
        count.setText(comment.length() + "");
151
        editText.setLayoutParams(editParams);
115 152
    }
116 153
117 154
    public interface OnCommonDialogFragmentListener {
118 155
        void updateComment(String comment);
156
119 157
        void publish();
120 158
    }
121 159

+ 2 - 0
app/src/main/res/layout/fragment_chat_content_comment_list.xml

@ -5,6 +5,7 @@
5 5
    xmlns:tools="http://schemas.android.com/tools"
6 6
    android:layout_width="match_parent"
7 7
    android:layout_height="match_parent"
8
    android:background="#ff00ff"
8 9
    tools:background="#68b8be">
9 10
10 11
    <android.support.constraint.ConstraintLayout
@ -83,6 +84,7 @@
83 84
                    android:layout_height="wrap_content"
84 85
                    android:ellipsize="end"
85 86
                    android:gravity="center_vertical"
87
                    android:paddingLeft="5dp"
86 88
                    android:hint="写评论"
87 89
                    android:maxLines="1"
88 90
                    android:textColor="#ffffff"

+ 5 - 0
app/src/main/res/layout/fragment_chat_content_pictures.xml

@ -366,4 +366,9 @@
366 366
    <include
367 367
        layout="@layout/fragment_chat_content_comment_list"
368 368
        android:visibility="gone" />
369
    <FrameLayout
370
        android:id="@+id/fragment_container"
371
        android:layout_width="match_parent"
372
        android:layout_height="match_parent">
373
    </FrameLayout>
369 374
</android.support.constraint.ConstraintLayout>

+ 5 - 0
app/src/main/res/layout/fragment_chat_content_video.xml

@ -382,4 +382,9 @@
382 382
    <include
383 383
        layout="@layout/fragment_chat_content_comment_list"
384 384
        android:visibility="gone" />
385
    <FrameLayout
386
        android:id="@+id/fragment_container"
387
        android:layout_width="match_parent"
388
        android:layout_height="match_parent">
389
    </FrameLayout>
385 390
</android.support.constraint.ConstraintLayout>

+ 51 - 9
app/src/main/res/layout/fragment_common_dialog.xml

@ -3,7 +3,6 @@
3 3
    xmlns:app="http://schemas.android.com/apk/res-auto"
4 4
    xmlns:tools="http://schemas.android.com/tools"
5 5
    android:layout_width="match_parent"
6
    android:background="#00f00f"
7 6
    android:layout_height="match_parent">
8 7
9 8
    <!-- 底部评论输入及发布 -->
@ -12,6 +11,8 @@
12 11
        android:layout_height="wrap_content"
13 12
        android:background="#535353"
14 13
        android:minHeight="54dp"
14
        android:paddingTop="12dp"
15
        android:paddingBottom="12dp"
15 16
        app:layout_constraintBottom_toBottomOf="parent"
16 17
        app:layout_constraintEnd_toEndOf="parent"
17 18
        app:layout_constraintStart_toStartOf="parent">
@ -19,9 +20,12 @@
19 20
        <android.support.constraint.ConstraintLayout
20 21
            android:id="@+id/bWriteComment"
21 22
            android:layout_width="0dp"
22
            android:layout_height="30dp"
23
            android:layout_height="wrap_content"
23 24
            android:layout_marginLeft="15dp"
24 25
            android:background="@drawable/bg_comment_shape"
26
            android:minHeight="30dp"
27
            android:paddingTop="5dp"
28
            android:paddingBottom="5dp"
25 29
            app:layout_constraintBottom_toBottomOf="parent"
26 30
            app:layout_constraintLeft_toLeftOf="parent"
27 31
            app:layout_constraintRight_toLeftOf="@+id/dialogPublish"
@ -32,7 +36,6 @@
32 36
                android:layout_width="wrap_content"
33 37
                android:layout_height="wrap_content"
34 38
                android:layout_marginStart="15dp"
35
                android:paddingRight="5dp"
36 39
                app:layout_constraintBottom_toBottomOf="parent"
37 40
                app:layout_constraintStart_toStartOf="parent"
38 41
                app:layout_constraintTop_toTopOf="parent"
@ -40,24 +43,65 @@
40 43
41 44
            <EditText
42 45
                android:id="@+id/dialogEdit"
43
                android:background="@null"
44 46
                android:layout_width="0dp"
45 47
                android:layout_height="wrap_content"
48
                android:background="@null"
49
                android:fadeScrollbars="false"
50
                android:gravity="start|top"
46 51
                android:hint="优质评论会被优先展示"
52
                android:inputType="textMultiLine"
53
                android:maxLines="3"
54
                android:paddingLeft="8dp"
55
                android:paddingRight="5dp"
56
                android:scrollbarStyle="outsideOverlay"
57
                android:scrollbars="vertical"
47 58
                android:textColor="#ffffff"
48 59
                android:textColorHint="#7e7e7e"
49 60
                android:textSize="14sp"
50 61
                app:layout_constraintBottom_toBottomOf="parent"
51
                app:layout_constraintRight_toRightOf="parent"
52 62
                app:layout_constraintLeft_toRightOf="@+id/dialogIcon"
63
                app:layout_constraintRight_toRightOf="parent"
53 64
                app:layout_constraintTop_toTopOf="parent" />
65
66
            <android.support.constraint.ConstraintLayout
67
                android:id="@+id/countInfo"
68
                android:layout_width="wrap_content"
69
                android:layout_height="wrap_content"
70
                android:layout_marginRight="10dp"
71
                android:visibility="gone"
72
                app:layout_constraintBottom_toBottomOf="parent"
73
                app:layout_constraintRight_toRightOf="parent">
74
75
                <TextView
76
                    android:id="@+id/count"
77
                    android:layout_width="wrap_content"
78
                    android:layout_height="wrap_content"
79
                    android:textColor="#ffffff"
80
                    android:textSize="12sp"
81
                    app:layout_constraintBottom_toBottomOf="parent"
82
                    app:layout_constraintLeft_toLeftOf="parent"
83
                    app:layout_constraintTop_toTopOf="parent"
84
                    tools:text="22" />
85
86
                <TextView
87
                    android:layout_width="wrap_content"
88
                    android:layout_height="wrap_content"
89
                    android:text="/200"
90
                    android:textColor="#ffffff"
91
                    android:textSize="12sp"
92
                    app:layout_constraintBottom_toBottomOf="parent"
93
                    app:layout_constraintLeft_toRightOf="@+id/count"
94
                    app:layout_constraintRight_toRightOf="parent"
95
                    app:layout_constraintTop_toTopOf="parent" />
96
            </android.support.constraint.ConstraintLayout>
54 97
        </android.support.constraint.ConstraintLayout>
55 98
56 99
        <TextView
57 100
            android:id="@+id/dialogPublish"
58 101
            android:layout_width="wrap_content"
59
            android:layout_height="0dp"
102
            android:layout_height="wrap_content"
60 103
            android:gravity="center_vertical"
104
            android:minHeight="30dp"
61 105
            android:paddingLeft="13dp"
62 106
            android:paddingRight="15dp"
63 107
            android:text="发布"
@ -65,9 +109,7 @@
65 109
            android:textSize="14sp"
66 110
            app:layout_constraintBottom_toBottomOf="parent"
67 111
            app:layout_constraintRight_toRightOf="parent"
68
            app:layout_constraintTop_toTopOf="parent"
69
            tools:layout_editor_absoluteX="348dp"
70
            tools:layout_editor_absoluteY="19dp" />
112
            app:layout_constraintTop_toTopOf="parent" />
71 113
    </android.support.constraint.ConstraintLayout>
72 114
73 115
</android.support.constraint.ConstraintLayout>