浏览代码

no message

Fenix Wang 8 年之前
父节点
当前提交
f52ba74904
共有 55 个文件被更改,包括 1526 次插入389 次删除
  1. 181 164
      app/AndroidManifest.xml
  2. 1 0
      app/app.iml
  3. 7 6
      app/build.gradle
  4. 二进制
      app/res/drawable-xhdpi/icon_groups.png
  5. 二进制
      app/res/drawable-xhdpi/icon_new_friends.png
  6. 17 0
      app/res/layout/base_toolbar.xml
  7. 12 1
      app/res/layout/circle_details.xml
  8. 9 0
      app/res/layout/circle_item.xml
  9. 115 0
      app/res/layout/circle_of_person_activity.xml
  10. 34 34
      app/res/layout/item_mine_nearby_people.xml
  11. 24 0
      app/res/layout/message_activity.xml
  12. 20 0
      app/res/layout/mine_fragment.xml
  13. 42 6
      app/res/layout/mine_user_info_details.xml
  14. 1 1
      app/res/layout/team_message_activity.xml
  15. 2 1
      app/res/layout/team_setttins.xml
  16. 6 6
      app/res/layout/trade_recharge_activity.xml
  17. 6 5
      app/res/values/dimens.xml
  18. 1 0
      app/res/values/strings.xml
  19. 6 0
      app/res/values/styles.xml
  20. 1 1
      app/src/com/sheishuo/app/SheishuoApplication.java
  21. 5 0
      app/src/com/sheishuo/app/common/util/location/LocationHelper.java
  22. 2 0
      app/src/com/sheishuo/app/common/util/net/INet.java
  23. 76 0
      app/src/com/sheishuo/app/common/util/net/NetImpl.java
  24. 2 0
      app/src/com/sheishuo/app/common/util/net/NetInfo.java
  25. 9 2
      app/src/com/sheishuo/app/common/views/BaseToolbar.java
  26. 114 11
      app/src/com/sheishuo/app/core_module/circle/activity/CircleDetailsActivity.java
  27. 218 0
      app/src/com/sheishuo/app/core_module/circle/activity/CirclePersonActivity.java
  28. 2 2
      app/src/com/sheishuo/app/core_module/friends/activity/ContactsListActivity.java
  29. 12 11
      app/src/com/sheishuo/app/core_module/mine/view/adapter/NearbyPeopleAdapter.java
  30. 35 19
      app/src/com/sheishuo/app/core_module/mine/view/ui/activity/MineUploadPhotoActivity.java
  31. 82 0
      app/src/com/sheishuo/app/core_module/mine/view/ui/activity/PersonalSettingsActivity.java
  32. 31 3
      app/src/com/sheishuo/app/core_module/mine/view/ui/activity/UserInfoDetailActivity.java
  33. 9 0
      app/src/com/sheishuo/app/core_module/sheishuo/view/ui/MoreGroupsInTheAreaActivity.java
  34. 8 0
      app/src/com/sheishuo/app/core_module/sheishuo/view/ui/NearbyGroupActivity.java
  35. 11 0
      app/src/com/sheishuo/app/core_module/sheishuo/view/ui/TeamSettingsActivity.java
  36. 6 21
      app/src/com/sheishuo/app/core_module/trade/view/ui/activity/TradeSearchActivity.java
  37. 74 0
      app/src/com/sheishuo/app/impl/SheishuoP2PMessageActivity.java
  38. 109 57
      app/src/com/sheishuo/app/impl/SheishuoTeamMessageActivity.java
  39. 10 1
      app/src/com/sheishuo/app/impl/SheishuoUIKit.java
  40. 1 1
      app/src/com/sheishuo/app/location/helper/NimLocationManager.java
  41. 4 0
      app/src/com/sheishuo/app/login/LoginActivity.java
  42. 3 1
      app/src/com/sheishuo/app/login/LoginAndRegActivity.java
  43. 4 0
      app/src/com/sheishuo/app/login/helper/LoginHelper.java
  44. 4 2
      app/src/com/sheishuo/app/main/activity/MainActivity.java
  45. 83 2
      app/src/com/sheishuo/app/main/adapter/CircleListAdapter.java
  46. 4 3
      app/src/com/sheishuo/app/main/fragment/AreaGroupsFragment.java
  47. 15 5
      app/src/com/sheishuo/app/main/fragment/CircleOfFriendsFragment.java
  48. 3 2
      app/src/com/sheishuo/app/main/fragment/HomeFragment.java
  49. 22 6
      app/src/com/sheishuo/app/main/fragment/MineFragment.java
  50. 38 5
      app/src/com/sheishuo/app/main/fragment/TradeListFragment.java
  51. 2 1
      app/src/com/sheishuo/app/main/model/CircleModel.java
  52. 1 1
      app/src/com/sheishuo/app/main/model/ICircle.java
  53. 17 5
      app/src/com/sheishuo/app/main/presenter/CirclePresenter.java
  54. 5 2
      app/src/com/sheishuo/app/session/SessionHelper.java
  55. 20 1
      uikit/src/com/netease/nim/uikit/contact/core/viewholder/ContactHolder.java

+ 181 - 164
app/AndroidManifest.xml

@@ -12,8 +12,8 @@
     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
     <uses-permission android:name="android.permission.WRITE_SETTINGS" />
 
-    <!--读取通讯录-->
-    <uses-permission android:name="android.permission.READ_CONTACTS"/>
+    <!-- 读取通讯录 -->
+    <uses-permission android:name="android.permission.READ_CONTACTS" />
     <!-- 手机状态 -->
     <uses-permission android:name="android.permission.GET_TASKS" />
     <uses-permission android:name="android.permission.FLASHLIGHT" />
@@ -46,14 +46,15 @@
     <permission
         android:name="com.sheishuo.app.permission.MIPUSH_RECEIVE"
         android:protectionLevel="signature" />
+
     <uses-permission android:name="com.sheishuo.app.permission.MIPUSH_RECEIVE" />
 
     <application
-        android:name="com.sheishuo.app.SheishuoApplication"
+        android:name=".SheishuoApplication"
         android:allowBackup="true"
         android:icon="@drawable/logo"
-        android:roundIcon="@drawable/logo"
         android:label="@string/app_name"
+        android:roundIcon="@drawable/logo"
         android:theme="@style/AppTheme.NoActionBar">
 
         <!-- 如果IDE是Eclipse,此处可将build.gradle中的AMAP_KEY定义拷贝过来。 -->
@@ -61,19 +62,18 @@
             android:name="com.amap.api.v2.apikey"
             android:value="${AMAP_KEY}" />
 
-        <!--7b8c319e77664d91d28520b83840b221-->
+        <!-- 7b8c319e77664d91d28520b83840b221 -->
         <meta-data
             android:name="com.netease.nim.appKey"
-			android:value="7b8c319e77664d91d28520b83840b221" />
+            android:value="7b8c319e77664d91d28520b83840b221" />
 
         <uses-library
             android:name="com.google.android.maps"
             android:required="false" />
 
-
         <!-- 登录界面 -->
-        <activity android:name=".login.LoginActivity"/>
-        <activity android:name=".login.LoginAndRegActivity" >
+        <activity android:name=".login.LoginActivity" />
+        <activity android:name=".login.LoginAndRegActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
 
@@ -82,7 +82,7 @@
             </intent-filter>
         </activity>
 
-        <!--注册界面-->
+        <!-- 注册界面 -->
         <activity android:name=".login.RegisterActivity" />
 
         <!-- 导航页 -->
@@ -94,165 +94,188 @@
             android:launchMode="singleTop"
             android:screenOrientation="portrait"
             android:theme="@style/WelcomeEntranceActionBarTheme"
-            android:windowSoftInputMode="adjustPan">
-
-        </activity>
+            android:windowSoftInputMode="adjustPan" />
 
         <!-- 主界面 -->
         <activity
-            android:name="com.sheishuo.app.main.activity.MainActivity"
+            android:name=".main.activity.MainActivity"
             android:configChanges="keyboardHidden|orientation"
             android:hardwareAccelerated="true"
             android:launchMode="singleTop"
             android:screenOrientation="portrait"
             android:theme="@style/AppTheme.NoActionBar"
-            android:windowSoftInputMode="adjustPan"/>
+            android:windowSoftInputMode="adjustPan" />
 
         <!-- 多端登录管理 -->
         <activity
-            android:name="com.sheishuo.app.main.activity.MultiportActivity"
+            android:name=".main.activity.MultiportActivity"
             android:configChanges="keyboardHidden|orientation"
             android:screenOrientation="portrait"
             android:theme="@style/AppTheme.NoActionBar"
-            android:windowSoftInputMode="adjustResize|stateHidden"/>
-
-        <!--群-->
-        <activity android:name=".core_module.sheishuo.view.ui.MoreGroupsInTheAreaActivity"
-            android:theme="@style/AppTheme.NoActionBar"/>
-        <activity android:name=".core_module.sheishuo.view.ui.CreateNewGroupActivity"
-            android:theme="@style/AppTheme.NoActionBar"/>
-        <activity android:name=".impl.SheishuoTeamMessageActivity"
-            android:theme="@style/AppTheme.NoActionBar"/>
-        <activity android:name=".core_module.sheishuo.view.ui.TeamSettingsActivity"
-            android:theme="@style/AppTheme.NoActionBar"/>
-        <activity android:name=".core_module.sheishuo.view.ui.SettingTextEditActivity"
-            android:theme="@style/AppTheme.NoActionBar"/>
-        <activity android:name=".core_module.sheishuo.view.ui.NearbyGroupActivity"
-            android:theme="@style/AppTheme.NoActionBar"/>
-
-        <!--朋友圈相关-->
-        <activity android:name=".core_module.circle.activity.NewTweetingActivity"
-            android:theme="@style/AppTheme.NoActionBar"/>
-
-        <activity android:name=".core_module.circle.activity.CircleDetailsActivity"
-            android:theme="@style/AppTheme.NoActionBar"/>
-
-        <activity android:name=".core_module.circle.activity.NewCommentActivity"
-            android:theme="@style/AppTheme.NoActionBar.Translucent"/>
-
-        <!--我的 相关-->
-        <activity android:name=".core_module.mine.view.ui.activity.PersonalSettingsActivity"
-            android:theme="@style/AppTheme.NoActionBar"/>
-        <activity android:name=".core_module.mine.view.ui.activity.NearbyPeopleActivity"
-            android:theme="@style/AppTheme.NoActionBar"/>
-        <activity android:name=".core_module.mine.view.ui.activity.UserInfoDetailActivity"
-            android:theme="@style/AppTheme.NoActionBar"/>
-        <activity android:name=".core_module.mine.view.ui.activity.MineTradeActivity"
-            android:theme="@style/AppTheme.NoActionBar"/>
-        <activity android:name=".core_module.mine.view.ui.activity.SettingsActivity"
-            android:theme="@style/AppTheme.NoActionBar"/>
-        <activity android:name=".core_module.mine.view.ui.activity.PrivacyActivity"
-            android:theme="@style/AppTheme.NoActionBar"/>
-        <activity android:name=".core_module.mine.view.ui.activity.MineUploadPhotoActivity"
-            android:theme="@style/AppTheme.NoActionBar"/>
-        <activity android:name=".core_module.mine.view.ui.activity.AccountAndSecurityActivity"
-            android:theme="@style/AppTheme.NoActionBar"/>
-        <activity android:name=".core_module.mine.view.ui.activity.ChangePwdActivity"
-            android:theme="@style/AppTheme.NoActionBar"/>
-        <activity android:name=".core_module.mine.view.ui.activity.AboutActivity"
-            android:theme="@style/AppTheme.NoActionBar"/>
-        <activity android:name=".core_module.mine.view.ui.activity.AboutWebViewActivity"
-            android:theme="@style/AppTheme.NoActionBar"/>
-        <activity android:name=".core_module.mine.view.ui.activity.NotificationSettingActivity"
-            android:theme="@style/AppTheme.NoActionBar"/>
-        <activity android:name=".core_module.mine.view.ui.activity.HobbySelectActivity"
-            android:theme="@style/AppTheme.NoActionBar"/>
-        <activity android:name=".core_module.mine.view.ui.activity.UserInfoSettingActivity"
-            android:theme="@style/AppTheme.NoActionBar"/>
-        <activity android:name=".core_module.mine.view.ui.activity.ComplaintActivity"
-            android:theme="@style/AppTheme.NoActionBar"/>
-        <activity android:name=".core_module.mine.view.ui.activity.FeedbackActivity"
-            android:theme="@style/AppTheme.NoActionBar"/>
-
-        <!--交易帖相关Activity-->
-        <activity android:name=".core_module.trade.view.ui.activity.TradeChangePriorityActivity"
-            android:theme="@style/AppTheme.NoActionBar"/>
-        <activity android:name=".core_module.trade.view.ui.activity.TradePublishActivity"
-            android:theme="@style/AppTheme.NoActionBar.Translucent"/>
-        <activity android:name=".core_module.trade.view.ui.activity.TradeSearchActivity"
-            android:theme="@style/AppTheme.NoActionBar.Translucent"/>
-        <activity android:name=".core_module.trade.view.ui.activity.TradeDetailsActivity"
-            android:theme="@style/AppTheme.NoActionBar"/>
-        <activity android:name=".core_module.trade.view.ui.activity.RechargeActivity"
-            android:theme="@style/AppTheme.NoActionBar"/>
-        <activity android:name=".core_module.trade.view.ui.activity.PayMethodActivity"
-            android:theme="@style/AppTheme.NoActionBar"/>
-
-        <!--联系人界面-->
-        <activity android:name=".core_module.friends.activity.ContactsListActivity"
-            android:theme="@style/AppTheme.NoActionBar"/>
-        <activity android:name=".core_module.friends.activity.AddNewFriendActivity"
-            android:theme="@style/AppTheme.NoActionBar"/>
-        <activity android:name=".core_module.friends.activity.PhoneContactsActivity"
-            android:theme="@style/AppTheme.NoActionBar"/>
-
-
-        <!--地区选择-->
-        <activity android:name=".core_module.location.LocationSelectActivity"
-            android:theme="@style/AppTheme.NoActionBar"/>
+            android:windowSoftInputMode="adjustResize|stateHidden" />
+
+        <!-- 群 -->
+        <activity
+            android:name=".core_module.sheishuo.view.ui.MoreGroupsInTheAreaActivity"
+            android:theme="@style/AppTheme.NoActionBar" />
+        <activity
+            android:name=".core_module.sheishuo.view.ui.CreateNewGroupActivity"
+            android:theme="@style/AppTheme.NoActionBar" />
+        <activity
+            android:name=".impl.SheishuoTeamMessageActivity"
+            android:theme="@style/AppTheme.NoActionBar" />
+        <activity
+            android:name=".core_module.sheishuo.view.ui.TeamSettingsActivity"
+            android:theme="@style/AppTheme.NoActionBar" />
+        <activity
+            android:name=".core_module.sheishuo.view.ui.SettingTextEditActivity"
+            android:theme="@style/AppTheme.NoActionBar" />
+        <activity
+            android:name=".core_module.sheishuo.view.ui.NearbyGroupActivity"
+            android:theme="@style/AppTheme.NoActionBar" />
+
+        <!-- 朋友圈相关 -->
+        <activity
+            android:name=".core_module.circle.activity.NewTweetingActivity"
+            android:theme="@style/AppTheme.NoActionBar" />
+        <activity
+            android:name=".core_module.circle.activity.CircleDetailsActivity"
+            android:theme="@style/AppTheme.NoActionBar" />
+        <activity
+            android:name=".core_module.circle.activity.NewCommentActivity"
+            android:theme="@style/AppTheme.NoActionBar.Translucent" />
+
+        <!-- 我的 相关 -->
+        <activity
+            android:name=".core_module.mine.view.ui.activity.PersonalSettingsActivity"
+            android:theme="@style/AppTheme.NoActionBar" />
+        <activity
+            android:name=".core_module.mine.view.ui.activity.NearbyPeopleActivity"
+            android:theme="@style/AppTheme.NoActionBar" />
+        <activity
+            android:name=".core_module.mine.view.ui.activity.UserInfoDetailActivity"
+            android:theme="@style/AppTheme.NoActionBar" />
+        <activity
+            android:name=".core_module.mine.view.ui.activity.MineTradeActivity"
+            android:theme="@style/AppTheme.NoActionBar" />
+        <activity
+            android:name=".core_module.mine.view.ui.activity.SettingsActivity"
+            android:theme="@style/AppTheme.NoActionBar" />
+        <activity
+            android:name=".core_module.mine.view.ui.activity.PrivacyActivity"
+            android:theme="@style/AppTheme.NoActionBar" />
+        <activity
+            android:name=".core_module.mine.view.ui.activity.MineUploadPhotoActivity"
+            android:theme="@style/AppTheme.NoActionBar" />
+        <activity
+            android:name=".core_module.mine.view.ui.activity.AccountAndSecurityActivity"
+            android:theme="@style/AppTheme.NoActionBar" />
+        <activity
+            android:name=".core_module.mine.view.ui.activity.ChangePwdActivity"
+            android:theme="@style/AppTheme.NoActionBar" />
+        <activity
+            android:name=".core_module.mine.view.ui.activity.AboutActivity"
+            android:theme="@style/AppTheme.NoActionBar" />
+        <activity
+            android:name=".core_module.mine.view.ui.activity.AboutWebViewActivity"
+            android:theme="@style/AppTheme.NoActionBar" />
+        <activity
+            android:name=".core_module.mine.view.ui.activity.NotificationSettingActivity"
+            android:theme="@style/AppTheme.NoActionBar" />
+        <activity
+            android:name=".core_module.mine.view.ui.activity.HobbySelectActivity"
+            android:theme="@style/AppTheme.NoActionBar" />
+        <activity
+            android:name=".core_module.mine.view.ui.activity.UserInfoSettingActivity"
+            android:theme="@style/AppTheme.NoActionBar" />
+        <activity
+            android:name=".core_module.mine.view.ui.activity.ComplaintActivity"
+            android:theme="@style/AppTheme.NoActionBar" />
+        <activity
+            android:name=".core_module.mine.view.ui.activity.FeedbackActivity"
+            android:theme="@style/AppTheme.NoActionBar" />
+
+        <!-- 交易帖相关Activity -->
+        <activity
+            android:name=".core_module.trade.view.ui.activity.TradeChangePriorityActivity"
+            android:theme="@style/AppTheme.NoActionBar" />
+        <activity
+            android:name=".core_module.trade.view.ui.activity.TradePublishActivity"
+            android:theme="@style/AppTheme.NoActionBar.Translucent" />
+        <activity
+            android:name=".core_module.trade.view.ui.activity.TradeSearchActivity"
+            android:theme="@style/AppTheme.NoActionBar.Translucent" />
+        <activity
+            android:name=".core_module.trade.view.ui.activity.TradeDetailsActivity"
+            android:theme="@style/AppTheme.NoActionBar" />
+        <activity
+            android:name=".core_module.trade.view.ui.activity.RechargeActivity"
+            android:theme="@style/AppTheme.NoActionBar" />
+        <activity
+            android:name=".core_module.trade.view.ui.activity.PayMethodActivity"
+            android:theme="@style/AppTheme.NoActionBar" />
+
+        <!-- 联系人界面 -->
+        <activity
+            android:name=".core_module.friends.activity.ContactsListActivity"
+            android:theme="@style/AppTheme.NoActionBar" />
+        <activity
+            android:name=".core_module.friends.activity.AddNewFriendActivity"
+            android:theme="@style/AppTheme.NoActionBar" />
+        <activity
+            android:name=".core_module.friends.activity.PhoneContactsActivity"
+            android:theme="@style/AppTheme.NoActionBar" />
+
+        <!-- 地区选择 -->
+        <activity
+            android:name=".core_module.location.LocationSelectActivity"
+            android:theme="@style/AppTheme.NoActionBar" />
         <!-- 关于 -->
         <activity
