Browse Source

完成群聊部分(区域群组和附近群组)

Junqin Wang 8 years ago
parent
commit
1549abfda1
45 changed files with 610 additions and 31 deletions
  1. 7 7
      app/app.iml
  2. BIN
      app/res/drawable-hdpi/ico_01_chengshi.png
  3. BIN
      app/res/drawable-hdpi/ico_01_diqu.png
  4. BIN
      app/res/drawable-hdpi/ico_01_fujinqun.png
  5. BIN
      app/res/drawable-hdpi/ico_01_guojiaqun.png
  6. BIN
      app/res/drawable-hdpi/ico_01_more.png
  7. BIN
      app/res/drawable-mdpi/ico_01_chengshi.png
  8. BIN
      app/res/drawable-mdpi/ico_01_diqu.png
  9. BIN
      app/res/drawable-mdpi/ico_01_fujinqun.png
  10. BIN
      app/res/drawable-mdpi/ico_01_guojiaqun.png
  11. BIN
      app/res/drawable-mdpi/ico_01_more.png
  12. BIN
      app/res/drawable-xhdpi/ico_01_chengshi.png
  13. BIN
      app/res/drawable-xhdpi/ico_01_diqu.png
  14. BIN
      app/res/drawable-xhdpi/ico_01_fujinqun.png
  15. BIN
      app/res/drawable-xhdpi/ico_01_guojiaqun.png
  16. BIN
      app/res/drawable-xhdpi/ico_01_more.png
  17. BIN
      app/res/drawable-xxhdpi/ico_01_chengshi.png
  18. BIN
      app/res/drawable-xxhdpi/ico_01_diqu.png
  19. BIN
      app/res/drawable-xxhdpi/ico_01_fujinqun.png
  20. BIN
      app/res/drawable-xxhdpi/ico_01_guojiaqun.png
  21. BIN
      app/res/drawable-xxhdpi/ico_01_more.png
  22. BIN
      app/res/drawable-xxxhdpi/ico_01_chengshi.png
  23. BIN
      app/res/drawable-xxxhdpi/ico_01_diqu.png
  24. BIN
      app/res/drawable-xxxhdpi/ico_01_fujinqun.png
  25. BIN
      app/res/drawable-xxxhdpi/ico_01_guojiaqun.png
  26. BIN
      app/res/drawable-xxxhdpi/ico_01_more.png
  27. 51 0
      app/res/layout/area_group_item.xml
  28. 107 0
      app/res/layout/area_groups_list_fragment.xml
  29. 6 6
      app/res/layout/team_avchat_item.xml
  30. 2 2
      app/res/menu/main_botton_navi_menu.xml
  31. 1 0
      app/res/values/colors.xml
  32. 1 0
      app/res/values/strings.xml
  33. 83 0
      app/src/com/sheishuo/app/common/beans/NearbyGroupsBean.java
  34. 1 0
      app/src/com/sheishuo/app/common/util/net/NetInfo.java
  35. 106 0
      app/src/com/sheishuo/app/main/adapter/AreaGroupsAdapter.java
  36. 11 0
      app/src/com/sheishuo/app/main/adapter/OnItemClickListener.java
  37. 147 0
      app/src/com/sheishuo/app/main/fragment/AreaGroupsFragment.java
  38. 12 1
      app/src/com/sheishuo/app/main/fragment/HomeFragment.java
  39. 5 3
      app/src/com/sheishuo/app/main/model/MainTab.java
  40. 2 2
      app/src/com/sheishuo/app/session/SessionHelper.java
  41. 1 1
      uikit/res/layout/nim_emoji_layout.xml
  42. 9 0
      uikit/src/com/netease/nim/uikit/recent/RecentContactsFragment.java
  43. 51 0
      uikit/src/com/netease/nim/uikit/recent/adapter/AreaGroupAdapter.java
  44. 0 2
      uikit/src/com/netease/nim/uikit/session/fragment/MessageFragment.java
  45. 7 7
      uikit/uikit.iml

+ 7 - 7
app/app.iml

@@ -59,13 +59,6 @@
       <sourceFolder url="file://$MODULE_DIR$/assets" type="java-resource" />
       <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
