chenbin 4 år sedan
förälder
incheckning
56485ff0dd

+ 232
- 8
app/src/main/java/com/tianrun/sipcall/call/InCallMeetingActivity.java Visa fil

@@ -5,6 +5,7 @@ import android.annotation.SuppressLint;
5 5
 import android.app.Activity;
6 6
 import android.app.KeyguardManager;
7 7
 import android.content.Context;
8
+import android.content.DialogInterface;
8 9
 import android.content.Intent;
9 10
 import android.graphics.Color;
10 11
 import android.os.Bundle;
@@ -28,6 +29,8 @@ import com.alibaba.fastjson.JSONArray;
28 29
 import com.alibaba.fastjson.JSONObject;
29 30
 import com.qmuiteam.qmui.skin.QMUISkinManager;
30 31
 import com.qmuiteam.qmui.util.QMUIDisplayHelper;
32
+import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
33
+import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
31 34
 import com.qmuiteam.qmui.widget.dialog.QMUITipDialog;
32 35
 import com.qmuiteam.qmui.widget.popup.QMUIPopups;
33 36
 import com.qmuiteam.qmui.widget.popup.QMUIQuickAction;
@@ -36,7 +39,9 @@ import com.qmuiteam.qmui.widget.tab.QMUITabIndicator;
36 39
 import com.qmuiteam.qmui.widget.tab.QMUITabSegment;
37 40
 import com.tianrun.sipcall.R;
38 41
 import com.tianrun.sipcall.SipEngine;
42
+import com.tianrun.sipcall.db.DBGroup;
39 43
 import com.tianrun.sipcall.db.DBUser;
44
+import com.tianrun.sipcall.db.UserMeetingViews;
40 45
 import com.tianrun.sipcall.db.UserViews;
41 46
 import com.tianrun.sipcall.net.Net;
42 47
 import com.tianrun.sipcall.ui.TrAdapter;
@@ -64,6 +69,7 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
64 69
     private SMPercentFrameLayout localRenderLayout;
65 70
     private SMPercentFrameLayout remoteRenderLayout;
66 71
     private ImageButton incall_answer, incall_hangup;
72
+    private View imageButtonAddUser;
67 73
     private TextView show;
68 74
     GridView gridUser;
69 75
     QMUITabSegment mTabSegment;
@@ -72,11 +78,13 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
72 78
     private EngineServer engineServer;
73 79
 
74 80
     private int callid = -1;//当前通话的id
81
+    private String meetingName = "";
75 82
     private String callnumber = "未知";
76 83
     private String callstate = "未知";
77 84
     private int calltype = 0; //0音频1视频
78 85
     private boolean VIDEOSTATE = false;
79 86
     public static Intent incallIntent;
87
+
80 88
     TrAdapter adapterUser;
81 89
 
82 90
     List<DBUser> allUsers = new ArrayList<>();
@@ -160,6 +168,12 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
160 168
 
161 169
         mTabSegment = findViewById(R.id.ScreenType);
162 170
         mContentViewPager = findViewById(R.id.contentViewPager);
171
+        imageButtonAddUser = findViewById(R.id.imageButtonAddUser);
172
+        if (DBUser.mySelf.isManager) {
173
+            imageButtonAddUser.setVisibility(View.VISIBLE);
174
+        } else {
175
+            imageButtonAddUser.setVisibility(View.INVISIBLE);
176
+        }
163 177
     }
164 178
 
165 179
     private void initTabAndPager() {
@@ -195,18 +209,21 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
195 209
             }
196 210
         });
197 211
     }