-            android:name="com.sheishuo.app.main.activity.AboutActivity"
+            android:name=".main.activity.AboutActivity"
             android:configChanges="orientation"
             android:label="@string/about"
             android:screenOrientation="portrait"
             android:theme="@style/AppTheme.NoActionBar"
             android:windowSoftInputMode="adjustUnspecified|stateHidden" />
-
         <activity
-            android:name="com.sheishuo.app.main.activity.SettingsActivity"
+            android:name=".main.activity.SettingsActivity"
             android:configChanges="orientation"
             android:screenOrientation="portrait"
             android:theme="@style/AppTheme.NoActionBar"
             android:windowSoftInputMode="stateAlwaysHidden" />
-
         <activity
-            android:name="com.sheishuo.app.main.activity.NoDisturbActivity"
+            android:name=".main.activity.NoDisturbActivity"
             android:configChanges="orientation"
             android:screenOrientation="portrait"
             android:theme="@style/AppTheme.NoActionBar"
             android:windowSoftInputMode="adjustUnspecified|stateHidden" />
-
         <activity
-            android:name="com.sheishuo.app.contact.activity.AddFriendActivity"
+            android:name=".contact.activity.AddFriendActivity"
             android:configChanges="orientation"
             android:screenOrientation="portrait"
             android:theme="@style/AppTheme.NoActionBar"
             android:windowSoftInputMode="adjustUnspecified|stateHidden" />
-
         <activity
-            android:name="com.sheishuo.app.contact.activity.UserProfileActivity"
+            android:name=".contact.activity.UserProfileActivity"
             android:configChanges="orientation"
             android:screenOrientation="portrait"
             android:theme="@style/AppTheme.NoActionBar"
             android:windowSoftInputMode="adjustUnspecified|stateHidden" />
-
         <activity
-            android:name="com.sheishuo.app.contact.activity.UserProfileSettingActivity"
+            android:name=".contact.activity.UserProfileSettingActivity"
             android:configChanges="orientation"
             android:screenOrientation="portrait"
             android:theme="@style/AppTheme.NoActionBar"
             android:windowSoftInputMode="adjustUnspecified|stateHidden" />
-
         <activity
-            android:name="com.sheishuo.app.contact.activity.UserProfileEditItemActivity"
+            android:name=".contact.activity.UserProfileEditItemActivity"
             android:configChanges="orientation"
             android:screenOrientation="portrait"
             android:theme="@style/AppTheme.NoActionBar"
             android:windowSoftInputMode="adjustUnspecified|stateHidden" />
-
         <activity
-            android:name="com.sheishuo.app.contact.activity.BlackListActivity"
+            android:name=".contact.activity.BlackListActivity"
             android:configChanges="orientation"
             android:screenOrientation="portrait"
             android:theme="@style/AppTheme.NoActionBar"
@@ -260,54 +283,50 @@
 
         <!-- 文件管理器 -->
         <activity
-            android:name="com.sheishuo.app.file.browser.FileBrowserActivity"
+            android:name=".file.browser.FileBrowserActivity"
             android:configChanges="orientation"
             android:label="@string/file_browser"
             android:screenOrientation="portrait"
             android:theme="@style/AppTheme.NoActionBar"
             android:windowSoftInputMode="adjustUnspecified|stateHidden" />
-
         <activity
-            android:name="com.sheishuo.app.main.activity.SystemMessageActivity"
+            android:name=".main.activity.SystemMessageActivity"
             android:configChanges="keyboardHidden|orientation"
             android:screenOrientation="portrait"
             android:theme="@style/AppTheme.NoActionBar"
             android:windowSoftInputMode="stateHidden|adjustResize" />
         <activity
-            android:name="com.sheishuo.app.main.activity.CustomNotificationActivity"
+            android:name=".main.activity.CustomNotificationActivity"
             android:configChanges="keyboardHidden|orientation"
             android:screenOrientation="portrait"
             android:theme="@style/AppTheme.NoActionBar"
             android:windowSoftInputMode="stateHidden|adjustResize" />
         <activity
-            android:name="com.sheishuo.app.session.activity.MessageHistoryActivity"
+            android:name=".session.activity.MessageHistoryActivity"
             android:configChanges="keyboardHidden|orientation"
             android:screenOrientation="portrait"
             android:theme="@style/AppTheme.NoActionBar"
             android:windowSoftInputMode="stateHidden|adjustResize" />
         <activity
-            android:name="com.sheishuo.app.session.activity.MessageInfoActivity"
+            android:name=".session.activity.MessageInfoActivity"
             android:configChanges="keyboardHidden|orientation"
             android:screenOrientation="portrait"
             android:theme="@style/AppTheme.NoActionBar"
             android:windowSoftInputMode="stateHidden|adjustResize" />
-
         <activity
-            android:name="com.sheishuo.app.team.activity.AdvancedTeamSearchActivity"
+            android:name=".team.activity.AdvancedTeamSearchActivity"
             android:configChanges="keyboardHidden|orientation"
             android:screenOrientation="portrait"
             android:theme="@style/AppTheme.NoActionBar"
             android:windowSoftInputMode="stateHidden|adjustResize" />
-
         <activity
-            android:name="com.sheishuo.app.team.activity.AdvancedTeamJoinActivity"
+            android:name=".team.activity.AdvancedTeamJoinActivity"
             android:configChanges="keyboardHidden|orientation"
             android:screenOrientation="portrait"
             android:theme="@style/AppTheme.NoActionBar"
             android:windowSoftInputMode="stateHidden|adjustResize" />
-
         <activity
-            android:name="com.sheishuo.app.main.activity.TeamListActivity"
+            android:name=".main.activity.TeamListActivity"
             android:configChanges="keyboardHidden|orientation"
             android:screenOrientation="portrait"
             android:theme="@style/AppTheme.NoActionBar"
@@ -315,45 +334,43 @@
 
         <!-- 全局搜索 -->
         <activity
-            android:name="com.sheishuo.app.main.activity.GlobalSearchActivity"
+            android:name=".main.activity.GlobalSearchActivity"
             android:configChanges="keyboardHidden|orientation"
             android:screenOrientation="portrait"
             android:theme="@style/global_search_bg"
-            android:windowSoftInputMode="stateUnspecified"></activity>
-
+            android:windowSoftInputMode="stateUnspecified" />
         <activity
-            android:name="com.sheishuo.app.main.activity.GlobalSearchDetailActivity"
+            android:name=".main.activity.GlobalSearchDetailActivity"
             android:configChanges="keyboardHidden|orientation"
             android:screenOrientation="portrait"
-            android:theme="@style/AppTheme.NoActionBar"></activity>
-
+            android:theme="@style/AppTheme.NoActionBar" />
         <activity
-            android:name="com.sheishuo.app.main.activity.GlobalSearchDetailActivity2"
+            android:name=".main.activity.GlobalSearchDetailActivity2"
             android:configChanges="keyboardHidden|orientation"
             android:screenOrientation="portrait"
-            android:theme="@style/AppTheme.NoActionBar"></activity>
+            android:theme="@style/AppTheme.NoActionBar" />
 
         <!-- 查看阅后即焚 -->
         <activity
-            android:name="com.sheishuo.app.session.activity.WatchSnapChatPictureActivity"
+            android:name=".session.activity.WatchSnapChatPictureActivity"
             android:configChanges="keyboardHidden"
             android:theme="@style/AppTheme.NoActionBar" />
 
         <!-- 下载文件 -->
         <activity
-            android:name="com.sheishuo.app.session.activity.FileDownloadActivity"
+            android:name=".session.activity.FileDownloadActivity"
             android:configChanges="keyboardHidden"
             android:theme="@style/AppTheme.NoActionBar" />
 
         <!-- map -->
         <activity
-            android:name="com.sheishuo.app.location.activity.LocationAmapActivity"
+            android:name=".location.activity.LocationAmapActivity"
             android:configChanges="keyboardHidden|orientation"
             android:label="@string/location_map"
             android:screenOrientation="portrait"
             android:theme="@style/AppTheme.NoActionBar" />
         <activity
-            android:name="com.sheishuo.app.location.activity.NavigationAmapActivity"
+            android:name=".location.activity.NavigationAmapActivity"
             android:configChanges="keyboardHidden|orientation"
             android:label="@string/location_navigate"
             android:screenOrientation="portrait"
@@ -361,14 +378,13 @@
 
         <!-- 音视频 -->
         <activity
-            android:name="com.sheishuo.app.avchat.activity.AVChatActivity"
+            android:name=".avchat.activity.AVChatActivity"
             android:launchMode="singleInstance"
             android:screenOrientation="portrait"
             android:theme="@style/FullScreenTheme"
             android:windowSoftInputMode="stateAlwaysHidden" />
-
         <activity
-            android:name="com.sheishuo.app.teamavchat.activity.TeamAVChatActivity"
+            android:name=".teamavchat.activity.TeamAVChatActivity"
             android:launchMode="singleInstance"
             android:screenOrientation="portrait"
             android:theme="@style/FullScreenTheme"
@@ -376,7 +392,7 @@
 
         <!-- 白板 -->
         <activity
-            android:name="com.sheishuo.app.rts.activity.RTSActivity"
+            android:name=".rts.activity.RTSActivity"
             android:launchMode="singleInstance"
             android:screenOrientation="portrait"
             android:theme="@style/AppTheme.NoActionBar"
@@ -384,14 +400,13 @@
 
         <!-- 消息历史搜索 -->
         <activity
-            android:name="com.sheishuo.app.session.search.SearchMessageActivity"
+            android:name=".session.search.SearchMessageActivity"
             android:configChanges="keyboardHidden|orientation"
             android:screenOrientation="portrait"
             android:theme="@style/global_search_bg"
             android:windowSoftInputMode="adjustPan|stateUnspecified" />
-
         <activity
-            android:name="com.sheishuo.app.session.search.DisplayMessageActivity"
+            android:name=".session.search.DisplayMessageActivity"
             android:configChanges="keyboardHidden|orientation"
             android:screenOrientation="portrait"
             android:theme="@style/AppTheme.NoActionBar"
@@ -399,13 +414,12 @@
 
         <!-- 聊天室 -->
         <activity
-            android:name="com.sheishuo.app.chatroom.activity.ChatRoomActivity"
+            android:name=".chatroom.activity.ChatRoomActivity"
             android:screenOrientation="portrait"
             android:theme="@style/AppTheme.NoActionBar"
             android:windowSoftInputMode="stateHidden|adjustResize" />
-
         <activity
-            android:name="com.sheishuo.app.jsbridge.JsBridgeActivity"
+            android:name=".jsbridge.JsBridgeActivity"
             android:label="@string/js_bridge"
             android:screenOrientation="portrait"
             android:theme="@style/AppTheme.NoActionBar"
@@ -413,18 +427,17 @@
 
         <!-- 机器人 -->
         <activity
-            android:name="com.sheishuo.app.main.activity.RobotListActivity"
+            android:name=".main.activity.RobotListActivity"
             android:screenOrientation="portrait"
             android:theme="@style/AppTheme.NoActionBar" />
-
         <activity
-            android:name="com.sheishuo.app.contact.activity.RobotProfileActivity"
+            android:name=".contact.activity.RobotProfileActivity"
             android:screenOrientation="portrait"
             android:theme="@style/AppTheme.NoActionBar" />
 
         <!-- NRTC Settings -->
         <activity
-            android:name="com.sheishuo.app.avchat.activity.AVChatSettingsActivity"
+            android:name=".avchat.activity.AVChatSettingsActivity"
             android:screenOrientation="portrait" />
 
         <!-- 声明云信后台服务 -->
@@ -464,7 +477,7 @@
         <!-- 申明自定义通知的广播接收器,第三方APP集成时,action中的com.sheishuo.app请替换为自己的包名 -->
         <!-- 需要权限申明 <uses-permission android:name="com.sheishuo.app.permission.RECEIVE_MSG"/> -->
         <receiver
-            android:name="com.sheishuo.app.receiver.CustomNotificationReceiver"
+            android:name=".receiver.CustomNotificationReceiver"
             android:enabled="true"
             android:exported="false">
             <intent-filter>
@@ -484,7 +497,7 @@
 
         <!-- 申明本地电话状态(通话状态)的广播接收器,第三方APP集成时音视频模块时,如果需要在App中处理网络通话与本地电话的交互请加上此接收器 -->
         <!-- 在Demo的示例代码中是在Application进行了网络通话与本地电话的互斥处理 -->
-        <receiver android:name="com.sheishuo.app.avchat.receiver.IncomingCallReceiver">
+        <receiver android:name=".avchat.receiver.IncomingCallReceiver">
             <intent-filter>
                 <action android:name="android.intent.action.PHONE_STATE" />
             </intent-filter>
@@ -497,7 +510,6 @@
             android:exported="false"
             android:permission="android.permission.BIND_JOB_SERVICE"
             android:process=":mixpush" />
-
         <service
             android:name="com.xiaomi.push.service.XMPushService"
             android:enabled="true"
@@ -511,7 +523,6 @@
                 <action android:name="com.xiaomi.push.PING_TIMER" />
             </intent-filter>
         </receiver>
-
         <receiver
             android:name="com.xiaomi.push.service.receivers.NetworkStatusReceiver"
             android:exported="true">
@@ -526,7 +537,6 @@
             android:name="com.xiaomi.mipush.sdk.PushMessageHandler"
             android:enabled="true"
             android:exported="true" />
-
         <service
             android:name="com.xiaomi.mipush.sdk.MessageHandleService"
             android:enabled="true" />
@@ -541,7 +551,7 @@
             </intent-filter>
         </receiver>
 
-        <!--华为推送配置-->
+        <!-- 华为推送配置 -->
 
         <meta-data
             android:name="com.huawei.hms.client.appid"
@@ -551,11 +561,12 @@
             android:name="com.huawei.hms.update.provider.UpdateProvider"
             android:authorities="com.sheishuo.app.hms.update.provider"
             android:exported="false"