@@ -73,6 +66,13 @@
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/builds" />

BIN
app/res/drawable-hdpi/ico_01_chengshi.png


BIN
app/res/drawable-hdpi/ico_01_diqu.png


BIN
app/res/drawable-hdpi/ico_01_fujinqun.png


BIN
app/res/drawable-hdpi/ico_01_guojiaqun.png


BIN
app/res/drawable-hdpi/ico_01_more.png


BIN
app/res/drawable-mdpi/ico_01_chengshi.png


BIN
app/res/drawable-mdpi/ico_01_diqu.png


BIN
app/res/drawable-mdpi/ico_01_fujinqun.png


BIN
app/res/drawable-mdpi/ico_01_guojiaqun.png


BIN
app/res/drawable-mdpi/ico_01_more.png


BIN
app/res/drawable-xhdpi/ico_01_chengshi.png


BIN
app/res/drawable-xhdpi/ico_01_diqu.png


BIN
app/res/drawable-xhdpi/ico_01_fujinqun.png


BIN
app/res/drawable-xhdpi/ico_01_guojiaqun.png


BIN
app/res/drawable-xhdpi/ico_01_more.png


BIN
app/res/drawable-xxhdpi/ico_01_chengshi.png


BIN
app/res/drawable-xxhdpi/ico_01_diqu.png


BIN
app/res/drawable-xxhdpi/ico_01_fujinqun.png


BIN
app/res/drawable-xxhdpi/ico_01_guojiaqun.png


BIN
app/res/drawable-xxhdpi/ico_01_more.png


BIN
app/res/drawable-xxxhdpi/ico_01_chengshi.png


BIN
app/res/drawable-xxxhdpi/ico_01_diqu.png


BIN
app/res/drawable-xxxhdpi/ico_01_fujinqun.png


BIN
app/res/drawable-xxxhdpi/ico_01_guojiaqun.png


BIN
app/res/drawable-xxxhdpi/ico_01_more.png


+ 51 - 0
app/res/layout/area_group_item.xml

@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="@drawable/touch_bg"
+    android:clickable="true"
+    android:orientation="vertical"
+    android:id="@+id/area_groups_layout">
+
+    <View
+        android:id="@+id/top_line"
+        style="@style/horizontal_light_thin_divider" />
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:padding="10dp">
+        <ImageView
+            android:id="@+id/area_groups_item_avatar"
+            android:layout_width="48dp"
+            android:layout_height="48dp"
+            android:src="@drawable/ico_01_guojiaqun"/>
+        <TextView
+            android:id="@+id/group_name"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_toRightOf="@id/area_groups_item_avatar"
+            android:layout_toEndOf="@id/area_groups_item_avatar"
+            android:text="国家群"
+            android:layout_marginTop="10dp"
+            android:layout_marginLeft="10dp"
+            android:layout_marginStart="10dp"/>
+        <TextView
+            android:id="@+id/group_member_num"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_toRightOf="@id/area_groups_item_avatar"
+            android:layout_toEndOf="@id/area_groups_item_avatar"
+            android:layout_below="@id/group_name"
+            android:text="324人热聊中"
+            android:textColor="@color/grey_light"
+            android:layout_alignStart="@id/group_name"
+            android:layout_alignLeft="@id/group_name"/>
+    </RelativeLayout>
+
+
+    <View
+        android:id="@+id/bottom_line"
+        style="@style/horizontal_light_thin_divider" />
+
+</LinearLayout>

+ 107 - 0
app/res/layout/area_groups_list_fragment.xml