198
-    public void getMembers()
199
-    {
212
+
213
+    public void getMembers() {
200 214
         Net.getGroupMenbers(callnumber, new HttpUtl.CallBack() {
201 215
             @Override
202 216
             public void onRequestComplete(int cmd, String result, Object orgs) {
203 217
                 JSONObject jo = JSONObject.parseObject(result);
218
+                meetingName = jo.getString("topic");
204 219
                 JSONArray array = jo.getJSONArray("members_msg");
205 220
                 allUsers.clear();
206
-                for(Object o:array) {
207
-                    allUsers.add(new DBUser((JSONObject)o));
221
+                for (Object o : array) {
222
+                    allUsers.add(new DBUser((JSONObject) o));
208 223
                 }
209 224
                 setUsers();
225
+
226
+                show.setText(meetingName + " " + callstate);
210 227
             }
211 228
 
212 229
             @Override
@@ -218,20 +235,23 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
218 235
 
219 236
     public void setUsers() {
220 237
         if (adapterUser == null) {
221
-            adapterUser = UIUtl.setList(this, gridUser, R.layout.list_item_user, allUsers, new TrAdapter.Callback() {
238
+            adapterUser = UIUtl.setList(this, gridUser, R.layout.list_item_user_meeting, allUsers, new TrAdapter.Callback() {
222 239
                 @Override
223 240
                 public void initCallback(Object data, int position, View prefabView, ViewGroup parent) {
224
-                    UserViews views = null;
241
+                    UserMeetingViews views = null;
225 242
                     if (prefabView.getTag() == null) {
226
-                        views = new UserViews();
243
+                        views = new UserMeetingViews();
227 244
                         views.textViewName = prefabView.findViewById(R.id.textViewName);
228 245
                         views.textViewNum = prefabView.findViewById(R.id.textViewNum);
229 246
                         views.imageViewStatus = prefabView.findViewById(R.id.imageViewStatus);
230 247
                         views.imageViewAddflag = prefabView.findViewById(R.id.imageViewAddflag);
231 248
                         views.imageViewPhoneIcon = prefabView.findViewById(R.id.imageView3PhoneIcon);
249
+                        views.memberStatus1 = prefabView.findViewById(R.id.memberStatus1);
250
+                        views.memberStatus2 = prefabView.findViewById(R.id.memberStatus2);
251
+                        views.memberStatus3 = prefabView.findViewById(R.id.memberStatus3);
232 252
                         prefabView.setTag(views);
233 253
                     } else {
234
-                        views = (UserViews) (prefabView.getTag());
254
+                        views = (UserMeetingViews) (prefabView.getTag());
235 255
                     }
236 256
                     DBUser d = (DBUser) data;
237 257
                     views.textViewName.setText(d.name);
@@ -256,6 +276,9 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
256 276
 
257 277
                 @Override
258 278
                 public void clickCallback(Object data, AdapterView<?> parent, View view, int position, long id) {
279
+                    if (!DBUser.mySelf.isManager) {
280
+                        return;
281
+                    }
259 282
                     DBUser d = (DBUser) data;
260 283
                     QMUIQuickAction qa = QMUIPopups.quickAction(InCallMeetingActivity.this,
261 284
                             QMUIDisplayHelper.dp2px(InCallMeetingActivity.this, 56),
@@ -265,6 +288,128 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
265 288
                             .skinManager(QMUISkinManager.defaultInstance(InCallMeetingActivity.this))
266 289
                             .edgeProtection(QMUIDisplayHelper.dp2px(InCallMeetingActivity.this, 20));
267 290
                     if (DBUser.mySelf.isManager) {
291
+                        if (d.isMute) {
292
+                            qa.addAction(new QMUIQuickAction.Action().icon(android.R.drawable.ic_delete).text("取消禁言").onClick(
293
+                                    new QMUIQuickAction.OnClickListener() {
294
+                                        @Override
295
+                                        public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) {
296
+                                            quickAction.dismiss();
297
+                                            Net.unmuteMember4Group(callnumber, d.phone, new HttpUtl.CallBack() {
298
+                                                @Override
299
+                                                public void onRequestComplete(int cmd, String result, Object orgs) {
300
+                                                    getMembers();
301
+                                                }
302
+
303
+                                                @Override
304
+                                                public void onRequestError(int cmd, String result, Object orgs) {
305
+                                                }
306
+                                            }, null);
307
+                                        }
308
+                                    }
309
+                            ));
310
+                        } else {
311
+                            qa.addAction(new QMUIQuickAction.Action().icon(android.R.drawable.ic_delete).text("禁言").onClick(
312
+                                    new QMUIQuickAction.OnClickListener() {
313
+                                        @Override
314
+                                        public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) {
315
+                                            quickAction.dismiss();
316
+                                            Net.muteMember4Group(callnumber, d.phone, new HttpUtl.CallBack() {
317
+                                                @Override
318
+                                                public void onRequestComplete(int cmd, String result, Object orgs) {
319
+                                                    getMembers();
320
+                                                }
321
+
322
+                                                @Override
323
+                                                public void onRequestError(int cmd, String result, Object orgs) {
324
+                                                }
325
+                                            }, null);
326
+                                        }
327
+                                    }
328
+                            ));
329
+                        }
330
+
331
+                        if (VIDEOSTATE) {
332
+                            if (d.isVMute) {
333
+                                qa.addAction(new QMUIQuickAction.Action().icon(android.R.drawable.ic_delete).text("回复视频").onClick(
334
+                                        new QMUIQuickAction.OnClickListener() {
335
+                                            @Override
336
+                                            public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) {
337
+                                                quickAction.dismiss();
338
+                                                Net.unvmuteMember4Group(callnumber, d.phone, new HttpUtl.CallBack() {
339
+                                                    @Override
340
+                                                    public void onRequestComplete(int cmd, String result, Object orgs) {
341
+                                                        getMembers();
342
+                                                    }
343
+
344
+                                                    @Override
345
+                                                    public void onRequestError(int cmd, String result, Object orgs) {
346
+                                                    }
347
+                                                }, null);
348
+                                            }
349
+                                        }
350
+                                ));
351
+                            } else {
352
+                                qa.addAction(new QMUIQuickAction.Action().icon(android.R.drawable.ic_delete).text("停止视频").onClick(
353
+                                        new QMUIQuickAction.OnClickListener() {
354
+                                            @Override
355
+                                            public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) {
356
+                                                quickAction.dismiss();
357
+                                                Net.vmuteMember4Group(callnumber, d.phone, new HttpUtl.CallBack() {
358
+                                                    @Override
359
+                                                    public void onRequestComplete(int cmd, String result, Object orgs) {
360
+                                                        getMembers();
361
+                                                    }
362
+
363
+                                                    @Override
364
+                                                    public void onRequestError(int cmd, String result, Object orgs) {
365
+                                                    }
366
+                                                }, null);
367
+                                            }
368
+                                        }
369
+                                ));
370
+                            }
371
+
372
+                            if (d.isLayout) {
373
+                                qa.addAction(new QMUIQuickAction.Action().icon(android.R.drawable.ic_delete).text("恢复布局").onClick(
374
+                                        new QMUIQuickAction.OnClickListener() {
375
+                                            @Override
376
+                                            public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) {
377
+                                                quickAction.dismiss();
378
+                                                Net.vidlayoutMember4Group(callnumber, d.phone, new HttpUtl.CallBack() {
379
+                                                    @Override
380
+                                                    public void onRequestComplete(int cmd, String result, Object orgs) {
381
+                                                        getMembers();
382
+                                                    }
383
+
384
+                                                    @Override
385
+                                                    public void onRequestError(int cmd, String result, Object orgs) {
386
+                                                    }
387
+                                                }, null);
388
+                                            }
389
+                                        }
390
+                                ));
391
+                            } else {
392
+                                qa.addAction(new QMUIQuickAction.Action().icon(android.R.drawable.ic_delete).text("切换布局").onClick(
393
+                                        new QMUIQuickAction.OnClickListener() {
394
+                                            @Override
395
+                                            public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) {
396
+                                                quickAction.dismiss();
397
+                                                Net.vidfloorMember4Group(callnumber, d.phone, new HttpUtl.CallBack() {
398
+                                                    @Override
399
+                                                    public void onRequestComplete(int cmd, String result, Object orgs) {
400
+                                                        getMembers();
401
+                                                    }
402
+
403
+                                                    @Override
404
+                                                    public void onRequestError(int cmd, String result, Object orgs) {
405
+                                                    }
406
+                                                }, null);
407
+                                            }
408
+                                        }
409
+                                ));
410
+                            }
411
+                        }
412
+
268 413
                         qa.addAction(new QMUIQuickAction.Action().icon(android.R.drawable.ic_delete).text("移除").onClick(
269 414
                                 new QMUIQuickAction.OnClickListener() {
270 415
                                     @Override
@@ -471,6 +616,85 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
471 616
         }
472 617
     }
473 618
 
619
+    public void addMember(View v) {
620
+        showUsersMultiChoiceDialog();
621
+    }
622
+
623
+    boolean containMember(String phone) {
624
+        for (DBUser u : allUsers) {
625
+            if (u.phone.equals(phone)) {
626
+                return true;
627
+            }
628
+        }
629
+        return false;
630
+    }
631
+
632
+    private void showUsersMultiChoiceDialog() {
633
+        List<String> list = new ArrayList<>();
634
+        List<String> listPhone = new ArrayList<>();
635
+        for (DBUser u : DBUser.allUser) {
636
+            if (!containMember(u.phone)) {
637
+                listPhone.add(u.phone);
638
+                list.add(u.phone + " | " + u.name);
639
+            }
640
+        }
641
+        if (list.size() == 0) {
642
+            UIUtl.toastI("所有分机已经添加");
643
+            return;
644
+        }
645
+
646
+        final String[] items = new String[list.size()];
647
+        list.toArray(items);
648
+        final QMUIDialog.MultiCheckableDialogBuilder builder = new QMUIDialog.MultiCheckableDialogBuilder(this)
649
+                .setTitle("选择要加入的分机号")
650
+//                .setCheckedItems(new int[]{1, 3})
651
+                .setSkinManager(QMUISkinManager.defaultInstance(this))
652
+                .addItems(items, new DialogInterface.OnClickListener() {
653
+                    @Override
654
+                    public void onClick(DialogInterface dialog, int which) {
655
+
656
+                    }
657
+                });
658
+        builder.addAction("取消", new QMUIDialogAction.ActionListener() {
659
+            @Override
660
+            public void onClick(QMUIDialog dialog, int index) {
661
+                dialog.dismiss();
662
+            }
663
+        });
664
+        builder.addAction("确定", new QMUIDialogAction.ActionListener() {
665
+            @Override
666
+            public void onClick(QMUIDialog dialog, int index) {
667
+                int[] selectIndexs = builder.getCheckedItemIndexes();
668
+                if (selectIndexs.length > 0) {
669
+                    List<DBUser> list = new ArrayList<>();
670
+                    String members = "";
671
+                    for (int i = 0; i < selectIndexs.length; i++) {
672
+                        String phNum = listPhone.get(selectIndexs[i]);
673
+                        members = members + phNum + ",";
674
+                    }
675
+
676
+                    Net.addMember2Group(callnumber, members, new HttpUtl.CallBack() {
677
+                        @Override
678
+                        public void onRequestComplete(int cmd, String result, Object orgs) {
679
+                            getMembers();
680
+                        }
681
+
682
+                        @Override
683
+                        public void onRequestError(int cmd, String result, Object orgs) {
684
+
685
+                        }
686
+                    }, null);
687
+                }
688
+
689
+                dialog.dismiss();
690
+            }
691
+        });
692
+
693
+        int mCurrentDialogStyle = com.qmuiteam.qmui.R.style.QMUI_Dialog;
694
+        builder.create(mCurrentDialogStyle).show();
695
+    }
696
+
697
+
474 698
     @SuppressLint("NewApi")
475 699
     void fullScreen() {
476 700
         int flag = View.SYSTEM_UI_FLAG_LAYOUT_STABLE

+ 4
- 0
app/src/main/java/com/tianrun/sipcall/db/DBUser.java Visa fil

@@ -21,6 +21,10 @@ public class DBUser {
21 21
     public boolean isManager = false;
22 22
     public boolean isAddFlag = false;
23 23
 
24
+    public boolean isMute = false;
25
+    public boolean isVMute = false;
26
+    public boolean isLayout = false;
27
+
24 28
     public DBUser(String name, String phone, String status) {
25 29
         this.name = name;
26 30
         this.phone = phone;

+ 10
- 0
app/src/main/java/com/tianrun/sipcall/db/UserMeetingViews.java Visa fil

@@ -0,0 +1,10 @@
1
+package com.tianrun.sipcall.db;
2
+
3
+import android.widget.ImageView;
4
+import android.widget.TextView;
5
+
6
+public class UserMeetingViews extends UserViews {
7
+    public ImageView memberStatus1;
8
+    public ImageView memberStatus2;
9
+    public ImageView memberStatus3;
10
+}

+ 1
- 1
app/src/main/java/com/tianrun/sipcall/login/MainActivity.java Visa fil

@@ -478,7 +478,7 @@ public class MainActivity extends TrBaseActivity {
478 478
                         members = members + phNum + ",";
479 479
                     }
480 480
 
481
-                    Net.addUser2Group(currSelectData.id, members, new HttpUtl.CallBack() {
481
+                    Net.addMember2Group(currSelectData.id, members, new HttpUtl.CallBack() {
482 482
                         @Override
483 483
                         public void onRequestComplete(int cmd, String result, Object orgs) {
484 484
                             Net.getGroupMenbers(currSelectData.id, null, currSelectData.id);

+ 51
- 9
app/src/main/java/com/tianrun/sipcall/net/Net.java Visa fil

@@ -26,6 +26,12 @@ public class Net {
26 26
     public static final int CMD_deleteGroup = 7007;
27 27
     public static final int CMD_addUser2Group = 7008;
28 28
     public static final int CMD_kickMember4Group = 7009;
29
+    public static final int CMD_muteMember4Group = 7010;
30
+    public static final int CMD_unmuteMember4Group = 7011;
31
+    public static final int CMD_vmuteMember4Group = 7012;
32
+    public static final int CMD_unvmuteMember4Group = 7013;
33
+    public static final int CMD_vidlayoutMember4Group = 7014;
34
+    public static final int CMD_vidfloorMember4Group = 7015;
29 35
 
30 36
     static HttpUtl.CallBack _callback = new HttpUtl.CallBack() {
31 37
         @Override
@@ -123,9 +129,9 @@ public class Net {
123 129
     }
124 130
 
125 131
     //TODO:确认下参数
126
-    public static void addUser2Group(String task_uuid, String members, HttpUtl.CallBack callBack, Object orgs) {
132
+    public static void addMember2Group(String task_uuid, String members, HttpUtl.CallBack callBack, Object orgs) {
127 133
         String url = "http://" + ip + ":" + port + "/api/conferences/conference/add";
128
-        String _params = "opr_nbr=" + task_uuid+"&opr_member="+members;
134
+        String _params = "opr_nbr=" + task_uuid + "&opr_member=" + members;
129 135
         Object[] params = {callBack, orgs};
130 136
         HttpUtl.doPostAsyn(url, _params, _callback, CMD_addUser2Group, params);
131 137
     }
@@ -133,15 +139,51 @@ public class Net {
133 139
     //TODO:确认下参数
134 140
     public static void kickMember4Group(String task_uuid, String members, HttpUtl.CallBack callBack, Object orgs) {
135 141
         String url = "http://" + ip + ":" + port + "/api/conferences/conference/update";
136
-        String _params = "opr_nbr=" + task_uuid+"&opr_member="+members+"&opr_action=kick";
142
+        String _params = "opr_nbr=" + task_uuid + "&opr_member=" + members + "&opr_action=kick";
137 143
         Object[] params = {callBack, orgs};
138 144
         HttpUtl.doPostAsyn(url, _params, _callback, CMD_kickMember4Group, params);
139 145
     }
140 146
 
141
-//    public static void updateGroup(String task_uuid, String members, HttpUtl.CallBack callBack, Object orgs) {
142
-//        String url = "http://" + ip + ":" + port + "/api/conferences/conference/update";
143
-//        String _params = "opr_nbr=" + task_uuid+"&opr_member="+members;
144
-//        Object[] params = {callBack, orgs};
145
-//        HttpUtl.doPostAsyn(url, _params, _callback, CMD_updateGroup, params);
146
-//    }
147
+    //mute:禁言、unmute:取消禁言、vmute:关闭视频、unvmute:恢复视频、kick:踢出、vidlayout:切换布局、vidfloor:切换到主画面
148
+    public static void muteMember4Group(String task_uuid, String members, HttpUtl.CallBack callBack, Object orgs) {
149
+        String url = "http://" + ip + ":" + port + "/api/conferences/conference/update";
150
+        String _params = "opr_nbr=" + task_uuid + "&opr_member=" + members + "&opr_action=mute";
151
+        Object[] params = {callBack, orgs};
152
+        HttpUtl.doPostAsyn(url, _params, _callback, CMD_muteMember4Group, params);
153
+    }
154
+
155
+    public static void unmuteMember4Group(String task_uuid, String members, HttpUtl.CallBack callBack, Object orgs) {
156
+        String url = "http://" + ip + ":" + port + "/api/conferences/conference/update";
157
+        String _params = "opr_nbr=" + task_uuid + "&opr_member=" + members + "&opr_action=unmute";
158
+        Object[] params = {callBack, orgs};
159
+        HttpUtl.doPostAsyn(url, _params, _callback, CMD_unmuteMember4Group, params);
160
+    }
161
+
162
+    public static void vmuteMember4Group(String task_uuid, String members, HttpUtl.CallBack callBack, Object orgs) {
163
+        String url = "http://" + ip + ":" + port + "/api/conferences/conference/update";
164
+        String _params = "opr_nbr=" + task_uuid + "&opr_member=" + members + "&opr_action=vmute";
165
+        Object[] params = {callBack, orgs};
166
+        HttpUtl.doPostAsyn(url, _params, _callback, CMD_vmuteMember4Group, params);
167
+    }
168
+
169
+    public static void unvmuteMember4Group(String task_uuid, String members, HttpUtl.CallBack callBack, Object orgs) {
170
+        String url = "http://" + ip + ":" + port + "/api/conferences/conference/update";
171
+        String _params = "opr_nbr=" + task_uuid + "&opr_member=" + members + "&opr_action=unvmute";
172
+        Object[] params = {callBack, orgs};
173
+        HttpUtl.doPostAsyn(url, _params, _callback, CMD_unvmuteMember4Group, params);
174
+    }
175
+
176
+    public static void vidlayoutMember4Group(String task_uuid, String members, HttpUtl.CallBack callBack, Object orgs) {
177
+        String url = "http://" + ip + ":" + port + "/api/conferences/conference/update";
178
+        String _params = "opr_nbr=" + task_uuid + "&opr_member=" + members + "&opr_action=vidlayout";
179
+        Object[] params = {callBack, orgs};
180
+        HttpUtl.doPostAsyn(url, _params, _callback, CMD_vidlayoutMember4Group, params);
181
+    }
182
+
183
+    public static void vidfloorMember4Group(String task_uuid, String members, HttpUtl.CallBack callBack, Object orgs) {
184
+        String url = "http://" + ip + ":" + port + "/api/conferences/conference/update";
185
+        String _params = "opr_nbr=" + task_uuid + "&opr_member=" + members + "&opr_action=vidfloor";
186
+        Object[] params = {callBack, orgs};
187
+        HttpUtl.doPostAsyn(url, _params, _callback, CMD_vidfloorMember4Group, params);
188
+    }
147 189
 }

Binär
app/src/main/res/drawable-hdpi/bg3.9.png Visa fil


+ 1
- 1
app/src/main/res/layout/incallactivity.xml Visa fil

@@ -77,7 +77,7 @@
77 77
     <com.qmuiteam.qmui.widget.tab.QMUITabSegment
78 78
         android:id="@+id/ScreenType"
79 79
         android:layout_width="match_parent"
80
-        android:layout_height="50dp"
80
+        android:layout_height="40dp"
81 81
         android:orientation="horizontal" />
82 82
 
83 83
 

+ 28
- 14
app/src/main/res/layout/incallmeetingactivity.xml Visa fil

@@ -13,6 +13,18 @@
13 13
         android:layout_height="match_parent"
14 14
         android:background="#15516C" />
15 15
 
16
+    <ImageButton
17
+        android:id="@+id/imageButtonAddUser"
18
+        android:layout_width="wrap_content"
19
+        android:layout_height="wrap_content"
20
+        android:layout_alignParentStart="true"
21
+        android:layout_alignParentBottom="true"
22
+        android:layout_marginStart="65dp"
23
+        android:layout_marginEnd="0dp"
24
+        android:layout_marginBottom="13dp"
25
+        android:onClick="addMember"
26
+        app:srcCompat="@drawable/add" />
27
+
16 28
     <GridView
17 29
         android:id="@+id/GridUser"
18 30
         android:layout_width="160dp"
@@ -21,8 +33,8 @@
21 33
         android:layout_alignParentTop="true"
22 34
         android:layout_alignParentBottom="true"
23 35
         android:layout_marginStart="0dp"
24
-        android:layout_marginTop="10dp"
25
-        android:layout_marginBottom="0dp"
36
+        android:layout_marginTop="0dp"
37
+        android:layout_marginBottom="60dp"
26 38
         android:horizontalSpacing="10dp"
27 39
         android:numColumns="1">
28 40
 
@@ -51,6 +63,7 @@
51 63
                 android:id="@+id/remote_video_view"
52 64
                 android:layout_width="wrap_content"
53 65
                 android:layout_height="wrap_content" />
66
+
54 67
         </blue.view.SMPercentFrameLayout>
55 68
 
56 69
         <blue.view.SMPercentFrameLayout
@@ -94,21 +107,10 @@
94 107
             android:src="@drawable/phone3" />
95 108
     </LinearLayout>
96 109
 
97
-    <TextView
98
-        android:id="@+id/show"
99
-        android:layout_width="wrap_content"
100
-        android:layout_height="wrap_content"
101
-        android:layout_alignParentTop="true"
102
-        android:layout_centerHorizontal="true"
103
-        android:layout_marginTop="30dp"
104
-        android:text="123"
105
-        android:textColor="#FFFFFF"
106
-        android:textSize="20sp" />
107
-
108 110
     <com.qmuiteam.qmui.widget.tab.QMUITabSegment
109 111
         android:id="@+id/ScreenType"
110 112
         android:layout_width="match_parent"
111
-        android:layout_height="50dp"
113
+        android:layout_height="40dp"
112 114
         android:layout_alignParentStart="true"
113 115
         android:layout_marginStart="170dp"
114 116
         android:orientation="horizontal" />
@@ -120,4 +122,16 @@
120 122
         android:layout_weight="1"
121 123
         android:fitsSystemWindows="true" />
122 124
 
125
+    <TextView
126
+        android:id="@+id/show"
127
+        android:layout_width="wrap_content"
128
+        android:layout_height="wrap_content"
129
+        android:layout_alignParentEnd="true"
130
+        android:layout_marginTop="10dp"
131
+        android:layout_marginEnd="30dp"
132
+        android:text="123"
133
+        android:textAlignment="viewEnd"
134
+        android:textColor="#FFFFFF"
135
+        android:textSize="18sp" />
136
+
123 137
 </RelativeLayout>

+ 125
- 0
app/src/main/res/layout/list_item_user_meeting.xml Visa fil

@@ -0,0 +1,125 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
3
+    xmlns:app="http://schemas.android.com/apk/res-auto"
4
+    android:id="@+id/Item_user"
5
+    android:layout_width="wrap_content"
6
+    android:layout_height="wrap_content">
7
+
8
+    <ImageView
9
+        android:id="@+id/imageViewBg"
10
+        android:layout_width="170dp"
11
+        android:layout_height="110dp"
12
+        app:srcCompat="@drawable/bg3" />
13
+
14
+    <ImageView
15
+        android:id="@+id/imageViewStatus"
16
+        android:layout_width="wrap_content"
17
+        android:layout_height="wrap_content"
18
+        android:layout_alignStart="@+id/imageViewBg"
19
+        android:layout_alignTop="@+id/imageViewBg"
20
+        android:layout_alignEnd="@+id/imageViewBg"
21
+        android:layout_marginStart="8dp"
22
+        android:layout_marginTop="3dp"
23
+        android:layout_marginEnd="8dp"
24
+        android:visibility="visible"
25
+        app:srcCompat="@drawable/bg_half"
26
+        app:tint="#8BC34A" />
27
+
28
+    <TextView
29
+        android:id="@+id/textViewName"
30
+        android:layout_width="wrap_content"
31
+        android:layout_height="wrap_content"
32
+        android:layout_below="@+id/imageViewStatus"
33
+        android:layout_alignStart="@+id/imageViewStatus"
34
+        android:layout_alignTop="@+id/imageViewStatus"
35
+        android:layout_alignEnd="@+id/imageViewStatus"
36
+        android:layout_marginStart="0dp"
37
+        android:layout_marginTop="50dp"
38
+        android:layout_marginEnd="1dp"
39
+        android:text="小张"
40
+        android:textAlignment="center"
41
+        android:visibility="visible" />
42
+
43
+    <TextView
44
+        android:id="@+id/textViewNum"
45
+        android:layout_width="wrap_content"
46
+        android:layout_height="wrap_content"
47
+        android:layout_alignStart="@+id/imageViewStatus"
48
+        android:layout_alignTop="@+id/imageViewStatus"
49
+        android:layout_alignEnd="@+id/imageViewStatus"
50
+        android:layout_marginStart="10dp"
51
+        android:layout_marginTop="15dp"
52
+        android:layout_marginEnd="10dp"
53
+        android:text="100000"
54
+        android:textAlignment="center"
55
+        android:textColor="#FFFFFF" />
56
+
57
+    <ImageView
58
+        android:id="@+id/imageView3PhoneIcon"
59
+        android:layout_width="wrap_content"
60
+        android:layout_height="wrap_content"
61
+        android:layout_alignStart="@+id/imageViewStatus"
62
+        android:layout_alignTop="@+id/imageViewStatus"
63
+        android:layout_marginStart="15dp"
64
+        android:layout_marginTop="15dp"
65
+        app:srcCompat="@drawable/phone" />
66
+
67
+    <ImageView
68
+        android:id="@+id/imageViewAddflag"
69
+        android:layout_width="wrap_content"
70
+        android:layout_height="wrap_content"
71
+        android:layout_alignEnd="@+id/imageViewBg"
72
+        android:layout_alignParentStart="true"
73
+        android:layout_alignParentTop="true"
74
+        android:layout_centerInParent="true"
75
+        android:layout_marginStart="70dp"
76
+        android:layout_marginTop="57dp"
77
+        android:layout_marginEnd="76dp"
78
+        android:visibility="gone"
79
+        app:srcCompat="@drawable/add"
80
+        app:tint="#DDDDDD" />
81
+
82
+    <LinearLayout
83
+        android:layout_width="170dp"
84
+        android:layout_height="30dp"
85
+        android:layout_alignStart="@+id/imageViewBg"
86
+        android:layout_alignEnd="@+id/imageViewBg"
87
+        android:layout_alignBottom="@+id/imageViewBg"
88
+        android:layout_alignParentEnd="false"
89
+        android:layout_marginStart="0dp"
90
+        android:layout_marginTop="0dp"
91
+        android:layout_marginEnd="0dp"
92
+        android:layout_marginBottom="0dp"
93
+        android:orientation="horizontal">
94
+
95
+        <ImageView
96
+            android:id="@+id/memberStatus1"
97
+            android:layout_width="wrap_content"
98
+            android:layout_height="wrap_content"
99
+            android:layout_marginStart="19dp"
100
+            android:layout_marginBottom="15dp"
101
+            app:srcCompat="@android:drawable/stat_sys_speakerphone"
102
+            app:tint="#999999" />
103
+
104
+        <ImageView
105
+            android:id="@+id/memberStatus2"
106
+            android:layout_width="wrap_content"
107
+            android:layout_height="wrap_content"
108
+            android:layout_marginStart="19dp"
109
+            android:layout_marginBottom="15dp"
110
+            android:layout_weight="1"
111
+            app:srcCompat="@android:drawable/stat_notify_call_mute"
112
+            app:tint="#999999" />
113
+
114
+        <ImageView
115
+            android:id="@+id/memberStatus3"
116
+            android:layout_width="wrap_content"
117
+            android:layout_height="wrap_content"
118
+            android:layout_marginStart="19dp"
119
+            android:layout_marginBottom="15dp"
120
+            android:layout_weight="1"
121
+            app:srcCompat="@drawable/video"
122
+            app:tint="#999999" />
123
+    </LinearLayout>
124
+
125
+</RelativeLayout>

Laddar…
Avbryt
Spara