-            android:grantUriPermissions="true"></provider>
+            android:grantUriPermissions="true" />
 
         <!-- 第三方相关 :接收Push消息(注册、Push消息、Push连接状态)广播 -->
         <receiver android:name="com.netease.nimlib.mixpush.hw.HWPushReceiver">
             <intent-filter android:priority="0x7fffffff">
+
                 <!-- 必须,用于接收token -->
                 <action android:name="com.huawei.android.push.intent.REGISTRATION" />
                 <!-- 必须,用于接收消息 -->
@@ -565,18 +576,24 @@
                 <!-- 可选,查看push通道是否连接,不查看则不需要 -->
                 <action android:name="com.huawei.intent.action.PUSH_STATE" />
             </intent-filter>
+
             <meta-data
                 android:name="CS_cloud_ablitity"
                 android:value="successRateAnalytics" />
         </receiver>
-
         <receiver android:name="com.huawei.hms.support.api.push.PushEventReceiver">
             <intent-filter>
+
                 <!-- 接收通道发来的通知栏消息,兼容老版本Push -->
                 <action android:name="com.huawei.intent.action.PUSH" />
             </intent-filter>
         </receiver>
 
+        <activity
+            android:name=".core_module.circle.activity.CirclePersonActivity"
+            android:label="@string/title_activity_circle_person"
+            android:theme="@style/AppTheme.NoActionBar" />
+        <activity android:name=".impl.SheishuoP2PMessageActivity"></activity>
     </application>
 
-</manifest>
+</manifest>

+ 1 - 0
app/app.iml

@@ -122,6 +122,7 @@
     <orderEntry type="library" exported="" name="nrtc-sdk" level="project" />
     <orderEntry type="library" exported="" name="alipaySdk-20170710" level="project" />
     <orderEntry type="library" exported="" name="adapter-rxjava2-2.3.0" level="project" />
+    <orderEntry type="library" exported="" name="constraint-layout-solver-1.0.2" level="project" />
     <orderEntry type="library" exported="" name="okio-1.13.0" level="project" />
     <orderEntry type="library" exported="" name="retrofit-2.3.0" level="project" />
     <orderEntry type="library" exported="" name="converter-gson-2.3.0" level="project" />

+ 7 - 6
app/build.gradle

@@ -102,20 +102,21 @@ dependencies {
     compile fileTree(include: '*.jar', dir: 'libs')
     compile(name: 'HMS-SDK-2.4.0.300', ext: 'aar')
     compile project(path: ':uikit')
+    //RxJava 2 & RxAndroid
+    //Gson
+    //Retrofit
+    //debugCompile project(':plugins:sf')
+    //CardView
+    compile files('libs/alipaySdk-20170710.jar')
     compile 'com.netease.nimlib:jsbridge:1.3.1'
     compile 'com.android.support:multidex:1.0.1'
     compile 'com.android.support:support-annotations:25.3.1'
-    //RxJava 2 & RxAndroid
     compile 'io.reactivex.rxjava2:rxjava:2.1.1'
     compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
-    //Gson
     compile 'com.google.code.gson:gson:2.8.1'
-    //Retrofit
     compile 'com.squareup.retrofit2:retrofit:2.3.0'
     compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
     compile 'com.squareup.retrofit2:converter-gson:2.3.0'
-    //debugCompile project(':plugins:sf')
-    //CardView
     compile 'com.android.support:cardview-v7:25.1.1'
-    compile files('libs/alipaySdk-20170710.jar')
+    compile 'com.android.support.constraint:constraint-layout:1.0.2'
 }

二进制
app/res/drawable-xhdpi/icon_groups.png


二进制
app/res/drawable-xhdpi/icon_new_friends.png


+ 17 - 0
app/res/layout/base_toolbar.xml

@@ -21,6 +21,23 @@
             android:background="@color/colorPrimary"
             android:gravity="center">
 
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:gravity="center|center_vertical"
+                android:orientation="horizontal">
+
+                <Button
+                    android:id="@+id/toolbar_btn"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_marginLeft="60dp"
+                    android:layout_marginRight="60dp"
+                    android:background="#00000000"
+                    android:text="" />
+            </LinearLayout>
+
             <LinearLayout
                 android:id="@+id/toolbar_left_items"
                 android:layout_width="match_parent"

+ 12 - 1
app/res/layout/circle_details.xml

@@ -12,7 +12,8 @@
         <com.sheishuo.app.common.views.BaseToolbar
             android:id="@+id/toolbar"
             android:layout_width="match_parent"
-            android:layout_height="@dimen/action_bar_height"/>
+            android:layout_height="@dimen/action_bar_height"
+            style="@style/fullToolbarStyle"/>
     </android.support.design.widget.AppBarLayout>
 
     <ScrollView
@@ -113,6 +114,14 @@
                         android:visibility="gone"
                         android:textColor="@color/grey_light" />
 
+                    <TextView
+                        android:id="@+id/circle_details_delete"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginRight="10dp"
+                        android:text="删除"
+                        android:textColor="@color/grey_light" />
+
                     <ImageView
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
@@ -122,6 +131,7 @@
                         android:id="@+id/circle_details_like_num"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
+                        android:layout_marginRight="10dp"
                         android:text="123"
                         android:textColor="@color/grey_light" />
 
@@ -156,6 +166,7 @@
                         android:orientation="horizontal" />
 
                     <TextView
+                        android:id="@+id/circle_details_like_num2"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
                         android:layout_weight="1"

+ 9 - 0
app/res/layout/circle_item.xml

@@ -118,6 +118,15 @@
                             android:visibility="gone"
                             android:textColor="@android:color/darker_gray"/>
 
+                        <TextView
+                            android:id="@+id/delete_tv"
+                            android:layout_width="wrap_content"
+                            android:layout_height="match_parent"
+                            android:layout_marginRight="10dp"
+                            android:gravity="center"
+                            android:text="删除"
+                            android:textColor="@android:color/darker_gray" />
+
                         <ImageView
                             android:id="@+id/liked_img"
                             android:layout_width="30dp"

+ 115 - 0
app/res/layout/circle_of_person_activity.xml

@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:my="http://schemas.android.com/tools"
+    android:id="@+id/main_content"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <android.support.design.widget.AppBarLayout
+        android:id="@+id/appbar"
+        android:layout_width="match_parent"
+        android:layout_height="256dp">
+        <!--android:fitsSystemWindows="true">-->
+
+        <android.support.design.widget.CollapsingToolbarLayout
+            android:id="@+id/collapsing_toolbar"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:fitsSystemWindows="true"
+            app:contentScrim="?attr/colorPrimary"
+            app:expandedTitleMarginEnd="64dp"
+            app:expandedTitleMarginStart="48dp"
+            app:layout_scrollFlags="scroll|exitUntilCollapsed">
+
+            <RelativeLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:orientation="vertical"
+                app:layout_collapseMode="parallax">
+                <!--android:fitsSystemWindows="true"   >-->
+                <ImageView
+                    android:id="@+id/circle_background"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:scaleType="centerCrop"
+                    android:src="@drawable/temp_circle_background" />
+
+                <LinearLayout
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignParentBottom="true"
+                    android:layout_marginBottom="40dp"
+                    android:layout_marginLeft="40dp"
+                    android:layout_marginStart="40dp"
+                    android:orientation="horizontal">
+
+                    <com.netease.nim.uikit.common.ui.imageview.HeadImageView
+                        android:id="@+id/circle_avatar"
+                        android:layout_width="56dp"
+                        android:layout_height="56dp"
+                        android:textSize="30sp"
+                        android:textStyle="bold" />
+
+                    <TextView
+                        android:id="@+id/circle_username"
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:layout_marginLeft="15dp"
+                        android:layout_marginStart="15dp"
+                        android:gravity="center"
+                        android:text="用户昵称"
+                        android:textColor="@android:color/white"
+                        android:textSize="22sp" />
+                </LinearLayout>
+
+            </RelativeLayout>
+
+
+            <!--<com.sheishuo.app.common.views.BaseToolbar-->
+            <!--android:id="@+id/circle_toolbar"-->
+            <!--android:layout_width="match_parent"-->
+            <!--android:layout_height="?attr/actionBarSize"-->
+            <!--app:layout_collapseMode="pin"-->
+            <!--app:title="朋友圈"-->
+            <!--app:right_text="发表"-->
+            <!--style="@style/fullToolbarStyle"/>-->
+
+        </android.support.design.widget.CollapsingToolbarLayout>
+
+    </android.support.design.widget.AppBarLayout>
+
+    <android.support.design.widget.AppBarLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+
+        <com.sheishuo.app.common.views.BaseToolbar
+            android:id="@+id/toolbar"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/action_bar_height"/>
+    </android.support.design.widget.AppBarLayout>
+
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        app:layout_behavior="@string/appbar_scrolling_view_behavior">
+
+        <android.support.v7.widget.RecyclerView
+            android:id="@+id/circle_recyclerview"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"/>
+    </LinearLayout>
+
+    <!--<android.support.design.widget.FloatingActionButton-->
+        <!--android:id="@+id/circle_fab"-->
+        <!--android:layout_height="wrap_content"-->
+        <!--android:layout_width="wrap_content"-->
+        <!--app:layout_anchor="@id/appbar"-->
+        <!--app:layout_anchorGravity="bottom|right|end"-->
+        <!--android:src="@drawable/ic_add_friends"-->
+        <!--android:layout_margin="24dp"-->
+        <!--android:clickable="true"/>-->
+
+</android.support.design.widget.CoordinatorLayout>

+ 34 - 34
app/res/layout/item_mine_nearby_people.xml

@@ -1,50 +1,50 @@
 <?xml version="1.0" encoding="utf-8"?>
-<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
-    android:orientation="vertical" android:layout_width="match_parent"
+    android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:padding="16dp"
-    android:background="@color/white">
+    android:background="@color/white"
+    android:gravity="center"
+    android:orientation="horizontal"
+    android:paddingBottom="10dp"
+    android:paddingLeft="15dp"
+    android:paddingRight="15dp"
+    android:paddingTop="10dp">
 
     <com.netease.nim.uikit.common.ui.imageview.HeadImageView
         android:id="@+id/item_mine_neaby_people_avatar"
-        android:layout_width="48dp"
-        android:layout_height="48dp"
-        app:layout_constraintTop_toTopOf="parent"
-        android:layout_marginTop="8dp"
-        android:layout_marginLeft="8dp"
+        android:layout_width="32dp"
+        android:layout_height="32dp"
+        android:src="@drawable/nim_avatar_default"
         app:layout_constraintLeft_toLeftOf="parent"
-        android:src="@drawable/nim_avatar_default"/>
+        app:layout_constraintTop_toTopOf="parent" />
 
     <TextView
         android:id="@+id/item_mine_neaby_people_name"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:text="用户名"
-        app:layout_constraintTop_toTopOf="@+id/item_mine_neaby_people_avatar"
-        android:layout_marginTop="0dp"
+        android:layout_marginLeft="9dp"
+        android:text="用户名12324214"
         app:layout_constraintLeft_toRightOf="@+id/item_mine_neaby_people_avatar"
-        android:layout_marginLeft="9dp" />
+        app:layout_constraintTop_toTopOf="@+id/item_mine_neaby_people_avatar" />
 
-    <TextView
-        android:id="@+id/item_mine_neaby_people_bio"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:textColor="@color/grey_light_light"
-        android:layout_marginTop="8dp"
-        app:layout_constraintTop_toBottomOf="@+id/item_mine_neaby_people_name"
-        android:layout_marginLeft="0dp"
-        app:layout_constraintLeft_toLeftOf="@+id/item_mine_neaby_people_name" />
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:gravity="right"
+        android:orientation="horizontal">
 
-    <TextView
-        android:id="@+id/item_mine_neaby_people_distance"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="距离"
-        android:textColor="@color/grey_light_light"
-        android:layout_marginRight="8dp"
-        app:layout_constraintRight_toRightOf="parent"
-        app:layout_constraintTop_toTopOf="parent"
-        android:layout_marginTop="8dp" />
-</android.support.constraint.ConstraintLayout>
+        <TextView
+            android:id="@+id/item_mine_neaby_people_distance"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginRight="8dp"
+            android:layout_marginTop="8dp"
+            android:text="距离"
+            android:textColor="@color/grey_light_light"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+    </LinearLayout>
+
+</LinearLayout>

+ 24 - 0
app/res/layout/message_activity.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:id="@+id/message_fragment_container"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <android.support.design.widget.AppBarLayout
+        android:id="@+id/app_bar_layout"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:theme="@style/AppTheme.AppBarOverlay"
+        app:elevation="0dp">
+
+        <com.sheishuo.app.common.views.BaseToolbar
+            android:id="@+id/toolbar"
+            android:layout_width="match_parent"
+            android:layout_height="?attr/actionBarSize"
+            android:background="?attr/colorPrimary"
+            style="@style/fullToolbarStyle"/>
+    </android.support.design.widget.AppBarLayout>
+
+</LinearLayout>

+ 20 - 0
app/res/layout/mine_fragment.xml

@@ -25,6 +25,26 @@
                 android:scaleType="center"
                 android:src="@drawable/avchat_call_bg" />
 
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="192dp"
+                android:gravity="center"
+                android:orientation="horizontal">
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:enabled="false"
+                    android:shadowColor="@color/black"
+                    android:shadowDx="1"
+                    android:shadowDy="1"
+                    android:shadowRadius="1"
+                    android:text="轻触换背景"
+                    android:textAlignment="center"
+                    android:textColor="@color/GreyWhite" />
+            </LinearLayout>
+
             <ImageView
                 android:id="@+id/mine_fragment_personal_settings"
                 android:layout_width="wrap_content"

+ 42 - 6
app/res/layout/mine_user_info_details.xml

@@ -181,13 +181,49 @@
                 android:text="动态"
                 android:textSize="16sp" />
 
-            <GridLayout
-                android:id="@+id/user_info_details_tweet_photos_layout"
+            <RelativeLayout
                 android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:columnCount="4"
-                android:visibility="gone">
-            </GridLayout>
+                android:layout_height="wrap_content">
+
+                <LinearLayout
+                    android:id="@+id/user_info_detail_circle"
+                    android:layout_width="match_parent"
+                    android:layout_height="80dp"
+                    android:background="#00000000"
+                    android:gravity="right"
+                    android:orientation="horizontal">
+
+                    <LinearLayout
+                        android:layout_width="wrap_content"
+                        android:layout_height="match_parent"
+                        android:gravity="right|center"
+                        android:paddingLeft="200dp"
+                        android:paddingRight="20dp">
+
+                        <TextView
+                            android:id="@+id/textView5"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_weight="1"
+                            android:text="..." />
+
+                        <ImageView
+                            android:id="@+id/imageView2"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_weight="1"
+                            app:srcCompat="@drawable/nim_arrow_right" />
+                    </LinearLayout>
+                </LinearLayout>
+
+                <GridLayout
+                    android:id="@+id/user_info_details_tweet_photos_layout"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:columnCount="4"
+                    android:visibility="gone"></GridLayout>
+
+            </RelativeLayout>
 
             <LinearLayout
                 android:layout_width="match_parent"

+ 1 - 1
app/res/layout/team_message_activity.xml

@@ -17,7 +17,7 @@
             android:layout_width="match_parent"
             android:layout_height="?attr/actionBarSize"
             android:background="?attr/colorPrimary"
-            app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
+            style="@style/fullToolbarStyle"
             app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
     </android.support.design.widget.AppBarLayout>
 

+ 2 - 1
app/res/layout/team_setttins.xml

@@ -12,7 +12,8 @@
             android:id="@+id/toolbar"
             android:layout_width="match_parent"
             android:layout_height="@dimen/action_bar_height"
-            android:title="群聊设置" />
+            android:title="群聊设置"
+            style="@style/fullToolbarStyle"/>
     </android.support.design.widget.AppBarLayout>
 
     <ScrollView

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

@@ -20,7 +20,7 @@
         android:padding="15dp">
 
         <LinearLayout
-            android:layout_width="0dp"
+            android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_columnWeight="1"
             android:background="@drawable/ico_recharge_unchecked"
@@ -44,7 +44,7 @@
         </LinearLayout>
 
         <LinearLayout
-            android:layout_width="0dp"
+            android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_columnWeight="1"
             android:layout_marginLeft="10dp"
@@ -70,7 +70,7 @@
         </LinearLayout>
 
         <LinearLayout
-            android:layout_width="0dp"
+            android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_columnWeight="1"
             android:background="@drawable/ico_recharge_unchecked"
@@ -94,7 +94,7 @@
         </LinearLayout>
 
         <LinearLayout
-            android:layout_width="0dp"
+            android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_columnWeight="1"
             android:layout_marginTop="10dp"
@@ -119,7 +119,7 @@
         </LinearLayout>
 
         <LinearLayout
-            android:layout_width="0dp"
+            android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_columnWeight="1"
             android:layout_marginLeft="10dp"
@@ -146,7 +146,7 @@
         </LinearLayout>
 
         <LinearLayout
-            android:layout_width="0dp"
+            android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_columnWeight="1"
             android:layout_marginTop="10dp"

+ 6 - 5
app/res/values/dimens.xml