@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<ScrollView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_height="match_parent"
+    android:layout_width="wrap_content">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="@color/grey_light_light"
+        android:orientation="vertical">
+
+        <TextView
+            android:id="@+id/area_groups_serachbar"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="@color/grey_light"
+            android:gravity="center"
+            android:text="请输入群名字" />
+
+        <android.support.v7.widget.RecyclerView
+            android:id="@+id/area_groups_recyclerview"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="@color/white" />
+
+        <View style="@style/horizontal_light_thin_divider" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="@color/white"
+            android:gravity="center_vertical"
+            android:orientation="horizontal"
+            android:padding="10dp">
+
+            <ImageView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:src="@drawable/ico_01_more" />
+
+            <TextView
+                android:id="@+id/area_groups_more_rooms_tv"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="10dp"
+                android:layout_marginStart="10dp"
+                android:text="更多地区房间"
+                android:textColor="@color/grey_light" />
+        </LinearLayout>
+
+        <View style="@style/horizontal_light_thin_divider" />
+
+        <View
+            style="@style/horizontal_light_thin_divider"
+            android:layout_marginTop="20dp" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="@color/white"
+            android:gravity="center_vertical"
+            android:orientation="horizontal"
+            android:padding="10dp">
+
+            <ImageView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:src="@drawable/ico_01_fujinqun" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="10dp"
+                android:layout_marginStart="10dp"
+                android:text="附近群" />
+
+            <TextView
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:gravity="end"
+                android:text="用户创建群组" />
+        </LinearLayout>
+
+        <View style="@style/horizontal_light_thin_divider" />
+
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="@color/white"
+            android:padding="10dp"
+            android:text="最近活跃的群" />
+
+        <View style="@style/horizontal_light_thin_divider" />
+
+        <android.support.v7.widget.RecyclerView
+            android:id="@+id/area_groups_nearby_recyclerview"
+            android:layout_width="match_parent"
+            android:layout_height="400dp"
+            android:background="@color/white" />
+
+        <View style="@style/horizontal_light_thin_divider"
+            android:layout_marginTop="30dp"/>
+
+    </LinearLayout>
+</ScrollView>

+ 6 - 6
app/res/layout/team_avchat_item.xml

@@ -7,8 +7,8 @@
 
     <ImageView
         android:id="@+id/avatar_image"
-        android:layout_width="0dip"
-        android:layout_height="0dip"
+        android:layout_width="0dp"
+        android:layout_height="0dp"
         android:scaleType="centerCrop"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintDimensionRatio="1:1"
@@ -42,8 +42,8 @@
 
     <com.netease.nimlib.sdk.avchat.model.AVChatVideoRender
         android:id="@+id/surface"
-        android:layout_width="0dip"
-        android:layout_height="0dip"
+        android:layout_width="0dp"
+        android:layout_height="0dp"
         android:visibility="invisible"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintDimensionRatio="1:1"
@@ -52,7 +52,7 @@
         app:layout_constraintTop_toTopOf="parent" />
 
     <android.support.constraint.ConstraintLayout
-        android:layout_width="match_parent"
+        android:layout_width="0dp"
         android:layout_height="wrap_content"
         android:background="@color/color_gray_alpha40"
         app:layout_constraintBottom_toBottomOf="parent"
@@ -79,7 +79,7 @@
             android:id="@+id/avchat_volume"
             style="?android:attr/progressBarStyleHorizontal"
             android:layout_width="0dp"
-            android:layout_height="2dp"
+            android:layout_height="16dp"
             android:max="600"
             android:progress="0"
             app:layout_constraintBottom_toBottomOf="parent"

+ 2 - 2
app/res/menu/main_botton_navi_menu.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <menu xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:id="@+id/main_navi_sheishuo"
-        android:title="谁说"
+    <item android:id="@+id/main_navi_groups"
+        android:title="群组"
         android:icon="@drawable/bottom_navi_item_01_selector"/>
     <item android:id="@+id/main_navi_friends"
         android:title="朋友"

+ 1 - 0
app/res/values/colors.xml

@@ -80,6 +80,7 @@
     <color name="white">#FFFFFF</color>
     <color name="black">#000000</color>
     <color name="grey_light">#c4c4c4</color>
+    <color name="grey_light_light">#e6e6e6</color>
     <color name="blue">#06a1f4</color>
     <color name="transparent">#00000000</color>
 

+ 1 - 0
app/res/values/strings.xml

@@ -4,6 +4,7 @@
     <string name="title_activity_main">MainActivity</string>
     <string name="hello_world">Hello world!</string>
     <string name="empty"></string>