@@ -36,13 +36,13 @@
     <dimen name="sns_content_text_size_15">15sp</dimen>
     <dimen name="split_one_pixels">1px</dimen>
     <dimen name="text_small_size_ten_sp">10sp</dimen>
-    
+
     <!-- dialog -->
     <dimen name="very_samll_text_size">9sp</dimen>
     <dimen name="normal_text_size">16sp</dimen>
     <dimen name="big_text_size">17sp</dimen>
     <dimen name="light_line_size">1px</dimen>
-	<dimen name="thick_line_size">2px</dimen>
+    <dimen name="thick_line_size">2px</dimen>
     <dimen name="dialog_text_margin_horizontal">15dip</dimen>
     <dimen name="dialog_padding_vertical">20dip</dimen>
     <dimen name="custom_dialog_padding_vertical">15dip</dimen>
@@ -77,14 +77,15 @@
     <dimen name="bubble_padding_right">14dip</dimen>
     <dimen name="bubble_margin_top">2dip</dimen>
     <dimen name="mask_sticker_bubble_width">120dip</dimen>
-    
+
     <!-- message -->
     <dimen name="message_bottom_function_viewpager_height">220dp</dimen>
     <dimen name="input_panel_image_margin_bottom">3dip</dimen>
     <dimen name="input_panel_image_margin_top">20dip</dimen>
-    
+
     <!-- map -->
     <dimen name="friend_map_btn_height">42dp</dimen>
     <dimen name="friend_map_bound_padding">80dp</dimen>
-    
+    <dimen name="fab_margin">16dp</dimen>
+
 </resources>

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

@@ -390,6 +390,7 @@
     <string name="please_input_pwd">请输入密码</string>
     <string name="contacts">通讯录</string>
     <string name="add_friends">添加朋友</string>
+    <string name="title_activity_circle_person">个人动态</string>
 
 
 </resources>

+ 6 - 0
app/res/values/styles.xml

@@ -0,0 +1,6 @@
+<resources>
+
+    <style name="AppTheme.NoActionBar.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
+
+    <style name="AppTheme.NoActionBar.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
+</resources>

+ 1 - 1
app/src/com/sheishuo/app/SheishuoApplication.java

@@ -82,7 +82,7 @@ public class SheishuoApplication extends Application {
          * 初始化各种工具
          */
         //初始化LocationHelper
-        LocationHelper.init(context);
+        //LocationHelper.init(context);
         //初始化全国省份数据
         CityDataHelper.init(context);
 

+ 5 - 0
app/src/com/sheishuo/app/common/util/location/LocationHelper.java

@@ -33,6 +33,8 @@ public class LocationHelper implements LocationProvider {
 
 
     public static void init(Context context) {
+        if(true)
+            return;
         LocationHelper.context = context;
         initLocation(context);
 
@@ -84,6 +86,9 @@ public class LocationHelper implements LocationProvider {
 
 
     private static void initLocation(Context context) {
+        if(true)
+            return;
+
         //获取定位服务
         locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
         //获取当前可用的位置控制器

+ 2 - 0
app/src/com/sheishuo/app/common/util/net/INet.java

@@ -28,6 +28,8 @@ public interface INet {
     void uploadSocialPhoto(String filePath,ResponseCallback callback);
     void deleteSocialPhoto(String id, ResponseCallback callback);
     void getSocialInfo(String targetID,ResponseCallback callback);
+    void getSocialComment(String id, int page, ResponseCallback callback);
+    void deleteSocial(String id, ResponseCallback callback);
     void getCityDataList(ResponseCallback callback);
     void getNearbyPeople(String userId,String page,ResponseCallback callback);
     void getCircleList(String targetId,String lastId,ResponseCallback callback);

+ 76 - 0
app/src/com/sheishuo/app/common/util/net/NetImpl.java

@@ -520,6 +520,82 @@ public class NetImpl implements INet {
 
 
     @Override
+    public void getSocialComment(final String id, final int lastId, final ResponseCallback callback) {
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                FormBody body = new FormBody.Builder()
+                        .add("social_id", id)
+                        .add("last_id", String.valueOf(lastId))
+                        .build();
+
+                Request request = new Request.Builder()
+                        .post(body)
+                        .url(CIRCLE_COMMENT_LIST)
+                        .build();
+
+                try{
+                    Response response = client.newCall(request).execute();
+                    String resultStr = response.body().string();
+                    JSONObject json = new JSONObject(resultStr);
+                    int c = json.getInt("c");
+                    if(c == 0)
+                    {
+                        JSONObject data = json.getJSONObject("d");
+                        JSONArray list = data.getJSONArray("list");
+                        List<CircleBean.DBean.ListBean.Comment> commentList = new ArrayList<CircleBean.DBean.ListBean.Comment>();
+                        for(int i=0; i<list.length(); i++)
+                        {
+                            CircleBean.DBean.ListBean.Comment comment = new Gson().fromJson(list.getJSONObject(i).toString(), new TypeToken<CircleBean.DBean.ListBean.Comment>(){}.getType());
+                            commentList.add(comment);
+                        }
+                        callback.onSuccess(commentList);
+                    }
+
+
+                }catch (Exception e){
+                    e.printStackTrace();
+                    callback.onFailed();
+                }
+            }
+        }).start();
+    }
+
+    @Override
+    public void deleteSocial(final String socialId, final ResponseCallback callback) {
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                FormBody body = new FormBody.Builder()
+                        .add("id", socialId)
+                        .add("user_id", AccountCache.getAccount().getId())
+                        .build();
+
+                Request request = new Request.Builder()
+                        .post(body)
+                        .url(CIRCLE_DELETE)
+                        .build();
+
+                try{
+                    Response response = client.newCall(request).execute();
+                    String resultStr = response.body().string();
+                    JSONObject json = new JSONObject(resultStr);
+                    int c = json.getInt("c");
+                    if(c == 0)
+                    {
+                        callback.onSuccess(null);
+                    }
+
+
+                }catch (Exception e){
+                    e.printStackTrace();
+                    callback.onFailed();
+                }
+            }
+        }).start();
+    }
+
+    @Override
     public void getCityDataList(final ResponseCallback callback) {
         new Thread(new Runnable() {
             @Override

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

@@ -12,6 +12,8 @@ public class NetInfo {
     public final static String GET_NEARBY_GROUP = INDEX + "?m=who&c=index&a=near_room";
     public final static String CIRCLE_LIST = INDEX + "?m=who&c=social&a=lists";
     public final static String CIRCLE_USER_LIKED = INDEX + "?m=who&c=social&a=like";
+    public final static String CIRCLE_COMMENT_LIST = INDEX + "?m=who&c=social&a=comment_list";
+    public final static String CIRCLE_DELETE = INDEX + "?m=who&c=social&a=delete";
     public final static String NEW_TWEETING = INDEX + "?m=who&c=social&a=publish";
     public final static String GIFT_LIST = INDEX + "?m=who&c=index&a=gift_list";
     public final static String GET_CODE = INDEX + "?m=who&c=index&a=send_code";

+ 9 - 2
app/src/com/sheishuo/app/common/views/BaseToolbar.java

@@ -61,6 +61,8 @@ public class BaseToolbar extends Toolbar {
         leftLayout = (LinearLayout) findViewById(R.id.toolbar_left_items);
         rightLayout = (LinearLayout) findViewById(R.id.toolbar_right_items);
         titleTxt = (TextView) findViewById(R.id.toolbar_title_text);
+
+        toolbarBtn = (Button) findViewById(R.id.toolbar_btn);
     }
 
     public void clearItems()
@@ -89,6 +91,11 @@ public class BaseToolbar extends Toolbar {
         titleTxt.setText(title);
     }
 
+    public void setTitleOnClickListener(OnClickListener listener)
+    {
+        toolbarBtn.setOnClickListener(listener);
+    }
+
     public TextView getTitleTxt()
     {
         return titleTxt;
@@ -109,7 +116,7 @@ public class BaseToolbar extends Toolbar {
             if(view instanceof ImageView)
             {
                 ImageView imageView = (ImageView) view;
-                imageView.setLayoutParams(new ViewGroup.LayoutParams(ScreenUtil.dip2px(24), ScreenUtil.dip2px(24)));
+                imageView.setLayoutParams(new ViewGroup.LayoutParams(ScreenUtil.dip2px(28), ScreenUtil.dip2px(28)));
                 imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
             }
             else if(view instanceof TextView)
@@ -142,7 +149,7 @@ public class BaseToolbar extends Toolbar {
             if(view instanceof ImageView)
             {
                 ImageView imageView = (ImageView) view;
-                imageView.setLayoutParams(new ViewGroup.LayoutParams(ScreenUtil.dip2px(24), ScreenUtil.dip2px(24)));
+                imageView.setLayoutParams(new ViewGroup.LayoutParams(ScreenUtil.dip2px(28), ScreenUtil.dip2px(28)));
                 imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
             }
             else if(view instanceof TextView)

+ 114 - 11
app/src/com/sheishuo/app/core_module/circle/activity/CircleDetailsActivity.java

@@ -1,8 +1,10 @@
 package com.sheishuo.app.core_module.circle.activity;
 
 import android.content.Context;
+import android.content.DialogInterface;
 import android.content.Intent;
 import android.os.Bundle;
+import android.support.v7.app.AlertDialog;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.GridLayout;
@@ -14,13 +16,22 @@ import com.bumptech.glide.Glide;
 import com.netease.nim.uikit.common.ui.imageview.HeadImageView;
 import com.netease.nim.uikit.session.activity.WatchPictureActivity;
 import com.sheishuo.app.R;
+import com.sheishuo.app.cache.AccountCache;
 import com.sheishuo.app.common.beans.CircleBean;
+import com.sheishuo.app.common.beans.TradeBean;
 import com.sheishuo.app.common.util.img.ImgUtil;
+import com.sheishuo.app.common.util.net.INet;
+import com.sheishuo.app.common.util.net.NetImpl;
+import com.sheishuo.app.common.util.net.ResponseCallback;
 import com.sheishuo.app.common.views.BaseToolbar;
 import com.sheishuo.app.common.views.ImgGridView;
 import com.sheishuo.app.common.views.PartlyHighLightTextView;
 import com.sheishuo.app.core_module.mine.view.ui.activity.UserInfoDetailActivity;
 import com.sheishuo.app.impl.SheishuoUI;
+import com.sheishuo.app.main.fragment.CircleOfFriendsFragment;
+
+import java.util.ArrayList;
+import java.util.List;
 
 import jp.wasabeef.glide.transformations.CropCircleTransformation;
 
@@ -43,12 +54,14 @@ public class CircleDetailsActivity extends SheishuoUI {
 
     private GridLayout imgGridView;
 
-    private TextView nameTV,dateTV,readNumTV,likedNumTV,commentTV;
+    private TextView nameTV,dateTV,readNumTV,likedNumTV,commentTV, likedNum2TV, deleteTV;
 
     private PartlyHighLightTextView contentTV;
 
     private LinearLayout likedUserAvatarLayout;
 
+    private INet net = new NetImpl();
+    private int lastId = 0;
 
     //comment views
     private LinearLayout commentsLayout;
@@ -71,7 +84,9 @@ public class CircleDetailsActivity extends SheishuoUI {
         nameTV = findView(R.id.circle_details_name);
         dateTV = findView(R.id.circle_details_date);
         readNumTV = findView(R.id.circle_details_read_num);
+        deleteTV = findView(R.id.circle_details_delete);
         likedNumTV = findView(R.id.circle_details_like_num);
+        likedNum2TV = findView(R.id.circle_details_like_num2);
         commentTV = findView(R.id.circle_details_comment_num);
         contentTV = findView(R.id.circle_details_content);
 
@@ -121,8 +136,23 @@ public class CircleDetailsActivity extends SheishuoUI {
         //显示阅读量
         readNumTV.setText(bean.getViews());
 
+        if(bean.getUser_id().equals(AccountCache.getAccount().getId())) {
+            deleteTV.setVisibility(View.VISIBLE);
+            deleteTV.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    delete();
+                }
+            });
+        }
+        else
+        {
+            deleteTV.setVisibility(View.GONE);
+        }
+
         //显示点赞数
         likedNumTV.setText(bean.getLikes());
+        likedNum2TV.setText(bean.getLikes()+"人已赞");
 
         //显示朋友圈内容
         contentTV.setText(bean.getMsg());
@@ -194,15 +224,14 @@ public class CircleDetailsActivity extends SheishuoUI {
             imageView.setLayoutParams(gl);
 
 
-            final int finalI = i;
-            imgGridView.setOnClickListener(new View.OnClickListener() {
+            imageView.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {
-                    WatchPictureActivity.start(context,bean.getPics(),bean.getThumbs(), finalI);
+                    int index = imgGridView.indexOfChild(v);
+                    WatchPictureActivity.start(context,bean.getPics(),bean.getThumbs(), index);
                 }
             });
 
-
             imgGridView.addView(imageView);
         }
 
@@ -211,13 +240,8 @@ public class CircleDetailsActivity extends SheishuoUI {
         if (bean.getComments_list().size() > 0){
             commentsLayout.removeAllViews();
             commentsLayout.setVisibility(View.VISIBLE);
-            for (int i = 0;i < bean.getComments_list().size();i++){
-                commentsLayout.addView(createComment(bean.getComments_list().get(i)));
-            }
+            listComments();
         }
-
-
-
     }
 
 
@@ -226,6 +250,39 @@ public class CircleDetailsActivity extends SheishuoUI {
         UserInfoDetailActivity.start(getBaseContext(), bean.getUser_id());
     }
 
+
+    private void listComments()
+    {
+        net.getSocialComment(bean.getId(), lastId, new ResponseCallback() {
+                    @Override
+                    public void onSuccess(Object object) {
+                        List<CircleBean.DBean.ListBean.Comment> commentList = (List<CircleBean.DBean.ListBean.Comment>) object;
+                        onCommentListGot(commentList);
+                    }
+
+                    @Override
+                    public void onFailed() {
+                        showToast(getBaseContext(), "加载失败");
+                    }});
+    }
+
+    public void onCommentListGot(final List<CircleBean.DBean.ListBean.Comment> commentList){
+        getHandler().post(new Runnable() {
+            @Override
+            public void run() {
+                for(int i=0; i<commentList.size(); i++)
+                {
+                    CircleBean.DBean.ListBean.Comment comment = commentList.get(i);
+                    int id = Integer.parseInt(comment.getId());
+                    if(id > lastId)
+                        lastId = id;
+                    commentsLayout.addView(createComment(comment));
+                }
+            }
+        });
+    }
+
+
     //动态添加Comment
     private View createComment(CircleBean.DBean.ListBean.Comment comment){
         LinearLayout commentView = (LinearLayout) LayoutInflater.from(context).inflate(R.layout.circle_details_comment_layout,null);
@@ -250,4 +307,50 @@ public class CircleDetailsActivity extends SheishuoUI {
         return commentView;
 
     }
+
+
+
+
+
+
+
+    private void delete()
+    {
+        final AlertDialog.Builder normalDialog =
+                new AlertDialog.Builder(context);
+        normalDialog.setTitle("删除提示");
+        normalDialog.setMessage("确定删除该动态?");
+        normalDialog.setPositiveButton("确定",
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int which) {
+                        net.deleteSocial(bean.getId(), new ResponseCallback() {
+                            @Override
+                            public void onSuccess(Object object) {
+                                Intent intent = new Intent();
+                                Bundle bundle = new Bundle();
+                                bundle.putString(CircleOfFriendsFragment.DELETE_ID, bean.getId());
+                                intent.putExtras(bundle);
+                                setResult(CircleOfFriendsFragment.DELETE_CIRCLE, intent);
+                                showToast(context, "删除成功");
+                                finish();
+                            }
+
+                            @Override
+                            public void onFailed() {
+                                showToast(context, "删除失败");
+                            }});
+                    }
+                });
+        normalDialog.setNegativeButton("取消",
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int which) {
+
+                    }
+                });
+        // 显示
+        normalDialog.show();
+
+    }
 }

+ 218 - 0
app/src/com/sheishuo/app/core_module/circle/activity/CirclePersonActivity.java

@@ -0,0 +1,218 @@
+package com.sheishuo.app.core_module.circle.activity;
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Handler;
+import android.support.design.widget.FloatingActionButton;
+import android.support.design.widget.Snackbar;
+import android.support.v7.app.AppCompatActivity;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.support.v7.widget.Toolbar;
+import android.util.Log;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.bumptech.glide.Glide;
+import com.netease.nimlib.sdk.NIMClient;
+import com.netease.nimlib.sdk.uinfo.UserService;
+import com.netease.nimlib.sdk.uinfo.model.NimUserInfo;
+import com.sheishuo.app.R;
+import com.sheishuo.app.SheishuoApplication;
+import com.sheishuo.app.cache.AccountCache;
+import com.sheishuo.app.cache.SocialInfoCache;
+import com.sheishuo.app.common.beans.CircleBean;
+import com.sheishuo.app.common.views.BaseToolbar;
+import com.sheishuo.app.core_module.mine.view.ui.activity.UserInfoDetailActivity;
+import com.sheishuo.app.impl.SheishuoUI;
+import com.sheishuo.app.main.activity.MainActivity;
+import com.sheishuo.app.main.adapter.CircleListAdapter;
+import com.sheishuo.app.main.adapter.OnCircleItemClickListener;
+import com.sheishuo.app.main.fragment.CircleOfFriendsFragment;
+import com.sheishuo.app.main.model.MainTab;
+import com.sheishuo.app.main.presenter.CirclePresenter;
+
+public class CirclePersonActivity extends SheishuoUI {
+
+    private static final String EXTRA_DATA_USER_ID = "EXTRA_DATA_USER_ID";
+
+    private String TAG = this.getClass().getSimpleName();
+    public final static int REFRESH_CIRCLE = 10000;
+    private boolean isLoaded = false;
+
+    private Context context = this;
+    private CirclePresenter presenter = new CirclePresenter(this);
+
+    private RecyclerView recyclerView;
+    private ImageView avatar,backgroundImg;
+    private TextView username;
+    private BaseToolbar toolbar;
+    private MainActivity parent;
+
+    private CircleListAdapter adapter;
+
+    private LinearLayoutManager layoutManager = new LinearLayoutManager(context);
+
+    private Handler handler = getHandler();
+
+    private Toast toast = null;
+    private long lastTime = System.currentTimeMillis();
+    private String targetId;
+
+
+    public static final void start(Context context, String targetId) {
+        Intent intent = new Intent();
+        intent.setClass(context, CirclePersonActivity.class);
+        intent.putExtra(EXTRA_DATA_USER_ID, targetId);
+        context.startActivity(intent);
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.circle_of_person_activity);
+        targetId = (String) getIntent().getSerializableExtra(EXTRA_DATA_USER_ID);
+
+        findViews();
+        initToolbar();
+
+        presenter.loadCircleList(AccountCache.getAccount().getId(), "0", targetId);
+
+        //初始化朋友圈首页界面
+        NimUserInfo user = NIMClient.getService(UserService.class).getUserInfo(targetId);
+        String avatarUrl = user.getAvatar();
+        Glide.with(SheishuoApplication.getContext()).load(avatarUrl).into(avatar);
+        Glide.with(this)
+                .load(SocialInfoCache.get(targetId).getSocial_banner())
+                .centerCrop()
+                .into(backgroundImg);
+
+        username.setText(user.getName());
+
+        isLoaded = true;
+    }
+
+
+    void findViews(){
+        toolbar = (BaseToolbar) findViewById(R.id.toolbar);
+
+        recyclerView = (RecyclerView) findViewById(R.id.circle_recyclerview);
+        avatar = (ImageView) findViewById(R.id.circle_avatar);
+        username = (TextView) findViewById(R.id.circle_username);
+        backgroundImg = (ImageView) findViewById(R.id.circle_background);
+    }
+
+    //初始化toolbar
+    void initToolbar(){
+        toolbar.setVisibility(View.VISIBLE);
+        toolbar.setTitle("动态");
+        toolbar.setBackOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                finish();
+            }
+        });
+
+        toolbar.setRightItems(new View[0]);
+    }
+
+    public void showToast(final String str){
+        handler.post(new Runnable() {
+            @Override
+            public void run() {
+                if (toast == null){
+                    toast = Toast.makeText(CirclePersonActivity.this, str, Toast.LENGTH_SHORT);
+                }else {
+                    toast.setText(str);
+                }
+                toast.show();
+
+            }
+        });
+    }
+
+    public void onCircleListLoaded(final CircleBean bean){
+
+
+        handler.post(new Runnable() {
+            @Override
+            public void run() {
+                if (adapter == null){
+                    adapter = new CircleListAdapter(CirclePersonActivity.this, bean);
+                    recyclerView.setLayoutManager(layoutManager);
+                    //初始化adapter监听事件
+                    adapter.setOnItemClickListener(new OnCircleItemClickListener() {
+                        @Override
+                        public void onItemClick(View view) {
+                            if (view instanceof LinearLayout){
+                                Log.e(TAG,"gridView");
+                                CircleBean.DBean.ListBean bean = (CircleBean.DBean.ListBean) view.getTag();
+                                Intent intent = new Intent(context, CircleDetailsActivity.class);
+                                intent.putExtra(CircleDetailsActivity.DATA,bean);
+                                startActivity(intent);
+                            }
+                        }
+
+                        @Override
+                        public void onLikedClick(View view) {
+                            CircleBean.DBean.ListBean bean = (CircleBean.DBean.ListBean) view.getTag();
+                            Log.e(TAG,"点赞的朋友圈ID === " + bean.getId());
+                            presenter.onUserLiked(bean.getId());
+                        }
+
+                        @Override
+                        public void onUserClick(View view) {
+                            CircleBean.DBean.ListBean bean = (CircleBean.DBean.ListBean) view.getTag();
+                            UserInfoDetailActivity.start(context, bean.getUser_id());
+                        }
+                    });
+
+                    recyclerView.setAdapter(adapter);
+                }else {
+                    adapter.addAll(bean);
+                    adapter.notifyDataSetChanged();
+                }
+            }
+        });
+    }
+
+    /**
+     * 加载更多朋友圈
+     * @param lastId
+     */
+    public void loadCircleListMore(String lastId){
+        showToast("正在加载更多内容...");
+        presenter.loadCircleList(AccountCache.getAccount().getId(), lastId, targetId);
+    }
+
+    /**
+     * 刷新朋友圈
+     */
+    public void refreshCircle(){
+        if (adapter != null){
+            //防止Inconsistency detected
+            recyclerView.getRecycledViewPool().clear();
+            recyclerView.scrollToPosition(0);
+
+            adapter.clearAll();
+            loadCircleListMore("");
+        }
+    }
+
+
+
+
+    @Override
+    public void onActivityResult(int requestCode, int resultCode, Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+        switch (resultCode){
+            case REFRESH_CIRCLE:
+                refreshCircle();
+                break;
+        }
+    }
+}