+    <string name="main_tab_groups">群组</string>
     <string name="main_tab_circleoffriends">朋友圈</string>
     <string name="main_tab_session">会话</string>
     <string name="main_tab_contact">通讯录</string>

+ 83 - 0
app/src/com/sheishuo/app/common/beans/NearbyGroupsBean.java

@@ -0,0 +1,83 @@
+package com.sheishuo.app.common.beans;
+
+import java.util.List;
+
+/**
+ * Created by KN on 2017/7/18.
+ */
+
+public class NearbyGroupsBean {
+
+
+    /**
+     * c : 0
+     * d : {"list":[{"id":"55005163","name":"哈哈哈哈哈","dist":"60122"},{"id":"68622903","name":"太谷","dist":"1087681"},{"id":"50824810","name":"has intro","dist":"11026705"},{"id":"64216569","name":"hahaha","dist":"11026705"},{"id":"50776617","name":"other avatar","dist":"11110365"}]}
+     */
+
+    private int c;
+    private DBean d;
+
+    public int getC() {
+        return c;
+    }
+
+    public void setC(int c) {
+        this.c = c;
+    }
+
+    public DBean getD() {
+        return d;
+    }
+
+    public void setD(DBean d) {
+        this.d = d;
+    }
+
+    public class DBean {
+        private List<ListBean> list;
+
+        public List<ListBean> getList() {
+            return list;
+        }
+
+        public void setList(List<ListBean> list) {
+            this.list = list;
+        }
+
+        public class ListBean {
+            /**
+             * id : 55005163
+             * name : 哈哈哈哈哈
+             * dist : 60122
+             */
+
+            private String id;
+            private String name;
+            private String dist;
+
+            public String getId() {
+                return id;
+            }
+
+            public void setId(String id) {
+                this.id = id;
+            }
+
+            public String getName() {
+                return name;
+            }
+
+            public void setName(String name) {
+                this.name = name;
+            }
+
+            public String getDist() {
+                return dist;
+            }
+
+            public void setDist(String dist) {
+                this.dist = dist;
+            }
+        }
+    }
+}

+ 1 - 0
app/src/com/sheishuo/app/common/util/net/NetInfo.java

@@ -8,4 +8,5 @@ public class NetInfo {
     public final static String INDEX = "http://whosay.dashgame.com/index.php/";
     public final static String LOGIN_URL = "?m=who&c=index&a=login";
     public final static String REG_URL = "?m=who&c=index&a=login";
+    public final static String GET_NEARBY_GROUP = "?m=who&c=index&a=near_room";
 }

+ 106 - 0
app/src/com/sheishuo/app/main/adapter/AreaGroupsAdapter.java