+ 2 - 2
app/src/com/sheishuo/app/core_module/friends/activity/ContactsListActivity.java

@@ -140,7 +140,7 @@ public class ContactsListActivity extends SheishuoUI {
             public void refresh(ContactDataAdapter contactAdapter, int position, FuncItem item) {
                 if (item == VERIFY) {
                     funcName.setText("新的朋友");
-                    image.setImageResource(R.drawable.icon_verify_remind);
+                    image.setImageResource(R.drawable.icon_new_friends);
                     image.setScaleType(ImageView.ScaleType.FIT_XY);
                 }
 //                else if (item == NORMAL_TEAM) {
@@ -149,7 +149,7 @@ public class ContactsListActivity extends SheishuoUI {
 //                }
                 else if (item == ADVANCED_TEAM) {
                     funcName.setText("群组");
-                    image.setImageResource(R.drawable.ic_advanced_team);
+                    image.setImageResource(R.drawable.icon_groups);
                 }else if (item == PHONE_CONTACTS){
                     funcName.setText("通讯录联系人");
                     image.setImageResource(R.drawable.ico_phone_contacts);

+ 12 - 11
app/src/com/sheishuo/app/core_module/mine/view/adapter/NearbyPeopleAdapter.java

@@ -16,6 +16,7 @@ import com.netease.nimlib.sdk.RequestCallback;
 import com.netease.nimlib.sdk.uinfo.UserService;
 import com.netease.nimlib.sdk.uinfo.model.NimUserInfo;
 import com.sheishuo.app.R;
+import com.sheishuo.app.core_module.mine.view.ui.activity.UserInfoDetailActivity;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -40,20 +41,20 @@ public class NearbyPeopleAdapter extends RecyclerView.Adapter<NearbyPeopleAdapte
     }
 
     @Override
-    public void onBindViewHolder(NearbyPeopleViewHolder holder, int position) {
-        NearbyPeople people = data.get(position);
-
-        if (NIMClient.getService(UserService.class).getUserInfo(people.getId()).getAvatar() != null) {
-            Glide.with(context)
-                    .load(NIMClient.getService(UserService.class).getUserInfo(people.getId()).getAvatar())
-                    .placeholder(R.drawable.nim_avatar_default)
-                    .into(holder.avatar);
-        }
-
+    public void onBindViewHolder(final NearbyPeopleViewHolder holder, final int position) {
+        final NearbyPeople people = data.get(position);
 
+        holder.avatar.loadBuddyAvatar(people.getId());
         holder.name.setText(getName(people.getId()));
 
         holder.distance.setText("相距" + people.getDist() + "米");
+
+        holder.itemView.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                UserInfoDetailActivity.start(context, people.getId());
+            }
+        });
     }
 
     @Override
@@ -107,7 +108,7 @@ public class NearbyPeopleAdapter extends RecyclerView.Adapter<NearbyPeopleAdapte
             super(itemView);
             avatar = (HeadImageView) itemView.findViewById(R.id.item_mine_neaby_people_avatar);
             name = (TextView) itemView.findViewById(R.id.item_mine_neaby_people_name);
-            bio = (TextView) itemView.findViewById(R.id.item_mine_neaby_people_bio);
+            //bio = (TextView) itemView.findViewById(R.id.item_mine_neaby_people_bio);
             distance = (TextView) itemView.findViewById(R.id.item_mine_neaby_people_distance);
 
         }

+ 35 - 19
app/src/com/sheishuo/app/core_module/mine/view/ui/activity/MineUploadPhotoActivity.java

@@ -4,6 +4,7 @@ import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.FrameLayout;
@@ -107,6 +108,16 @@ public class MineUploadPhotoActivity extends SheishuoUI {
             }
         });
 
+        toolbarRightTxt = new TextView(getBaseContext());
+        toolbarRightTxt.setText("");
+        toolbar.setRightItems(new View[]{toolbarRightTxt});
+    }
+
+    @Override
+    public void finish() {
+        Intent intent = new Intent();
+        setResult(MineUploadPhotoActivity.ADD_PHOTOS_CODE, intent);
+        super.finish();
     }
 
     /**
@@ -134,25 +145,30 @@ public class MineUploadPhotoActivity extends SheishuoUI {
                 int widthAndHeight = ImgUtil.getScreenWidth(context) / 3;
                 for (int i = 0;i < thumbUrls.size();i++){
                     ImageView imageView = ImgUtil.createImageView(context,widthAndHeight,widthAndHeight);
-                    Glide.with(context)
-                            .load(thumbUrls.get(i))
-                            .into(imageView);
-
-                    final int finalI = i;
-                    imageView.setOnClickListener(new View.OnClickListener() {
-                        @Override
-                        public void onClick(View v) {
-                            WatchPictureActivity.start(context,photoUrls,thumbUrls, finalI);
-                        }
-                    });
-
-                    imageView.setOnLongClickListener(new View.OnLongClickListener() {
-                        @Override
-                        public boolean onLongClick(View v) {
-                            showLongClickMenu(photos.get(finalI));
-                            return false;
-                        }
-                    });
+                    try {
+                        Glide.with(context)
+                                .load(thumbUrls.get(i))
+                                .into(imageView);
+
+                        final int finalI = i;
+                        imageView.setOnClickListener(new View.OnClickListener() {
+                            @Override
+                            public void onClick(View v) {
+                                WatchPictureActivity.start(context, photoUrls, thumbUrls, finalI);
+                            }
+                        });
+
+                        imageView.setOnLongClickListener(new View.OnLongClickListener() {
+                            @Override
+                            public boolean onLongClick(View v) {
+                                showLongClickMenu(photos.get(finalI));
+                                return false;
+                            }
+                        });
+                    }catch (Exception e)
+                    {
+                        Log.e("MineUploadPhotoActivity", e.getMessage());
+                    }
 
                     gridLayout.addView(imageView);
                 }

+ 82 - 0
app/src/com/sheishuo/app/core_module/mine/view/ui/activity/PersonalSettingsActivity.java

@@ -1,5 +1,6 @@
 package com.sheishuo.app.core_module.mine.view.ui.activity;
 
+import android.app.Activity;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
@@ -13,8 +14,11 @@ import android.widget.Switch;
 import android.widget.TextView;
 
 import com.bumptech.glide.Glide;
+import com.netease.nim.uikit.common.media.picker.PickImageHelper;
+import com.netease.nim.uikit.common.media.picker.model.PhotoInfo;
 import com.netease.nim.uikit.common.ui.imageview.HeadImageView;
 import com.netease.nimlib.sdk.NIMClient;
+import com.netease.nimlib.sdk.RequestCallback;
 import com.netease.nimlib.sdk.uinfo.UserInfoProvider;
 import com.netease.nimlib.sdk.uinfo.UserService;
 import com.netease.nimlib.sdk.uinfo.constant.UserInfoFieldEnum;
@@ -30,8 +34,10 @@ import com.sheishuo.app.common.views.BaseToolbar;
 import com.sheishuo.app.core_module.location.LocationSelectActivity;
 import com.sheishuo.app.core_module.sheishuo.view.ui.SettingTextEditActivity;
 import com.sheishuo.app.impl.SheishuoUI;
+import com.sheishuo.app.main.fragment.MineFragment;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 
@@ -301,6 +307,18 @@ public class PersonalSettingsActivity extends SheishuoUI {
             }
         });
 
+        avatarImg.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                pickImage(MineFragment.AVATAR_SELECTED);
+            }
+        });
+    }
+
+    private void pickImage(int requestCode){
+        PickImageHelper.PickImageOption option = new PickImageHelper.PickImageOption();
+        option.multiSelectMaxCount = 1;
+        PickImageHelper.pickImage(this, requestCode, option);
     }
 
     private void updateRealName()
@@ -397,6 +415,70 @@ public class PersonalSettingsActivity extends SheishuoUI {
                     showToast(context,"更新兴趣失败,请重试");
                 }
             });
+        } else if (resultCode == Activity.RESULT_OK){
+            Bundle result = data.getExtras();
+            if (!result.getBoolean("from_local")) {
+                //照相机
+                String filePath = result.getString("file_path");
+                if (requestCode == MineFragment.AVATAR_SELECTED){
+                    Glide.with(this).load(filePath)
+                            .centerCrop()
+                            .into(avatarImg);
+                    Map<UserInfoFieldEnum,Object> filedMap = new HashMap<>();
+                    filedMap.put(UserInfoFieldEnum.AVATAR,filePath);
+                    NIMClient.getService(UserService.class).updateUserInfo(filedMap).setCallback(new RequestCallback<Void>() {
+                        @Override
+                        public void onSuccess(Void aVoid) {
+                            showToast(getBaseContext(), "更新头像成功");
+                        }
+
+                        @Override
+                        public void onFailed(int i) {
+                            showToast(getBaseContext(), "更新头像失败");
+
+                        }
+
+                        @Override
+                        public void onException(Throwable throwable) {
+                            showToast(getBaseContext(), "更新头像失败");
+
+                        }
+                    });
+                }
+            }
+            else
+            {
+
+                //相册
+                List<PhotoInfo> photoInfoList = (List<PhotoInfo>) result.getSerializable("photo_list");
+                if (requestCode == MineFragment.AVATAR_SELECTED){
+                    Glide.with(this)
+                            .load(photoInfoList.get(0).getFilePath())
+                            .centerCrop()
+                            .into(avatarImg);
+                    Map<UserInfoFieldEnum,Object> filedMap = new HashMap<>();
+                    filedMap.put(UserInfoFieldEnum.AVATAR,photoInfoList.get(0).getAbsolutePath());
+                    NIMClient.getService(UserService.class).updateUserInfo(filedMap).setCallback(new RequestCallback<Void>() {
+                        @Override
+                        public void onSuccess(Void aVoid) {
+                            showToast(getBaseContext(), "更新头像成功");
+                        }
+
+                        @Override
+                        public void onFailed(int i) {
+                            showToast(getBaseContext(), "更新头像失败");
+
+                        }
+
+                        @Override
+                        public void onException(Throwable throwable) {
+                            showToast(getBaseContext(), "更新头像失败");
+
+                        }
+                    });
+
+                }
+            }
         }
     }
 

+ 31 - 3
app/src/com/sheishuo/app/core_module/mine/view/ui/activity/UserInfoDetailActivity.java

@@ -5,6 +5,7 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.util.Log;
 import android.view.View;
+import android.view.ViewGroup;
 import android.widget.Button;
 import android.widget.GridLayout;
 import android.widget.ImageView;
@@ -19,6 +20,7 @@ import com.netease.nimlib.sdk.friend.FriendService;
 import com.netease.nimlib.sdk.friend.constant.VerifyType;
 import com.netease.nimlib.sdk.friend.model.AddFriendData;
 import com.netease.nimlib.sdk.uinfo.UserService;
+import com.netease.nimlib.sdk.uinfo.constant.GenderEnum;
 import com.netease.nimlib.sdk.uinfo.model.NimUserInfo;
 import com.sheishuo.app.R;
 import com.sheishuo.app.cache.AccountCache;
@@ -30,7 +32,9 @@ import com.sheishuo.app.common.util.img.ImgUtil;
 import com.sheishuo.app.common.util.net.INet;
 import com.sheishuo.app.common.util.net.NetImpl;
 import com.sheishuo.app.common.util.net.ResponseCallback;
+import com.sheishuo.app.core_module.circle.activity.CirclePersonActivity;
 import com.sheishuo.app.impl.SheishuoUI;
+import com.sheishuo.app.impl.SheishuoUIKit;
 import com.sheishuo.app.session.SessionHelper;
 
 import java.util.ArrayList;
@@ -49,7 +53,7 @@ public class UserInfoDetailActivity extends SheishuoUI {
 
     private HeadImageView avatar;
 
-    private ImageView settingImg, backImg;
+    private ImageView settingImg, backImg, genderImg;
 
     private TextView nameTV, idTV, ageTV, hobbyTV, locationTV;
 
@@ -57,6 +61,8 @@ public class UserInfoDetailActivity extends SheishuoUI {
 
     private GridLayout personalPhotosLayout, tweetPhotosLayout;
 
+    private ViewGroup circleLayout;
+
     private INet net = new NetImpl();
 
     private String userId = "";
@@ -90,6 +96,7 @@ public class UserInfoDetailActivity extends SheishuoUI {
 
     void findViews() {
         avatar = findView(R.id.user_info_details_avatar);
+        genderImg = findView(R.id.user_info_details_gender);
         settingImg = findView(R.id.user_info_details_setting);
         backImg = findView(R.id.back_icon);
 
@@ -102,10 +109,12 @@ public class UserInfoDetailActivity extends SheishuoUI {
         followBtn = findView(R.id.user_info_details_follow_btn);
         chatBtn = findView(R.id.user_info_details_chat_btn);
         sendGiftBtn = findView(R.id.user_info_details_send_gift_btn);
+        sendGiftBtn.setVisibility(View.GONE);
 
 
         personalPhotosLayout = findView(R.id.user_info_details_personal_photos_layout);
         tweetPhotosLayout = findView(R.id.user_info_details_tweet_photos_layout);
+        circleLayout = findView(R.id.user_info_detail_circle);
     }
 
     void init() {
@@ -160,11 +169,17 @@ public class UserInfoDetailActivity extends SheishuoUI {
         chatBtn.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                SessionHelper.startP2PSession(context, userId);
+                SheishuoUIKit.startP2PSession(context, userId);
             }
         });
 
 
+        circleLayout.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                showCircle();
+            }
+        });
     }
 
 
@@ -239,7 +254,7 @@ public class UserInfoDetailActivity extends SheishuoUI {
                         if (circlePhotosThumb.size() > 0) {
                             tweetPhotosLayout.setVisibility(View.VISIBLE);
                             int widthAndHeight = ImgUtil.getScreenWidth(context) / 4;
-                            for (int i = 0; i < 4 && i < circlePhotosThumb.size(); i++) {
+                            for (int i = 0; i < 3 && i < circlePhotosThumb.size(); i++) {
 
 
                                 ImageView imageView = ImgUtil.getImageFromNet(context,circlePhotosThumb.get(i));
@@ -287,6 +302,15 @@ public class UserInfoDetailActivity extends SheishuoUI {
                             .load(nimUserInfos.get(0).getAvatar())
                             .into(avatar);
 
+                if(nimUserInfos.get(0).getGenderEnum() == GenderEnum.UNKNOWN || nimUserInfos.get(0).getGenderEnum() == GenderEnum.MALE)
+                {
+                    genderImg.setImageResource(R.drawable.mine_gender_male);
+                }
+                else
+                {
+                    genderImg.setImageResource(R.drawable.mine_gender_female);
+                }
+
             }
 
             @Override
@@ -302,6 +326,10 @@ public class UserInfoDetailActivity extends SheishuoUI {
         });
     }
 
+    private void showCircle()
+    {
+        CirclePersonActivity.start(context, userId);
+    }
 
     //关注相关
     public void followOrUnfollow(){

+ 9 - 0
app/src/com/sheishuo/app/core_module/sheishuo/view/ui/MoreGroupsInTheAreaActivity.java

@@ -58,6 +58,15 @@ public class MoreGroupsInTheAreaActivity extends SheishuoUI {
     }
 
     void init(){
+
+        toolbar.setTitle("更多地区房间");
+        toolbar.setBackOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                finish();
+            }
+        });
+
         List<String> districts = new ArrayList<>();
         districts.addAll(CityDataHelper.getArea(city));
         adapter = new AreaGroupsAdapter(context,new ArrayList<String>());

+ 8 - 0
app/src/com/sheishuo/app/core_module/sheishuo/view/ui/NearbyGroupActivity.java

@@ -62,6 +62,14 @@ public class NearbyGroupActivity extends SheishuoUI {
 
 
     void init(){
+        toolbar.setTitle("附近的群");
+        toolbar.setBackOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                finish();
+            }
+        });
+
         loadNearbyGroups();
     }
 

+ 11 - 0
app/src/com/sheishuo/app/core_module/sheishuo/view/ui/TeamSettingsActivity.java

@@ -32,6 +32,7 @@ import com.netease.nimlib.sdk.uinfo.UserService;
 import com.netease.nimlib.sdk.uinfo.model.NimUserInfo;
 import com.sheishuo.app.R;
 import com.sheishuo.app.common.util.img.ImgUtil;
+import com.sheishuo.app.common.views.BaseToolbar;
 import com.sheishuo.app.core_module.mine.view.ui.activity.UserInfoDetailActivity;
 import com.sheishuo.app.impl.SheishuoUI;
 import com.sheishuo.app.session.activity.MessageHistoryActivity;
@@ -98,6 +99,16 @@ public class TeamSettingsActivity extends SheishuoUI implements View.OnClickList
 
 
     void init() {
+
+        BaseToolbar toolbar = findView(R.id.toolbar);
+        toolbar.setTitle("设置");
+        toolbar.setBackOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                finish();
+            }
+        });
+
         team = getTeamService().queryTeamBlock(teamRoomId);
         teamNameTV.setText(team.getName());
         teamIntroductionTV.setText(team.getIntroduce());

+ 6 - 21
app/src/com/sheishuo/app/core_module/trade/view/ui/activity/TradeSearchActivity.java

@@ -26,6 +26,7 @@ public class TradeSearchActivity extends SheishuoUI {
 
     public static final int RESULT_CODE = 3400;
     public static final String RESULT_CONTENT = "result_content";
+    public static final String RESULT_KEY = "result_key";
 
     private String TAG = this.getClass().getSimpleName();
 
@@ -78,27 +79,11 @@ public class TradeSearchActivity extends SheishuoUI {
 
 
     private void searchTrade(){
-        String key = searchET.getText().toString();
-        net.searchTrade(key, 0, PAGE_TO_LOAD, new ResponseCallback() {
-            @Override
-            public void onSuccess(Object object) {
-                TradeBean bean = (TradeBean) object;
-                if (bean.getD().getList().size() > 0){
-                    Intent intent = new Intent();
-                    intent.putExtra(RESULT_CONTENT,bean);
-                    setResult(RESULT_CODE,intent);
-                }else {
-                    showToast(context,"搜索结果为空");
-                }
-
-                finish();
-            }
-
-            @Override
-            public void onFailed() {
-                showToast(context,"加载失败");
-            }
-        });
+        final String key = searchET.getText().toString();
+        Intent intent = new Intent();
+        intent.putExtra(RESULT_KEY, key);
+        setResult(RESULT_CODE,intent);
+        finish();
     }
 
 

+ 74 - 0
app/src/com/sheishuo/app/impl/SheishuoP2PMessageActivity.java

@@ -0,0 +1,74 @@
+package com.sheishuo.app.impl;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.ImageView;
+
+import com.netease.nim.uikit.session.SessionCustomization;
+import com.netease.nim.uikit.session.activity.P2PMessageActivity;
+import com.netease.nim.uikit.session.constant.Extras;
+import com.netease.nim.uikit.uinfo.UserInfoHelper;
+import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum;
+import com.netease.nimlib.sdk.msg.model.IMMessage;
+import com.sheishuo.app.R;
+import com.sheishuo.app.common.views.BaseToolbar;
+import com.sheishuo.app.core_module.mine.view.ui.activity.UserInfoDetailActivity;
+import com.sheishuo.app.core_module.mine.view.ui.activity.UserInfoSettingActivity;
+
+public class SheishuoP2PMessageActivity extends P2PMessageActivity {
+
+    private BaseToolbar baseToolbar;
+
+    public static void start(Context context, String contactId, SessionCustomization customization, IMMessage anchor) {
+        Intent intent = new Intent();
+        intent.putExtra(Extras.EXTRA_ACCOUNT, contactId);
+        intent.putExtra(Extras.EXTRA_CUSTOMIZATION, customization);
+        if (anchor != null) {
+            intent.putExtra(Extras.EXTRA_ANCHOR, anchor);
+        }
+        intent.setClass(context, SheishuoP2PMessageActivity.class);
+        intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
+
+        context.startActivity(intent);
+    }
+
+    @Override
+    protected int getContentViewId() {
+        return R.layout.message_activity;
+    }
+
+    @Override
+    protected void initToolBar() {
+        baseToolbar = findView(R.id.toolbar);
+        setSupportActionBar(baseToolbar);
+
+        baseToolbar.setBackOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                onBackPressed();
+                finish();
+            }
+        });
+
+        ImageView icon = new ImageView(getBaseContext());
+        icon.setImageResource(R.drawable.mine_settings_white);
+        icon.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Intent intent = new Intent(getBaseContext(),UserInfoSettingActivity.class);
+                intent.putExtra(UserInfoSettingActivity.USER_ID, sessionId);
+                startActivity(intent);
+            }
+        });
+        baseToolbar.setRightItems(new View[]{icon});
+    }
+
+    @Override
+    public void setTitle(CharSequence title) {
+        super.setTitle(title);
+        baseToolbar.setTitle(""+title);
+    }
+}

+ 109 - 57
app/src/com/sheishuo/app/impl/SheishuoTeamMessageActivity.java

@@ -12,6 +12,7 @@ import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
 import android.view.View;
+import android.widget.ImageView;
 import android.widget.TextView;
 import android.widget.Toast;
 
@@ -80,23 +81,73 @@ public class SheishuoTeamMessageActivity extends TeamMessageActivity {
     protected void findViews() {
         invalidTeamTipView = findView(R.id.invalid_team_tip);
         invalidTeamTipText = findView(R.id.invalid_team_text);
-        toolbar = findView(R.id.toolbar);
-        initToolbar();
-
-
     }
 
-
-    private void initToolbar() {
-
-
+    @Override
+    protected void initToolBar() {
+        toolbar = findView(R.id.toolbar);
         setSupportActionBar(toolbar);
+        toolbar.setBackOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                onBackPressed();
+                finish();
+            }
+        });
+    }
 
 
+    private void updateToolbar()
+    {
+        toolbar.setTitle(team.getName() + "(" + team.getMemberCount() + "人)");
+        if(isSystemTeam(team))
+        {
+            ImageView searchIcon = new ImageView(getBaseContext());
+            searchIcon.setImageResource(R.drawable.ic_action_search);
+            searchIcon.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    SearchMessageActivity.start(context, team.getId(), SessionTypeEnum.Team);
+                }
+            });
 
+            ImageView historyIcon = new ImageView(getBaseContext());
+            historyIcon.setImageResource(R.drawable.ico_trash);
+            historyIcon.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    showClearChatHistoryDialog();
+                }
+            });
+            toolbar.setRightItems(new View[]{searchIcon, historyIcon});
 
+            toolbar.setTitleOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    showTeamSetting();
+                }
+            });
+        }
+        else
+        {
+            ImageView settingIcon = new ImageView(getBaseContext());
+            settingIcon.setImageResource(R.drawable.mine_settings_white);
+            settingIcon.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    showTeamSetting();
+                }
+            });
+        }
     }
 
+    protected void showTeamSetting()
+    {
+        String teamId = team.getId();
+        Intent intent = new Intent(context, TeamSettingsActivity.class);
+        intent.putExtra(TeamSettingsActivity.TEAM_ID,teamId);
+        startActivity(intent);
+    }
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
@@ -123,56 +174,55 @@ public class SheishuoTeamMessageActivity extends TeamMessageActivity {
     }
 
 
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        MenuInflater inflater = new MenuInflater(context);
-        if (isSystemTeam(team)){
-            inflater.inflate(R.menu.system_team_chat_menu, menu);
-            MenuItemCompat.setShowAsAction(menu.findItem(R.id.team_chat_menu_search), MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
-            MenuItemCompat.setShowAsAction(menu.findItem(R.id.team_chat_menu_clear_chat_history), MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
-
-            toolbar.getTitleTxt().setOnClickListener(new View.OnClickListener() {
-                @Override
-                public void onClick(View v) {
-                    String teamId = team.getId();
-                    Intent intent = new Intent(context, TeamSettingsActivity.class);
-                    intent.putExtra(TeamSettingsActivity.TEAM_ID,teamId);
-                    startActivity(intent);
-                }
-            });
-        }else {
-            inflater.inflate(R.menu.normal_team_chat_menu, menu);
-            menu.getItem(0).setVisible(false);
-            MenuItemCompat.setShowAsAction(menu.findItem(R.id.team_chat_menu_search), MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
-            MenuItemCompat.setShowAsAction(menu.findItem(R.id.team_chat_menu_settings), MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
-        }
-
-        return super.onCreateOptionsMenu(menu);
-    }
+//    @Override
+//    public boolean onCreateOptionsMenu(Menu menu) {
+//        MenuInflater inflater = new MenuInflater(context);
+//        if (isSystemTeam(team)){
+//            inflater.inflate(R.menu.system_team_chat_menu, menu);
+//            MenuItemCompat.setShowAsAction(menu.findItem(R.id.team_chat_menu_search), MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
+//            MenuItemCompat.setShowAsAction(menu.findItem(R.id.team_chat_menu_clear_chat_history), MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
+//
+//            toolbar.getTitleTxt().setOnClickListener(new View.OnClickListener() {
+//                @Override
+//                public void onClick(View v) {
+//                    String teamId = team.getId();
+//                    Intent intent = new Intent(context, TeamSettingsActivity.class);
+//                    intent.putExtra(TeamSettingsActivity.TEAM_ID,teamId);
+//                    startActivity(intent);
+//                }
+//            });
+//        }else {
+//            inflater.inflate(R.menu.normal_team_chat_menu, menu);
+//            menu.getItem(0).setVisible(false);
+//            MenuItemCompat.setShowAsAction(menu.findItem(R.id.team_chat_menu_search), MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
+//            MenuItemCompat.setShowAsAction(menu.findItem(R.id.team_chat_menu_settings), MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
+//        }
+//
+//        return super.onCreateOptionsMenu(menu);
+//    }
+//
+//    @Override
+//    public boolean onOptionsItemSelected(MenuItem item) {
+//        switch (item.getItemId()) {
+//            case R.id.team_chat_menu_search:
+//                //搜索聊天记录
+//                SearchMessageActivity.start(context, team.getId(), SessionTypeEnum.Team);
+//                break;
+//            case R.id.team_chat_menu_clear_chat_history:
+//                //清空聊天记录
+//                if (team != null) {
+//                    showClearChatHistoryDialog();
+//                }
+//
+//                break;
+//            case R.id.team_chat_menu_settings:
+//                showTeamSetting();
+//                break;
+//        }
+//        return super.onOptionsItemSelected(item);
+//    }
 
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        switch (item.getItemId()) {
-            case R.id.team_chat_menu_search:
-                //搜索聊天记录
-                SearchMessageActivity.start(context, team.getId(), SessionTypeEnum.Team);
-                break;
-            case R.id.team_chat_menu_clear_chat_history:
-                //清空聊天记录
-                if (team != null) {
-                    showClearChatHistoryDialog();
-                }
 
-                break;
-            case R.id.team_chat_menu_settings:
-                String teamId = team.getId();
-                Intent intent = new Intent(context, TeamSettingsActivity.class);
-                intent.putExtra(TeamSettingsActivity.TEAM_ID,teamId);
-                startActivity(intent);
-                break;
-        }
-        return super.onOptionsItemSelected(item);
-    }
 
     /**
      * 请求群基本信息
@@ -215,10 +265,12 @@ public class SheishuoTeamMessageActivity extends TeamMessageActivity {
 
         team = d;
         fragment.setTeam(team);
-        toolbar.setTitle(team.getName() + "(" + team.getMemberCount() + "人)");
 
         setTitle(team == null ? sessionId : team.getName() + "(" + team.getMemberCount() + "人)");
 
+        updateToolbar();
+
+
         invalidTeamTipText.setText(team.getType() == TeamTypeEnum.Normal ? com.netease.nim.uikit.R.string.normal_team_invalid_tip : com.netease.nim.uikit.R.string.team_invalid_tip);
         invalidTeamTipView.setVisibility(team.isMyTeam() ? View.GONE : View.VISIBLE);
     }

+ 10 - 1
app/src/com/sheishuo/app/impl/SheishuoUIKit.java

@@ -41,6 +41,15 @@ public class SheishuoUIKit extends NimUIKit {
         SheishuoUIKit.startChatting(context, tid, SessionTypeEnum.Team, commonTeamSessionCustomization, anchor);
     }
 
+
+    public static void startP2PSession(Context context, String id) {
+        startChatting(context, id, SessionTypeEnum.P2P, commonP2PSessionCustomization, null);
+    }
+
+    public static void startP2PSession(Context context, String id, IMMessage anchor) {
+        startChatting(context, id, SessionTypeEnum.P2P, commonP2PSessionCustomization, anchor);
+    }
+
     /**
      * 打开一个聊天窗口,开始聊天
      *
@@ -53,7 +62,7 @@ public class SheishuoUIKit extends NimUIKit {
     public static void startChatting(Context context, String id, SessionTypeEnum sessionType, SessionCustomization
             customization, IMMessage anchor) {
         if (sessionType == SessionTypeEnum.P2P) {
-            P2PMessageActivity.start(context, id, customization, anchor);
+            SheishuoP2PMessageActivity.start(context, id, customization, anchor);
         } else if (sessionType == SessionTypeEnum.Team) {
             Log.e("TeamId",id);
             SheishuoTeamMessageActivity.start(context, id, customization, null, anchor);

+ 1 - 1
app/src/com/sheishuo/app/location/helper/NimLocationManager.java

@@ -248,7 +248,7 @@ public class NimLocationManager implements AMapLocationListener {
 	private void requestAmapLocation() {
         if (aMapLocationManager == null) {
             aMapLocationManager = LocationManagerProxy.getInstance(mContext);
-            aMapLocationManager.setGpsEnable(false);
+            aMapLocationManager.setGpsEnable(true);
             aMapLocationManager.requestLocationData(
                     LocationProviderProxy.AMapNetwork, 30 * 1000, 10, this);
         }

+ 4 - 0
app/src/com/sheishuo/app/login/LoginActivity.java

@@ -16,6 +16,7 @@ import android.widget.RadioButton;
 import android.widget.TextView;
 import android.widget.Toast;
 
+import com.netease.nim.uikit.common.ui.dialog.DialogMaker;
 import com.netease.nim.uikit.common.ui.dialog.EasyAlertDialogHelper;
 import com.sheishuo.app.cache.AccountCache;
 import com.sheishuo.app.R;
@@ -141,6 +142,8 @@ public class LoginActivity extends SheishuoUI implements View.OnClickListener{
         loginBtn.setEnabled(false);
         loginBtn.setText("登录中...");
 
+        DialogMaker.showProgressDialog(this, "登录中...");
+
         net.loginQuery(tel, pwd, new ResponseCallback() {
             @Override
             public void onSuccess(Object object) {
@@ -170,6 +173,7 @@ public class LoginActivity extends SheishuoUI implements View.OnClickListener{
                         Toast.makeText(context,"登录失败",Toast.LENGTH_SHORT).show();
                         loginBtn.setEnabled(true);
                         loginBtn.setText("登录");
+                        DialogMaker.dismissProgressDialog();
                     }
                 });
             }

+ 3 - 1
app/src/com/sheishuo/app/login/LoginAndRegActivity.java

@@ -10,6 +10,7 @@ import android.view.View;
 import android.widget.Button;
 import android.widget.Toast;
 
+import com.netease.nim.uikit.common.ui.dialog.DialogMaker;
 import com.netease.nim.uikit.permission.MPermission;
 import com.netease.nim.uikit.permission.annotation.OnMPermissionDenied;
 import com.netease.nim.uikit.permission.annotation.OnMPermissionGranted;
@@ -82,7 +83,7 @@ public class LoginAndRegActivity extends SheishuoUI implements View.OnClickListe
         final String mobile = (String) SPHelper.getParam(context,"mobile","");
         final String pwd = (String) SPHelper.getParam(context,"pwd","");
         if (!(mobile.isEmpty() || pwd.isEmpty())){
-            showToast(context,"自动登录中,请稍后");
+            DialogMaker.showProgressDialog(this, "登录中...");
             new NetImpl().loginQuery(mobile, pwd, new ResponseCallback() {
                 @Override
                 public void onSuccess(Object object) {
@@ -112,6 +113,7 @@ public class LoginAndRegActivity extends SheishuoUI implements View.OnClickListe
                             Toast.makeText(context,"登录失败",Toast.LENGTH_SHORT).show();
                             loginBtn.setEnabled(true);
                             loginBtn.setText("登录");
+                            DialogMaker.dismissProgressDialog();
                         }
                     });
                 }

+ 4 - 0
app/src/com/sheishuo/app/login/helper/LoginHelper.java

@@ -4,6 +4,7 @@ import android.app.Activity;
 import android.util.Log;
 
 import com.netease.nim.uikit.NimUIKit;
+import com.netease.nim.uikit.common.ui.dialog.DialogMaker;
 import com.netease.nimlib.sdk.AbortableFuture;
 import com.netease.nimlib.sdk.NIMClient;
 import com.netease.nimlib.sdk.RequestCallback;
@@ -65,6 +66,8 @@ public class LoginHelper {
                     MainActivity.start(activity, null);
 
                     activity.finish();
+
+                    DialogMaker.dismissProgressDialog();
                 }
 
                 @Override
@@ -76,6 +79,7 @@ public class LoginHelper {
                 public void onException(Throwable exception) {
                     Log.e(TAG,"exception");
                     exception.printStackTrace();
+                    DialogMaker.dismissProgressDialog();
                 }
             });
         }

+ 4 - 2
app/src/com/sheishuo/app/main/activity/MainActivity.java

@@ -33,6 +33,7 @@ import com.sheishuo.app.chatroom.helper.ChatRoomHelper;
 import com.sheishuo.app.common.views.BaseToolbar;
 import com.sheishuo.app.config.preference.UserPreferences;
 import com.sheishuo.app.core_module.location.LocationSelectActivity;
+import com.sheishuo.app.core_module.mine.view.ui.activity.MineUploadPhotoActivity;
 import com.sheishuo.app.core_module.trade.view.ui.activity.TradeChangePriorityActivity;
 import com.sheishuo.app.core_module.trade.view.ui.activity.TradeSearchActivity;
 import com.sheishuo.app.login.LoginActivity;
@@ -46,6 +47,7 @@ import com.sheishuo.app.impl.SheishuoUI;
 
 import java.util.ArrayList;
 
+import static com.sheishuo.app.main.fragment.CircleOfFriendsFragment.DELETE_CIRCLE;
 import static com.sheishuo.app.main.fragment.CircleOfFriendsFragment.REFRESH_CIRCLE;
 
 /**
@@ -266,7 +268,7 @@ public class MainActivity extends SheishuoUI {
         if(resultCode == TradeSearchActivity.RESULT_CODE){
             //搜索交易帖
             mainFragment.onActivityResult(requestCode,resultCode,data);
-        }else if(requestCode == MineFragment.AVATAR_SELECTED || requestCode == MineFragment.BANNER_SELECTED){
+        }else if(requestCode == MineFragment.AVATAR_SELECTED || requestCode == MineFragment.BANNER_SELECTED || resultCode == MineUploadPhotoActivity.ADD_PHOTOS_CODE){
             //我的---头像和背景图更改
             mainFragment.onActivityResult(requestCode,resultCode,data);
         }else if(resultCode == LocationSelectActivity.LOCATION_SELECTED_RESULT_CODE){
@@ -288,7 +290,7 @@ public class MainActivity extends SheishuoUI {
                 final ArrayList<String> selected = data.getStringArrayListExtra(ContactSelectActivity.RESULT_DATA);
                 TeamCreateHelper.createAdvancedTeam(MainActivity.this, selected);
             }
-        }else if(resultCode == REFRESH_CIRCLE){
+        }else if(resultCode == REFRESH_CIRCLE || resultCode == DELETE_CIRCLE){
             mainFragment.onActivityResult(requestCode,resultCode,data);
         }
 

+ 83 - 2
app/src/com/sheishuo/app/main/adapter/CircleListAdapter.java

@@ -1,7 +1,9 @@
 package com.sheishuo.app.main.adapter;
 
 import android.content.Context;
+import android.content.DialogInterface;
 import android.content.Intent;
+import android.support.v7.app.AlertDialog;
 import android.support.v7.widget.CardView;
 import android.support.v7.widget.RecyclerView;
 import android.text.Html;
@@ -24,11 +26,16 @@ import com.netease.nimlib.sdk.uinfo.UserService;
 import com.netease.nimlib.sdk.uinfo.model.NimUserInfo;
 import com.sheishuo.app.R;
 import com.sheishuo.app.SheishuoApplication;
+import com.sheishuo.app.cache.AccountCache;
 import com.sheishuo.app.common.beans.CircleBean;
 import com.sheishuo.app.common.util.img.ImgUtil;
+import com.sheishuo.app.common.util.net.INet;
+import com.sheishuo.app.common.util.net.NetImpl;
 import com.sheishuo.app.common.util.net.NetStatus;
+import com.sheishuo.app.common.util.net.ResponseCallback;
 import com.sheishuo.app.common.views.GridViewAdapter;
 import com.sheishuo.app.common.views.ImgGridView;
+import com.sheishuo.app.core_module.circle.activity.CirclePersonActivity;
 import com.sheishuo.app.core_module.circle.activity.NewCommentActivity;
 import com.sheishuo.app.main.fragment.CircleOfFriendsFragment;
 
@@ -52,7 +59,9 @@ public class CircleListAdapter  extends RecyclerView.Adapter<CircleListAdapter.C
     private OnCircleItemClickListener listener;
     private Context context;
     private CircleOfFriendsFragment circleFragment;
+    private CirclePersonActivity circleActivity;
     private Boolean FLAGS_ALL_LOADED = false;
+    private INet net = new NetImpl();
 
     public CircleListAdapter(CircleOfFriendsFragment fragment,CircleBean bean){
         data = new ArrayList<>();
@@ -61,6 +70,13 @@ public class CircleListAdapter  extends RecyclerView.Adapter<CircleListAdapter.C
         this.circleFragment = fragment;
     }
 
+    public CircleListAdapter(CirclePersonActivity circleActivity,CircleBean bean){
+        data = new ArrayList<>();
+        this.addAll(bean);
+        this.context = circleActivity;
+        this.circleActivity = circleActivity;
+    }
+
     @Override
     public CircleListViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
         View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.circle_item,parent,false);
@@ -82,6 +98,14 @@ public class CircleListAdapter  extends RecyclerView.Adapter<CircleListAdapter.C
         holder.usernameTV.setOnClickListener(this);
         holder.usernameTV.setTag(bean);
 
+        holder.deleteTV.setVisibility(bean.getUser_id().equals(AccountCache.getAccount().getId())? View.VISIBLE : View.GONE);
+        holder.deleteTV.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                delete(bean.getId());
+            }
+        });
+
         //直接评论
         holder.commentTV.setOnClickListener(new View.OnClickListener() {
             @Override
@@ -208,15 +232,70 @@ public class CircleListAdapter  extends RecyclerView.Adapter<CircleListAdapter.C
         //判断标志为缓存的Holder小于两个且最底部的Item
         if (position > data.size() - 2 && !FLAGS_ALL_LOADED) {
             Log.e("LOAED_ALL", String.valueOf(FLAGS_ALL_LOADED));
-            circleFragment.loadCircleListMore(data.get(data.size() - 1).getId());
+            if(circleFragment != null) circleFragment.loadCircleListMore(data.get(data.size() - 1).getId());
+            if(circleActivity != null) circleActivity.loadCircleListMore(data.get(data.size() - 1).getId());
         }else if (FLAGS_ALL_LOADED){
-            circleFragment.showToast("已无更多内容");
+            if(circleFragment != null) circleFragment.showToast("已无更多内容");
+            if(circleActivity != null) circleActivity.showToast("已无更多内容");
         }
 
 
     }
 
 
+    private void delete(final String id)
+    {
+        final AlertDialog.Builder normalDialog =
+                new AlertDialog.Builder(context);
+        normalDialog.setTitle("删除提示");
+        normalDialog.setMessage("确定删除该动态?");
+        normalDialog.setPositiveButton("确定",
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int which) {
+                        net.deleteSocial(id, new ResponseCallback() {
+                            @Override
+                            public void onSuccess(Object object) {
+                                circleFragment.showToast("删除成功");
+                                onDelete(id);
+                            }
+
+                            @Override
+                            public void onFailed() {
+                                circleFragment.showToast("删除失败");
+                            }});
+                    }
+                });
+        normalDialog.setNegativeButton("取消",
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int which) {
+
+                    }
+                });
+        // 显示
+        normalDialog.show();
+    }
+
+    public void onDelete(final String id)
+    {
+        circleFragment.getHandler().post(new Runnable() {
+            @Override
+            public void run() {
+                for(int i=0; i<data.size(); i++)
+                {
+                    CircleBean.DBean.ListBean bean = data.get(i);
+                    if(bean.getId().equals(id)) {
+                        data.remove(i);
+                        break;
+                    }
+                }
+                notifyDataSetChanged();
+            }
+        });
+    }
+
+
     //onViewRecycled重置item
     @Override
     public void onViewRecycled(CircleListViewHolder holder) {
@@ -344,6 +423,7 @@ public class CircleListAdapter  extends RecyclerView.Adapter<CircleListAdapter.C
                 ,locationTV
                 ,dateTV
                 ,visitNumTv
+                ,deleteTV
                 ,likesNumTV
                 ,likedUserTV
                 ,commentTV
@@ -367,6 +447,7 @@ public class CircleListAdapter  extends RecyclerView.Adapter<CircleListAdapter.C
             locationTV = (TextView) v.findViewById(R.id.location_tv);
             dateTV = (TextView) v.findViewById(R.id.date_tv);
             visitNumTv = (TextView) v.findViewById(visit_num_tv);
+            deleteTV = (TextView) v.findViewById(R.id.delete_tv);
             likesNumTV = (TextView) v.findViewById(R.id.likes_num_tv);
             likedUserTV = (TextView) v.findViewById(circle_liked_user_tv);
             commentTV = (TextView) v.findViewById(R.id.comment_num_tv);

+ 4 - 3
app/src/com/sheishuo/app/main/fragment/AreaGroupsFragment.java

@@ -172,8 +172,8 @@ public class AreaGroupsFragment extends MainTabFragment {
                         if (location.length() > 6) {
                             location = location.substring(0, 6) + "...";
                         }
-
-                        toolbarLeftTxt.setText(location);
+                        if(toolbarLeftTxt != null)
+                            toolbarLeftTxt.setText(location);
                     }
                 });
             }
@@ -432,7 +432,8 @@ public class AreaGroupsFragment extends MainTabFragment {
                 location = location.substring(0, 6) + "...";
             }
 
-            toolbarLeftTxt.setText(location);
+            if(toolbarLeftTxt != null)
+                toolbarLeftTxt.setText(location);
         }
     }
 }

+ 15 - 5
app/src/com/sheishuo/app/main/fragment/CircleOfFriendsFragment.java

@@ -4,6 +4,7 @@ import android.content.Context;
 import android.content.Intent;
 import android.graphics.Color;
 import android.os.Build;
+import android.os.Bundle;
 import android.os.Handler;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
@@ -19,6 +20,7 @@ import android.widget.Toast;
 import com.bumptech.glide.Glide;
 import com.netease.nimlib.sdk.NIMClient;
 import com.netease.nimlib.sdk.uinfo.UserService;
+import com.netease.nimlib.sdk.uinfo.constant.GenderEnum;
 import com.netease.nimlib.sdk.uinfo.model.NimUserInfo;
 import com.sheishuo.app.cache.AccountCache;
 import com.sheishuo.app.R;
@@ -46,6 +48,9 @@ import com.sheishuo.app.main.presenter.CirclePresenter;
 public class CircleOfFriendsFragment extends MainTabFragment{
     private String TAG = this.getClass().getSimpleName();
     public final static int REFRESH_CIRCLE = 10000;
+    public final static int DELETE_CIRCLE = 10001;
+    public final static String DELETE_ID = "delete";
+
     private boolean isLoaded = false;
 
     private Context context = getActivity();
@@ -79,7 +84,7 @@ public class CircleOfFriendsFragment extends MainTabFragment{
         initToolbar();
 
 
-        presenter.loadCircleList(AccountCache.getAccount().getId(),"0");
+        presenter.loadCircleList(AccountCache.getAccount().getId(),"0", null);
 
         //初始化朋友圈首页界面
         NimUserInfo user = NIMClient.getService(UserService.class).getUserInfo(AccountCache.getAccount().getId());
@@ -91,8 +96,6 @@ public class CircleOfFriendsFragment extends MainTabFragment{
                 .into(backgroundImg);
 
         username.setText(user.getName());
-
-
         isLoaded = true;
 
     }
@@ -198,7 +201,7 @@ public class CircleOfFriendsFragment extends MainTabFragment{
                                 CircleBean.DBean.ListBean bean = (CircleBean.DBean.ListBean) view.getTag();
                                 Intent intent = new Intent(getActivity(), CircleDetailsActivity.class);
                                 intent.putExtra(CircleDetailsActivity.DATA,bean);
-                                startActivity(intent);
+                                startActivityForResult(intent, 0);
                             }
                         }
 
@@ -231,7 +234,7 @@ public class CircleOfFriendsFragment extends MainTabFragment{
      */
     public void loadCircleListMore(String lastId){
         showToast("正在加载更多内容...");
-        presenter.loadCircleList(AccountCache.getAccount().getId(),lastId);
+        presenter.loadCircleList(AccountCache.getAccount().getId(),lastId, null);
     }
 
 