@@ -0,0 +1,106 @@
+package com.sheishuo.app.main.adapter;
+
+import android.content.Context;
+import android.support.v7.widget.RecyclerView;
+import android.util.Log;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.bumptech.glide.Glide;
+import com.netease.nimlib.sdk.InvocationFuture;
+import com.netease.nimlib.sdk.NIMClient;
+import com.netease.nimlib.sdk.RequestCallback;
+import com.netease.nimlib.sdk.team.TeamService;
+import com.netease.nimlib.sdk.team.model.Team;
+import com.sheishuo.app.R;
+
+import java.util.List;
+
+/**
+ * Created by KN on 2017/7/18.
+ */
+
+public class AreaGroupsAdapter  extends RecyclerView.Adapter<AreaGroupsAdapter.AreaGroupsViewHold> implements View.OnClickListener{
+    private Context context;
+    private List<String> groupIds;
+    private OnItemClickListener listener;
+    public AreaGroupsAdapter(Context context, List<String> groupIds){
+        this.context = context;
+        this.groupIds = groupIds;
+    }
+
+    public void setOnItemClickListener(OnItemClickListener listener){
+        this.listener = listener;
+    }
+
+    @Override
+    public AreaGroupsViewHold onCreateViewHolder(ViewGroup parent, int viewType) {
+        View view = View.inflate(context, R.layout.area_group_item,null);
+        return new AreaGroupsViewHold(view);
+    }
+
+    @Override
+    public void onBindViewHolder(final AreaGroupsViewHold holder, int position) {
+        holder.layout.setOnClickListener(this);
+        final String groupId = groupIds.get(position);
+        holder.layout.setTag(groupId);
+
+        $(groupId).setCallback(new RequestCallback<Team>() {
+            @Override
+            public void onSuccess(Team team) {
+                holder.groupName.setText(team.getName());
+                holder.groupMemberNum.setText(team.getMemberCount()+"人热聊中");
+                if (team.getIcon().isEmpty()){
+                    Glide.with(context).load(R.drawable.nim_avatar_group).into(holder.groupIco);
+                }else {
+                    Glide.with(context).load(team.getIcon()).into(holder.groupIco);
+                }
+            }
+
+            @Override
+            public void onFailed(int i) {
+
+            }
+
+            @Override
+            public void onException(Throwable throwable) {
+
+            }
+        });
+
+
+
+
+    }
+
+    @Override
+    public int getItemCount() {
+        return groupIds.size();
+    }
+
+    @Override
+    public void onClick(View v) {
+        if (listener != null){
+            listener.onItemClick(v);
+        }
+    }
+
+    private InvocationFuture<Team> $(String groupId){
+        return NIMClient.getService(TeamService.class).queryTeam(groupId);
+    }
+
+    class AreaGroupsViewHold extends RecyclerView.ViewHolder{
+        View layout;
+        ImageView groupIco;
+        TextView groupName,groupMemberNum;
+        public AreaGroupsViewHold(View itemView) {
+            super(itemView);
+            layout = itemView.findViewById(R.id.area_groups_layout);
+            groupIco = (ImageView) itemView.findViewById(R.id.area_groups_item_avatar);
+            groupName = (TextView) itemView.findViewById(R.id.group_name);
+            groupMemberNum = (TextView) itemView.findViewById(R.id.group_member_num);
+        }
+    }
+}

+ 11 - 0
app/src/com/sheishuo/app/main/adapter/OnItemClickListener.java

@@ -0,0 +1,11 @@
+package com.sheishuo.app.main.adapter;
+
+import android.view.View;
+
+/**
+ * Created by KN on 2017/7/18.
+ */
+
+public interface OnItemClickListener {
+    void onItemClick(View view);
+}

+ 147 - 0
app/src/com/sheishuo/app/main/fragment/AreaGroupsFragment.java

@@ -0,0 +1,147 @@
+package com.sheishuo.app.main.fragment;
+
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.util.Log;
+import android.view.View;
+import android.widget.TextView;
+
+import com.google.gson.Gson;
+import com.netease.nim.uikit.NimUIKit;
+import com.netease.nim.uikit.robot.parser.elements.group.LinearLayout;
+import com.netease.nim.uikit.session.SessionCustomization;
+import com.netease.nimlib.sdk.NIMClient;
+import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum;
+import com.netease.nimlib.sdk.team.TeamService;
+import com.netease.nimlib.sdk.team.model.Team;
+import com.sheishuo.app.AccountCache;
+import com.sheishuo.app.R;
+import com.sheishuo.app.common.beans.NearbyGroupsBean;
+import com.sheishuo.app.common.util.net.INet;
+import com.sheishuo.app.common.util.net.NetImpl;
+import com.sheishuo.app.common.util.net.NetInfo;
+import com.sheishuo.app.common.util.net.ResponseCallback;
+import com.sheishuo.app.main.adapter.AreaGroupsAdapter;
+import com.sheishuo.app.main.adapter.OnItemClickListener;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import okhttp3.FormBody;
+
+/**
+ * Created by KN on 2017/7/18.
+ */
+
+public class AreaGroupsFragment extends MainTabFragment {
+    private TextView headSearchBar;
+
+    private RecyclerView areaGroupsRecyclerview,nearbyGroupsRecyclerview;
+
+    private AreaGroupsAdapter areaGroupsAdapter,nearbyGroupsAdapter;
+
+    private LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
+    private LinearLayoutManager nearbyLayoutManager = new LinearLayoutManager(getActivity());
+
+
+    private INet net = new NetImpl();
+    @Override
+    protected void onInit() {
+        findViews();
+        loadGroups();
+    }
+
+    void findViews(){
+        areaGroupsRecyclerview = findView(R.id.area_groups_recyclerview);
+        nearbyGroupsRecyclerview = findView(R.id.area_groups_nearby_recyclerview);
+    }
+
+    void loadGroups(){
+        List<String> groupIds = new ArrayList<>();
+        groupIds.add(AccountCache.getAccount().getCountry_room_id());
+        groupIds.add(AccountCache.getAccount().getProvince_room_id());
+        groupIds.add(AccountCache.getAccount().getCity_room_id());
+        groupIds.add(AccountCache.getAccount().getDistrict_room_id());
+
+        //去除重复的id
+        if (groupIds.get(1).equals(groupIds.get(2)))groupIds.remove(2);
+        //去除空的id
+        for (int i = 0;i<groupIds.size();i++){
+            if (groupIds.get(i).isEmpty())groupIds.remove(i);
+        }
+        areaGroupsAdapter = new AreaGroupsAdapter(getActivity(),groupIds);
+
+        areaGroupsRecyclerview.setAdapter(areaGroupsAdapter);
+        areaGroupsRecyclerview.setLayoutManager(layoutManager);
+        areaGroupsAdapter.setOnItemClickListener(new OnItemClickListener() {
+            @Override
+            public void onItemClick(View view) {
+                String groupId = (String)view.getTag();
+                if (!NIMClient.getService(TeamService.class).queryTeamBlock(groupId).isMyTeam()){
+                    NIMClient.getService(TeamService.class).applyJoinTeam(groupId,"申请入群");
+                }
+                NimUIKit.startTeamSession(getActivity(), (String)view.getTag());
+
+            }
+        });
+
+
+
+        //加载附近的群
+
+
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                FormBody body = new FormBody.Builder()
+                        .add("page","1")
+                        .add("latitude",AccountCache.getAccount().getLatitude())
+                        .add("longitude",AccountCache.getAccount().getLongitude())
+                        .build();
+                net.post(NetInfo.INDEX + NetInfo.GET_NEARBY_GROUP, body, new ResponseCallback() {
+                    @Override
+                    public void onSuccess(Object object) {
+                        String resultStr = (String)object;
+                        final NearbyGroupsBean bean = new Gson().fromJson(resultStr,NearbyGroupsBean.class);
+                        if (bean.getC() == 0){
+                            final List<String> nearbyGroupIds = new ArrayList<>();
+                            for (NearbyGroupsBean.DBean.ListBean entity : bean.getD().getList())
+                                nearbyGroupIds.add(entity.getId());
+
+
+                            getHandler().post(new Runnable() {
+                                @Override
+                                public void run() {
+                                    nearbyGroupsAdapter = new AreaGroupsAdapter(getActivity(),nearbyGroupIds);
+                                    nearbyGroupsRecyclerview.setAdapter(nearbyGroupsAdapter);
+                                    nearbyGroupsRecyclerview.setLayoutManager(nearbyLayoutManager);
+                                    nearbyGroupsAdapter.setOnItemClickListener(new OnItemClickListener() {
+                                        @Override
+                                        public void onItemClick(View view) {
+                                            String groupId = (String)view.getTag();
+                                            if (!NIMClient.getService(TeamService.class).queryTeamBlock(groupId).isMyTeam()){
+                                                NIMClient.getService(TeamService.class).applyJoinTeam(groupId,"申请入群");
+                                            }
+                                            NimUIKit.startTeamSession(getActivity(), (String)view.getTag());
+                                        }
+                                    });
+                                }
+                            });
+
+                        }
+                    }
+
+                    @Override
+                    public void onFailed() {
+
+                    }
+                });
+
+
+
+
+            }
+        }).start();
+
+    }
+}

+ 12 - 1
app/src/com/sheishuo/app/main/fragment/HomeFragment.java

@@ -96,6 +96,17 @@ public class HomeFragment extends TFragment implements OnPageChangeListener, Rem
         initUnreadCover();
         autoJoinAreaChat();
 