@@ -259,6 +262,13 @@ public class CircleOfFriendsFragment extends MainTabFragment{
             case REFRESH_CIRCLE:
                 refreshCircle();
                 break;
+            case DELETE_CIRCLE:
+                Bundle bundle = data.getExtras();
+                String id = bundle.getString(DELETE_ID);
+                adapter.onDelete(id);
+                break;
         }
     }
+
+
 }

+ 3 - 2
app/src/com/sheishuo/app/main/fragment/HomeFragment.java

@@ -42,6 +42,7 @@ import com.sheishuo.app.common.ui.viewpager.FadeInOutPageTransformer;
 import com.sheishuo.app.common.ui.viewpager.PagerSlidingTabStrip;
 import com.sheishuo.app.common.views.BottomNavigationViewEx;
 import com.sheishuo.app.core_module.location.LocationSelectActivity;
+import com.sheishuo.app.core_module.mine.view.ui.activity.MineUploadPhotoActivity;
 import com.sheishuo.app.core_module.trade.view.ui.activity.TradeChangePriorityActivity;
 import com.sheishuo.app.core_module.trade.view.ui.activity.TradeSearchActivity;
 import com.sheishuo.app.main.activity.MainActivity;
@@ -444,11 +445,10 @@ public class HomeFragment extends TFragment implements OnPageChangeListener, Rem
         Log.e(TAG, requestCode + "   " + resultCode);
 
         //我的 选择照片回调
-        if (resultCode == Activity.RESULT_OK && (requestCode == MineFragment.AVATAR_SELECTED || requestCode == MineFragment.BANNER_SELECTED)) {
+        if (resultCode == MineUploadPhotoActivity.ADD_PHOTOS_CODE || (resultCode == Activity.RESULT_OK && (requestCode == MineFragment.AVATAR_SELECTED || requestCode == MineFragment.BANNER_SELECTED))) {
             for (Fragment fragment : getFragmentManager().getFragments()) {
                 if (fragment instanceof MineFragment)
                     fragment.onActivityResult(requestCode, resultCode, data);
-
             }
             //防止往下传递,为什么不会消耗掉这个事件?
             resultCode = -9999;
@@ -472,6 +472,7 @@ public class HomeFragment extends TFragment implements OnPageChangeListener, Rem
 
             //朋友圈自动刷新回调
             case CircleOfFriendsFragment.REFRESH_CIRCLE:
+            case CircleOfFriendsFragment.DELETE_CIRCLE:
                 for (Fragment fragment : getFragmentManager().getFragments()) {
                     if (fragment instanceof CircleOfFriendsFragment)
                         fragment.onActivityResult(requestCode, resultCode, data);

+ 22 - 6
app/src/com/sheishuo/app/main/fragment/MineFragment.java

@@ -24,7 +24,9 @@ import com.netease.nimlib.sdk.NIMClient;
 import com.netease.nimlib.sdk.RequestCallback;
 import com.netease.nimlib.sdk.uinfo.UserInfoProvider;
 import com.netease.nimlib.sdk.uinfo.UserService;
+import com.netease.nimlib.sdk.uinfo.constant.GenderEnum;
 import com.netease.nimlib.sdk.uinfo.constant.UserInfoFieldEnum;
+import com.netease.nimlib.sdk.uinfo.model.NimUserInfo;
 import com.sheishuo.app.R;
 import com.sheishuo.app.cache.AccountCache;
 import com.sheishuo.app.cache.MineSocialCache;
@@ -61,7 +63,7 @@ public class MineFragment extends MainTabFragment implements View.OnClickListene
     private MainActivity parent;
     private BaseToolbar toolbar;
     private ScrollView layout;
-    private ImageView avatarImg,settingsImg,bannerImg,editPhotoImg;
+    private ImageView avatarImg,settingsImg,bannerImg,editPhotoImg,genderImg;
     private TextView usernameTV,userIdTV;
     private LinearLayout neabyPeopleOption,mineTradeOption,settingsOptions;
     private GridLayout photosLayout;
@@ -100,6 +102,7 @@ public class MineFragment extends MainTabFragment implements View.OnClickListene
         mineTradeOption = findView(R.id.mine_fragment_trade);
         settingsOptions = findView(R.id.mine_fragment_setting);
         photosLayout = findView(R.id.mine_fragment_photos_layout);
+        genderImg = findView(R.id.mine_fragment_gender);
 
         avatarImg.setOnClickListener(this);
         bannerImg.setOnClickListener(this);
@@ -119,10 +122,19 @@ public class MineFragment extends MainTabFragment implements View.OnClickListene
 
         mineId = AccountCache.getAccount().getId();
 
-                UserInfoProvider.UserInfo user = NIMClient.getService(UserService.class).getUserInfo(AccountCache.getAccount().getId());
+        NimUserInfo user = NIMClient.getService(UserService.class).getUserInfo(AccountCache.getAccount().getId());
         if (user.getAvatar() != null)
             Glide.with(getActivity()).load(user.getAvatar()).into(avatarImg);
 
+        if(user.getGenderEnum() == GenderEnum.UNKNOWN || user.getGenderEnum() == GenderEnum.MALE)
+        {
+            genderImg.setImageResource(R.drawable.mine_gender_male);
+        }
+        else
+        {
+            genderImg.setImageResource(R.drawable.mine_gender_female);
+        }
+
         usernameTV.setText(getName(mineId));
         userIdTV.setText("ID:" + mineId);
 
@@ -188,6 +200,7 @@ public class MineFragment extends MainTabFragment implements View.OnClickListene
 
     @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
+        Log.e("MineFragment Result : ", ""+resultCode);
         super.onActivityResult(requestCode, resultCode, data);
         if (resultCode == Activity.RESULT_OK){
             Bundle result = data.getExtras();
@@ -283,9 +296,11 @@ public class MineFragment extends MainTabFragment implements View.OnClickListene
                     });
                 }
             }
-
-
         }
+        else if(resultCode == MineUploadPhotoActivity.ADD_PHOTOS_CODE) {
+            initPhotosWall(AccountCache.getAccount().getId());
+        }
+
     }
 
     private void showToast(final String str){
@@ -405,7 +420,7 @@ public class MineFragment extends MainTabFragment implements View.OnClickListene
                     imageView.setOnClickListener(new View.OnClickListener() {
                         @Override
                         public void onClick(View v) {
-                            startActivity(new Intent(getActivity(), MineUploadPhotoActivity.class));
+                            startActivityForResult(new Intent(getActivity(), MineUploadPhotoActivity.class), 0);
                         }
                     });
                     photosLayout.addView(imageView);
@@ -418,7 +433,8 @@ public class MineFragment extends MainTabFragment implements View.OnClickListene
                 uploadBtn.setOnClickListener(new View.OnClickListener() {
                     @Override
                     public void onClick(View v) {
-                        startActivity(new Intent(getActivity(), MineUploadPhotoActivity.class));
+                        Intent intent = new Intent(getActivity(), MineUploadPhotoActivity.class);
+                        startActivityForResult(intent, 0);
                     }
                 });
 

+ 38 - 5
app/src/com/sheishuo/app/main/fragment/TradeListFragment.java

@@ -88,6 +88,7 @@ public class TradeListFragment extends MainTabFragment {
     public int PAGE_TO_LOAD = 1;
     public int TYPE_TO_LOAD = TradeModel.TYPE_ALL;
     public int MENU_ITEM_CHECKED = R.id.trade_sort_0;
+    public String searchKey;
     public TextView priorityTV = null;
     public String priorityBeanId;
 
@@ -196,6 +197,7 @@ public class TradeListFragment extends MainTabFragment {
             public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) {
                 MENU_ITEM_CHECKED = checkedId;
                 clearTradeList();
+                searchKey = null;
                 switch (checkedId){
                     case R.id.trade_sort_0:
                         loadTradeList(TradeModel.TYPE_ALL,1);
@@ -219,7 +221,36 @@ public class TradeListFragment extends MainTabFragment {
     public void loadTradeList(int type,int page){
         TYPE_TO_LOAD = type;
         PAGE_TO_LOAD = page;
-        presenter.loadTradeList(type,page);
+        if(presenter != null)
+        {
+            if(searchKey != null)
+            {
+                loadSearchList();
+            }
+            else {
+                presenter.loadTradeList(type, page);
+            }
+        }
+    }
+
+    private void loadSearchList()
+    {
+        net.searchTrade(searchKey, 0, PAGE_TO_LOAD, new ResponseCallback() {
+            @Override
+            public void onSuccess(Object object) {
+                TradeBean bean = (TradeBean) object;
+                if (bean.getD().getList().size() > 0){
+                    onPageLoaded(bean);
+                }else {
+                    showToast("搜索结果为空");
+                }
+            }
+
+            @Override
+            public void onFailed() {
+                showToast("加载失败");
+            }
+        });
     }
 
 
@@ -310,7 +341,8 @@ public class TradeListFragment extends MainTabFragment {
         }else if (TradeSearchActivity.RESULT_CODE == resultCode){
             if (adapter != null){
                 adapter.clearAll();
-                adapter.addAll((TradeBean) data.getSerializableExtra(TradeSearchActivity.RESULT_CONTENT));
+                searchKey = (String) data.getSerializableExtra(TradeSearchActivity.RESULT_KEY);
+                loadTradeList(0, 1);
             }
         }
         else if (LocationSelectActivity.LOCATION_SELECTED_RESULT_CODE == resultCode) {
@@ -324,7 +356,8 @@ public class TradeListFragment extends MainTabFragment {
                 location = location.substring(0, 6) + "...";
             }
 
-            toolbarLeftTxt.setText(location);
+            if(toolbarLeftTxt != null)
+                toolbarLeftTxt.setText(location);
         }
     }
 
@@ -439,8 +472,8 @@ public class TradeListFragment extends MainTabFragment {
                         if (location.length() > 6) {
                             location = location.substring(0, 6) + "...";
                         }
-
-                        toolbarLeftTxt.setText(location);
+                        if(toolbarLeftTxt != null)
+                            toolbarLeftTxt.setText(location);
                     }
                 });
             }

+ 2 - 1
app/src/com/sheishuo/app/main/model/CircleModel.java

@@ -30,7 +30,7 @@ public class CircleModel implements ICircle {
 
     //获取朋友圈列表
     @Override
-    public void getCircleList(final String user_id, final String last_id) {
+    public void getCircleList(final String user_id, final String last_id, final String target_id) {
         NetStatus.IS_BUSY = true;
         new Thread(new Runnable() {
             @Override
@@ -39,6 +39,7 @@ public class CircleModel implements ICircle {
                 FormBody body = new FormBody.Builder()
                         .add("user_id",user_id)
                         .add("last_id",last_id)
+                        .add("target_id", target_id==null?"":target_id)
                         .build();
 
                 net.post(NetInfo.CIRCLE_LIST, body, new ResponseCallback() {

+ 1 - 1
app/src/com/sheishuo/app/main/model/ICircle.java

@@ -10,7 +10,7 @@ public interface ICircle {
      * @param user_id   用户ID
      * @param last_id   最后一条朋友圈消息ID
      */
-    void getCircleList(String user_id,String last_id);
+    void getCircleList(String user_id,String last_id, String target_id);
 
 
 }

+ 17 - 5
app/src/com/sheishuo/app/main/presenter/CirclePresenter.java

@@ -6,6 +6,7 @@ import android.widget.Toast;
 
 import com.sheishuo.app.common.beans.CircleBean;
 import com.sheishuo.app.common.util.net.NetStatus;
+import com.sheishuo.app.core_module.circle.activity.CirclePersonActivity;
 import com.sheishuo.app.main.fragment.CircleOfFriendsFragment;
 import com.sheishuo.app.main.model.CircleModel;
 
@@ -16,32 +17,43 @@ import com.sheishuo.app.main.model.CircleModel;
 public class CirclePresenter {
     Context context;
     CircleOfFriendsFragment fragment;
+    CirclePersonActivity activity;
     CircleModel model;
+
     public CirclePresenter(CircleOfFriendsFragment fragment){
         this.fragment = fragment;
         model = new CircleModel(this);
         context = fragment.getActivity();
     }
 
+    public CirclePresenter(CirclePersonActivity activity){
+        this.activity = activity;
+        model = new CircleModel(this);
+        context = activity;
+    }
+
 
     //显示Toast
     public void showToast(String str){
-        fragment.showToast(str);
+        if(fragment != null) fragment.showToast(str);
+        if(activity != null) activity.showToast(str);
     }
 
     //加载列表
-    public void loadCircleList(String user_id,String last_id){
+    public void loadCircleList(String user_id,String last_id, String target_id){
         if (NetStatus.IS_BUSY){
-            fragment.showToast("正在加载中...");
+            if(fragment != null) fragment.showToast("正在加载中...");
+            if(activity != null) fragment.showToast("正在加载中...");
         }else {
-            model.getCircleList(user_id,last_id);
+            model.getCircleList(user_id,last_id, target_id);
         }
     }
 
     //加载完成回调
     public void onCircleListLoaded(CircleBean bean){
         NetStatus.IS_BUSY = false;
-        fragment.onCircleListLoaded(bean);
+        if(fragment != null) fragment.onCircleListLoaded(bean);
+        if(activity != null) activity.onCircleListLoaded(bean);
     }
 
 

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

@@ -17,6 +17,7 @@ import com.netease.nimlib.sdk.team.model.TeamMember;
 import com.sheishuo.app.SheishuoCache;
 import com.sheishuo.app.contact.activity.UserProfileActivity;
 import com.sheishuo.app.core_module.mine.view.ui.activity.UserInfoDetailActivity;
+import com.sheishuo.app.impl.SheishuoUIKit;
 import com.sheishuo.app.session.action.AVChatAction;
 import com.sheishuo.app.session.action.FileAction;
 import com.sheishuo.app.session.action.GuessAction;
@@ -128,10 +129,12 @@ public class SessionHelper {
             if (RobotInfoCache.getInstance().getRobotByAccount(account) != null) {
                 NimUIKit.startChatting(context, account, SessionTypeEnum.P2P, getRobotCustomization(), anchor);
             } else {
-                NimUIKit.startP2PSession(context, account, anchor);
+                //NimUIKit.startP2PSession(context, account, anchor);
+                SheishuoUIKit.startP2PSession(context, account, anchor);
             }
         } else {
-            NimUIKit.startChatting(context, account, SessionTypeEnum.P2P, getMyP2pCustomization(), anchor);
+            //NimUIKit.startChatting(context, account, SessionTypeEnum.P2P, getMyP2pCustomization(), anchor);
+            SheishuoUIKit.startChatting(context, account, SessionTypeEnum.P2P, getMyP2pCustomization(), anchor);
         }
     }
 

+ 20 - 1
uikit/src/com/netease/nim/uikit/contact/core/viewholder/ContactHolder.java

@@ -5,6 +5,7 @@ import android.view.View;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
 
+import com.bumptech.glide.Glide;
 import com.netease.nim.uikit.NimUIKit;
 import com.netease.nim.uikit.R;
 import com.netease.nim.uikit.cache.TeamDataCache;
@@ -32,7 +33,25 @@ public class ContactHolder extends AbsContactViewHolder<ContactItem> {
             head.loadBuddyAvatar(contact.getContactId());
         } else {
             Team team = TeamDataCache.getInstance().getTeamById(contact.getContactId());
-            head.loadTeamIconByTeam(team);
+            if (team.getName().equals("国家聊天室")) {
+                Glide.with(context).load(R.drawable.group_country).into(head);
+            } else if (team.getName().contains("市") || team.getName().contains("省")) {
+                Glide.with(context).load(R.drawable.group_province_city)
+                        .into(head);
+            } else if (team.getName().contains("区") || team.getName().contains("县")) {
+                Glide.with(context).load(R.drawable.group_district)
+                        .placeholder(R.drawable.group_district)
+                        .into(head);
+            } else {
+                if (team.getIcon().isEmpty()) {
+                    Glide.with(context).load(R.drawable.nim_avatar_group).into(head);
+                } else {
+                    Glide.with(context)
+                            .load(team.getIcon())
+                            .into(head);
+                }
+            }
+            //head.loadTeamIconByTeam(team);
         }
         name.setText(contact.getDisplayName());
         headLayout.setOnClickListener(new View.OnClickListener() {