+
+        //暂时用来解决无法加载首页的bug
+        getHandler().postDelayed(new Runnable() {
+            @Override
+            public void run() {
+                pager.setCurrentItem(1);
+                pager.setCurrentItem(0);
+            }
+        },1000);
+
+
     }
 
 
@@ -115,7 +126,7 @@ public class HomeFragment extends TFragment implements OnPageChangeListener, Rem
 
     //初始化BottomNavigationView
     public void initNavigationView(){
-        navigationbarItemList.add(R.id.main_navi_sheishuo);
+        navigationbarItemList.add(R.id.main_navi_groups);
         navigationbarItemList.add(R.id.main_navi_friends);
         navigationbarItemList.add(R.id.main_navi_trade);
         navigationbarItemList.add(R.id.main_navi_circle_of_friends);

+ 5 - 3
app/src/com/sheishuo/app/main/model/MainTab.java

@@ -1,5 +1,6 @@
 package com.sheishuo.app.main.model;
 
+import com.sheishuo.app.main.fragment.AreaGroupsFragment;
 import com.sheishuo.app.main.fragment.CircleOfFriendsFragment;
 import com.sheishuo.app.main.fragment.SessionListFragment;
 import com.sheishuo.app.main.reminder.ReminderId;
@@ -9,10 +10,11 @@ import com.sheishuo.app.main.fragment.ContactListFragment;
 import com.sheishuo.app.main.fragment.MainTabFragment;
 
 public enum MainTab {
-    RECENT_CONTACTS(0, ReminderId.SESSION, SessionListFragment.class, R.string.main_tab_session, R.layout.session_list),
-    CONTACT(1, ReminderId.CONTACT, ContactListFragment.class, R.string.main_tab_contact, R.layout.contacts_list),
+    AREA_GROUPS(0,ReminderId.INVALID, AreaGroupsFragment.class,R.string.main_tab_groups,R.layout.area_groups_list_fragment),
+    RECENT_CONTACTS(1, ReminderId.SESSION, SessionListFragment.class, R.string.main_tab_session, R.layout.session_list),
     CHAT_ROOM(2, ReminderId.INVALID, ChatRoomListFragment.class, R.string.chat_room, R.layout.chat_room_tab),
-    CIRCLE_OF_FRIENDS(3,ReminderId.INVALID, CircleOfFriendsFragment.class,R.string.main_tab_circleoffriends,R.layout.circle_of_friends_fragment);
+    CIRCLE_OF_FRIENDS(3,ReminderId.INVALID, CircleOfFriendsFragment.class,R.string.main_tab_circleoffriends,R.layout.circle_of_friends_fragment),
+    CONTACT(4, ReminderId.CONTACT, ContactListFragment.class, R.string.main_tab_contact, R.layout.contacts_list);
     public final int tabIndex;
 
     public final int reminderId;

+ 2 - 2
app/src/com/sheishuo/app/session/SessionHelper.java

@@ -175,7 +175,7 @@ public class SessionHelper {
             actions.add(new SnapChatAction());
             actions.add(new GuessAction());
             actions.add(new FileAction());
-            actions.add(new TipAction());
+            //actions.add(new TipAction());
             p2pCustomization.actions = actions;
             p2pCustomization.withSticker = true;
 
@@ -323,7 +323,7 @@ public class SessionHelper {
             actions.add(avChatAction);
             actions.add(new GuessAction());
             actions.add(new FileAction());
-            actions.add(new TipAction());
+            //actions.add(new TipAction());
 
             teamCustomization = new SessionCustomization() {
                 @Override

+ 1 - 1
uikit/res/layout/nim_emoji_layout.xml

@@ -29,7 +29,7 @@
         android:layout_height="8dp"
         android:layout_marginBottom="4dp"
         android:gravity="center"
-        android:orientation="horizontal"></LinearLayout>
+        android:orientation="horizontal"/>
 
     <View style="@style/horizontal_light_thin_divider"/>
 

+ 9 - 0
uikit/src/com/netease/nim/uikit/recent/RecentContactsFragment.java

@@ -37,6 +37,7 @@ import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum;
 import com.netease.nimlib.sdk.msg.model.IMMessage;
 import com.netease.nimlib.sdk.msg.model.QueryDirectionEnum;
 import com.netease.nimlib.sdk.msg.model.RecentContact;
+import com.netease.nimlib.sdk.team.TeamService;
 import com.netease.nimlib.sdk.team.model.Team;
 import com.netease.nimlib.sdk.team.model.TeamMember;
 
@@ -76,6 +77,7 @@ public class RecentContactsFragment extends TFragment {
     private Map<String, RecentContact> cached; // 暂缓刷上列表的数据(未读数红点拖拽动画运行时用)
 
     private RecentContactAdapter adapter;
+    private RecentContactAdapter areaGroupAdapter;
 
     private boolean msgLoaded = false;
 
@@ -128,6 +130,7 @@ public class RecentContactsFragment extends TFragment {
      * 初始化消息列表
      */
     private void initMessageList() {
+
         items = new ArrayList<>();
         cached = new HashMap<>(3);
 
@@ -136,11 +139,17 @@ public class RecentContactsFragment extends TFragment {
         initCallBack();
         adapter.setCallback(callback);
 
+
+        //areaGroupAdapter = new RecentContactAdapter(areaRecyclerView,);
+
+
         // recyclerView
         recyclerView.setAdapter(adapter);
         recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
         recyclerView.addOnItemTouchListener(touchListener);
 
+
+
         // ios style
         OverScrollDecoratorHelper.setUpOverScroll(recyclerView, OverScrollDecoratorHelper.ORIENTATION_VERTICAL);
 

+ 51 - 0
uikit/src/com/netease/nim/uikit/recent/adapter/AreaGroupAdapter.java

@@ -0,0 +1,51 @@
+package com.netease.nim.uikit.recent.adapter;
+
+import android.content.Context;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.netease.nim.uikit.R;
+import com.netease.nim.uikit.common.util.C;
+import com.netease.nimlib.sdk.NIMClient;
+import com.netease.nimlib.sdk.msg.MsgService;
+
+import java.util.List;
+
+/**
+ * Created by KN on 2017/7/18.
+ */
+
+public class AreaGroupAdapter  extends RecyclerView.Adapter<AreaGroupAdapter.AreaGroupViewHolder>{
+
+    private Context context;
+
+    public AreaGroupAdapter(Context context){
+        this.context = context;
+    }
+
+    @Override
+    public AreaGroupViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+        View view = View.inflate(context, R.layout.nim_contact_select_area_item,parent);
+        return new AreaGroupViewHolder(view);
+    }
+
+    @Override
+    public void onBindViewHolder(AreaGroupViewHolder holder, int position) {
+
+    }
+
+    @Override
+    public int getItemCount() {
+
+        return 0;
+    }
+
+    class AreaGroupViewHolder extends RecyclerView.ViewHolder{
+
+        public AreaGroupViewHolder(View itemView) {
+            super(itemView);
+        }
+    }
+}

+ 0 - 2
uikit/src/com/netease/nim/uikit/session/fragment/MessageFragment.java

@@ -18,7 +18,6 @@ import com.netease.nim.uikit.contact.ait.AitContactSelectorActivity;
 import com.netease.nim.uikit.contact.ait.AitedContacts;
 import com.netease.nim.uikit.session.SessionCustomization;
 import com.netease.nim.uikit.session.actions.BaseAction;
-import com.netease.nim.uikit.session.actions.GiftAction;
 import com.netease.nim.uikit.session.actions.ImageAction;
 import com.netease.nim.uikit.session.actions.LocationAction;
 import com.netease.nim.uikit.session.actions.VideoAction;
@@ -338,7 +337,6 @@ public class MessageFragment extends TFragment implements ModuleProxy {
         actions.add(new ImageAction());
         actions.add(new VideoAction());
         actions.add(new LocationAction());
-        actions.add(new GiftAction());
         if (customization != null && customization.actions != null) {
             actions.addAll(customization.actions);
         }

+ 7 - 7
uikit/uikit.iml

@@ -59,13 +59,6 @@
       <sourceFolder url="file://$MODULE_DIR$/assets" type="java-resource" />
       <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
@@ -73,6 +66,13 @@
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotations" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />