Junqin Wang 8 éve
szülő
commit
da6500dc74
100 módosított fájl, 3176 hozzáadás és 365 törlés
  1. 20 2
      app/AndroidManifest.xml
  2. 5 8
      app/app.iml
  3. 9 0
      app/res/drawable-anydpi/ico_like_grey.xml
  4. BIN
      app/res/drawable-hdpi/ic_action_settings.png
  5. BIN
      app/res/drawable-hdpi/ico_circle_new_comment.png
  6. BIN
      app/res/drawable-hdpi/ico_trade_publish.png
  7. BIN
      app/res/drawable-mdpi/ic_action_settings.png
  8. BIN
      app/res/drawable-mdpi/ico_circle_new_comment.png
  9. BIN
      app/res/drawable-mdpi/ico_trade_publish.png
  10. BIN
      app/res/drawable-xhdpi/ic_action_settings.png
  11. BIN
      app/res/drawable-xhdpi/ico_circle_new_comment.png
  12. BIN
      app/res/drawable-xhdpi/ico_trade_publish.png
  13. BIN
      app/res/drawable-xxhdpi/ic_action_settings.png
  14. BIN
      app/res/drawable-xxhdpi/ico_circle_new_comment.png
  15. BIN
      app/res/drawable-xxhdpi/ico_trade_publish.png
  16. BIN
      app/res/drawable-xxxhdpi/ic_action_settings.png
  17. BIN
      app/res/drawable-xxxhdpi/ico_circle_new_comment.png
  18. BIN
      app/res/drawable-xxxhdpi/ico_trade_publish.png
  19. 6 0
      app/res/drawable/shape_edittext_rc_solid_bg_grey.xml
  20. 1 1
      app/res/layout/area_groups_list_fragment.xml
  21. 207 0
      app/res/layout/circle_details.xml
  22. 91 0
      app/res/layout/circle_details_comment_layout.xml
  23. 25 0
      app/res/layout/circle_details_comment_to_layout.xml
  24. 5 4
      app/res/layout/circle_item.xml
  25. 39 0
      app/res/layout/circle_new_comment.xml
  26. 8 8
      app/res/layout/mine_settings.xml
  27. 182 0
      app/res/layout/mine_settings_privacy_activity.xml
  28. 28 0
      app/res/layout/setting_text_edit.xml
  29. 0 21
      app/res/layout/team_settings_activity.xml
  30. 258 0
      app/res/layout/team_setttins.xml
  31. 0 122
      app/res/layout/trade_detail_activity.xml
  32. 140 0
      app/res/layout/trade_details.xml
  33. 36 23
      app/res/layout/trade_list_fragment.xml
  34. 9 3
      app/res/layout/trade_list_item.xml
  35. 37 0
      app/res/layout/trade_list_search.xml
  36. 9 0
      app/res/layout/trade_publish_activity.xml
  37. 1 1
      app/res/menu/main_botton_navi_menu.xml
  38. 12 0
      app/res/menu/normal_team_chat_menu.xml
  39. 0 0
      app/res/menu/system_team_chat_menu.xml
  40. 41 31
      app/res/menu/trade_menu.xml
  41. 14 0
      app/res/values-v21/styles-activity.xml
  42. 8 0
      app/res/values/arrays.xml
  43. 7 5
      app/res/values/colors.xml
  44. 2 0
      app/res/values/ids.xml
  45. 1 1
      app/res/values/strings.xml
  46. 9 0
      app/res/values/styles-activity.xml
  47. 5 0
      app/src/com/sheishuo/app/SheishuoApplication.java
  48. 1 1
      app/src/com/sheishuo/app/SheishuoCache.java
  49. 2 2
      app/src/com/sheishuo/app/common/beans/CircleBean.java
  50. 2 1
      app/src/com/sheishuo/app/common/beans/TradeBean.java
  51. 8 0
      app/src/com/sheishuo/app/common/util/data/SPHelper.java
  52. 1 1
      app/src/com/sheishuo/app/common/util/img/ImgUtil.java
  53. 9 1
      app/src/com/sheishuo/app/common/util/net/INet.java
  54. 193 2
      app/src/com/sheishuo/app/common/util/net/NetImpl.java
  55. 5 0
      app/src/com/sheishuo/app/common/util/net/NetInfo.java
  56. 21 7
      app/src/com/sheishuo/app/common/views/GridViewAdapter.java
  57. 0 5
      app/src/com/sheishuo/app/common/views/ImgGridView.java
  58. 223 0
      app/src/com/sheishuo/app/core_module/circle/activity/CircleDetailsActivity.java
  59. 90 0
      app/src/com/sheishuo/app/core_module/circle/activity/NewCommentActivity.java
  60. 1 1
      app/src/com/sheishuo/app/core_module/circle/model/NewTweetModel.java
  61. 2 0
      app/src/com/sheishuo/app/core_module/mine/view/ui/activity/MineTradeActivity.java
  62. 62 0
      app/src/com/sheishuo/app/core_module/mine/view/ui/activity/PrivacyActivity.java
  63. 97 0
      app/src/com/sheishuo/app/core_module/mine/view/ui/activity/SettingsActivity.java
  64. 11 0
      app/src/com/sheishuo/app/core_module/sheishuo/view/ui/CreateNewGroupActivity.java
  65. 63 0
      app/src/com/sheishuo/app/core_module/sheishuo/view/ui/SettingTextEditActivity.java
  66. 284 0
      app/src/com/sheishuo/app/core_module/sheishuo/view/ui/TeamSettingsActivity.java
  67. 48 0
      app/src/com/sheishuo/app/core_module/trade/model/TradeModel.java
  68. 35 1
      app/src/com/sheishuo/app/core_module/trade/presenter/TradePresenter.java
  69. 4 3
      app/src/com/sheishuo/app/core_module/trade/view/adapter/TradeItemAdapter.java
  70. 0 59
      app/src/com/sheishuo/app/core_module/trade/view/ui/activity/TradeDetailActivity.java
  71. 134 0
      app/src/com/sheishuo/app/core_module/trade/view/ui/activity/TradeDetailsActivity.java
  72. 353 0
      app/src/com/sheishuo/app/core_module/trade/view/ui/activity/TradePublishActivity.java
  73. 63 0
      app/src/com/sheishuo/app/core_module/trade/view/ui/activity/TradeSearchActivity.java
  74. 84 13
      app/src/com/sheishuo/app/impl/SheishuoTeamMessageActivity.java
  75. 18 0
      app/src/com/sheishuo/app/impl/SheishuoTeamMessageFragment.java
  76. 6 0
      app/src/com/sheishuo/app/impl/SheishuoUI.java
  77. 6 2
      app/src/com/sheishuo/app/login/LoginActivity.java
  78. 9 2
      app/src/com/sheishuo/app/login/LoginAndRegActivity.java
  79. 8 5
      app/src/com/sheishuo/app/login/helper/LoginHelper.java
  80. 3 0
      app/src/com/sheishuo/app/main/activity/MainActivity.java
  81. 5 3
      app/src/com/sheishuo/app/main/adapter/AreaGroupsAdapter.java
  82. 39 9
      app/src/com/sheishuo/app/main/adapter/CircleListAdapter.java
  83. 3 0
      app/src/com/sheishuo/app/main/fragment/AreaGroupsFragment.java
  84. 12 6
      app/src/com/sheishuo/app/main/fragment/CircleOfFriendsFragment.java
  85. 26 4
      app/src/com/sheishuo/app/main/fragment/MineFragment.java
  86. 30 7
      app/src/com/sheishuo/app/main/fragment/TradeListFragment.java
  87. BIN
      uikit/res/drawable-hdpi/group_country.png
  88. BIN
      uikit/res/drawable-hdpi/group_district.png
  89. BIN
      uikit/res/drawable-hdpi/group_province_city.png
  90. BIN
      uikit/res/drawable-mdpi/group_country.png
  91. BIN
      uikit/res/drawable-mdpi/group_district.png
  92. BIN
      uikit/res/drawable-mdpi/group_province_city.png
  93. BIN
      uikit/res/drawable-xhdpi/group_country.png
  94. BIN
      uikit/res/drawable-xhdpi/group_district.png
  95. BIN
      uikit/res/drawable-xhdpi/group_province_city.png
  96. BIN
      uikit/res/drawable-xxhdpi/group_country.png
  97. BIN
      uikit/res/drawable-xxhdpi/group_district.png
  98. BIN
      uikit/res/drawable-xxhdpi/group_province_city.png
  99. BIN
      uikit/res/drawable-xxxhdpi/group_country.png
  100. BIN
      uikit/res/drawable-xxxhdpi/group_district.png

+ 20 - 2
app/AndroidManifest.xml

@@ -121,11 +121,21 @@
             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.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"/>
@@ -135,12 +145,20 @@
             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-->
-        <activity android:name=".core_module.trade.view.ui.activity.TradeDetailActivity"
-            android:theme="@style/AppTheme.NoActionBar"/>
         <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.friends.activity.ContactsListActivity"

+ 5 - 8
app/app.iml

@@ -73,6 +73,9 @@
       <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
       <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
       <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
+      <excludeFolder url="file://$MODULE_DIR$/build/.DS_Store" />
+      <excludeFolder url="file://$MODULE_DIR$/build/freeline" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/.DS_Store" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/builds" />
@@ -87,8 +90,10 @@
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/multi-dex" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/proguard-rules" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/reload-dex" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res.job" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/restart-dex" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" />
@@ -141,13 +146,5 @@
     <orderEntry type="library" exported="" name="support-compat-25.3.1" level="project" />
     <orderEntry type="library" exported="" name="animated-vector-drawable-25.3.1" level="project" />
     <orderEntry type="module" module-name="uikit" exported="" />
-    <orderEntry type="library" exported="" name="java-json" level="project" />
-    <orderEntry type="library" exported="" name="renderscript-v8" level="project" />
-    <orderEntry type="library" exported="" name="glide-3.7.0" level="project" />
-    <orderEntry type="library" exported="" name="nim-avchat-4.0.0" level="project" />
-    <orderEntry type="library" exported="" name="constraint-layout-solver-1.0.2" level="project" />
-    <orderEntry type="library" exported="" name="nim-basesdk-4.0.0" level="project" />
-    <orderEntry type="library" exported="" name="fastjson-1.1.34.android" level="project" />
-    <orderEntry type="library" exported="" name="nim-lucene-4.0.0" level="project" />
   </component>
 </module>

+ 9 - 0
app/res/drawable-anydpi/ico_like_grey.xml

@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:fillColor="#919191"
+        android:pathData="M1,21h4L5,9L1,9v12zM23,10c0,-1.1 -0.9,-2 -2,-2h-6.31l0.95,-4.57 0.03,-0.32c0,-0.41 -0.17,-0.79 -0.44,-1.06L14.17,1 7.59,7.59C7.22,7.95 7,8.45 7,9v10c0,1.1 0.9,2 2,2h9c0.83,0 1.54,-0.5 1.84,-1.22l3.02,-7.05c0.09,-0.23 0.14,-0.47 0.14,-0.73v-1.91l-0.01,-0.01L23,10z"/>
+</vector>

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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


+ 6 - 0
app/res/drawable/shape_edittext_rc_solid_bg_grey.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <corners android:radius="15dp"/>
+    <solid android:color="@color/grey_light_light"/>
+</shape>

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

@@ -82,7 +82,7 @@
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:gravity="end"
-                android:text="用户创建聊天室" />
+                android:text="用户创建群组" />
         </LinearLayout>
 
         <LinearLayout

+ 207 - 0
app/res/layout/circle_details.xml

@@ -0,0 +1,207 @@
+<?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:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <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"
+            app:title="详情" />
+    </android.support.design.widget.AppBarLayout>
+
+    <ScrollView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
+
+            <android.support.constraint.ConstraintLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:padding="16dp">
+
+                <com.netease.nim.uikit.common.ui.imageview.HeadImageView
+                    android:id="@+id/circle_details_avatar"
+                    android:layout_width="48dp"
+                    android:layout_height="48dp"
+                    android:layout_marginLeft="8dp"
+                    android:layout_marginStart="8dp"
+                    android:layout_marginTop="8dp"
+                    android:src="@drawable/nim_avatar_default"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <TextView
+                    android:id="@+id/circle_details_name"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="15dp"
+                    android:layout_marginStart="15dp"
+                    android:text="用户名"
+                    app:layout_constraintLeft_toRightOf="@+id/circle_details_avatar"
+                    app:layout_constraintTop_toTopOf="@+id/circle_details_avatar" />
+
+                <TextView
+                    android:id="@+id/circle_details_date"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="发布时间"
+                    app:layout_constraintBottom_toBottomOf="@+id/circle_details_avatar"
+                    app:layout_constraintLeft_toLeftOf="@+id/circle_details_name" />
+
+            </android.support.constraint.ConstraintLayout>
+
+            <com.sheishuo.app.common.views.PartlyHighLightTextView
+                android:id="@+id/circle_details_content"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="8dp"
+                android:layout_marginStart="8dp"
+                android:layout_marginTop="7dp"
+                android:text="朋友圈内容朋友圈内容"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/circle_details_date" />
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:gravity="center">
+                <GridLayout
+                    android:id="@+id/circle_details_imgs_grid"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:numColumns="2"
+                    android:layout_margin="16dp" />
+            </LinearLayout>
+
+
+            <LinearLayout
+                android:id="@+id/circle_details_info_layout"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:background="@color/color_background"
+                android:orientation="vertical">
+                <!--浏览量,喜欢,评论计数-->
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:background="@color/white"
+                    android:gravity="end"
+                    android:orientation="horizontal"
+                    android:padding="8dp">
+
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:src="@drawable/circle_eye" />
+
+                    <TextView
+                        android:id="@+id/circle_details_read_num"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="123"
+                        android:textColor="@color/grey_light" />
+
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:src="@drawable/circle_likes" />
+
+                    <TextView
+                        android:id="@+id/circle_details_like_num"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="123"
+                        android:textColor="@color/grey_light" />
+
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:src="@drawable/circle_comments" />
+
+                    <TextView
+                        android:id="@+id/circle_details_comment_num"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="评论"
+                        android:textColor="@color/grey_light" />
+
+
+                </LinearLayout>
+                <!--点赞用户头像-->
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="8dp"
+                    android:background="@color/white"
+                    android:orientation="horizontal"
+                    android:padding="8dp">
+
+                    <LinearLayout
+                        android:id="@+id/circle_details_avatar_layout"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="9"
+                        android:orientation="horizontal" />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:gravity="end"
+                        android:text="3人已赞" />
+                </LinearLayout>
+
+                <!--间隔-->
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal"
+                    android:padding="8dp">
+
+                    <View
+                        android:layout_width="4dp"
+                        android:layout_height="16dp"
+                        android:background="@color/colorPrimary" />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="4dp"
+                        android:layout_marginStart="4dp"
+                        android:text="全部评论"
+                        android:textColor="@color/grey_light" />
+                </LinearLayout>
+
+
+                <LinearLayout
+                    android:id="@+id/circle_details_comments_layout"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:background="@color/white"
+                    android:orientation="vertical" >
+                    <TextView
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:background="@color/white"
+                        android:gravity="center"
+                        android:padding="64dp"
+                        android:text="暂无评论" />
+                    </LinearLayout>
+
+
+            </LinearLayout>
+
+        </LinearLayout>
+    </ScrollView>
+</LinearLayout>

+ 91 - 0
app/res/layout/circle_details_comment_layout.xml

@@ -0,0 +1,91 @@
+<?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"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:orientation="vertical" android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <android.support.constraint.ConstraintLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:padding="16dp"
+        android:background="@color/white">
+        <com.netease.nim.uikit.common.ui.imageview.HeadImageView
+            android:id="@+id/circle_details_comment_layout_avatar"
+            android:layout_width="48dp"
+            android:layout_height="48dp"
+            app:layout_constraintTop_toTopOf="parent"
+            android:layout_marginTop="8dp"
+            android:layout_marginLeft="8dp"
+            app:layout_constraintLeft_toLeftOf="parent"
+            android:layout_marginStart="8dp"
+            android:src="@drawable/nim_avatar_default"/>
+
+        <TextView
+            android:id="@+id/circle_details_comment_layout_name"
+            android:layout_width="44dp"
+            android:layout_height="16dp"
+            android:text="用户名"
+            app:layout_constraintLeft_toRightOf="@+id/circle_details_comment_layout_avatar"
+            android:layout_marginLeft="21dp"
+            app:layout_constraintTop_toTopOf="@+id/circle_details_comment_layout_avatar"
+            android:layout_marginStart="21dp" />
+
+        <TextView
+            android:id="@+id/circle_details_comment_layout_date"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="发布时间"
+            app:layout_constraintLeft_toLeftOf="@+id/circle_details_comment_layout_name"
+            android:layout_marginTop="15dp"
+            app:layout_constraintTop_toBottomOf="@+id/circle_details_comment_layout_name" />
+
+        <ImageView
+            android:id="@+id/circle_details_comment_layout_like"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:src="@drawable/ico_like_grey"
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintRight_toRightOf="parent" />
+
+
+        <TextView
+            android:id="@+id/circle_details_comment_layout_content"
+            android:layout_width="268dp"
+            android:layout_height="48dp"
+            android:padding="16dp"
+            app:layout_constraintLeft_toLeftOf="@+id/circle_details_comment_layout_date"
+            android:layout_marginTop="8dp"
+            app:layout_constraintTop_toBottomOf="@+id/circle_details_comment_layout_date"
+            android:layout_marginRight="8dp"
+            app:layout_constraintRight_toRightOf="parent"
+            android:layout_marginEnd="8dp" />
+
+
+        <LinearLayout
+            android:id="@+id/circle_details_comment_layout_comment_to_layout"
+            android:layout_width="268dp"
+            android:layout_height="150dp"
+            android:orientation="vertical"
+            android:background="@color/grey_light_light"
+            android:layout_marginRight="8dp"
+            app:layout_constraintRight_toRightOf="@+id/circle_details_comment_layout_content"
+            android:layout_marginLeft="8dp"
+            app:layout_constraintLeft_toLeftOf="@+id/circle_details_comment_layout_content"
+            android:layout_marginTop="16dp"
+            app:layout_constraintTop_toBottomOf="@+id/circle_details_comment_layout_content"
+            app:layout_constraintHorizontal_bias="0.491"
+            tools:layout_editor_absoluteX="113dp"
+            android:visibility="gone">
+
+
+        </LinearLayout>
+    </android.support.constraint.ConstraintLayout>
+
+
+
+
+    
+    
+
+</LinearLayout>

+ 25 - 0
app/res/layout/circle_details_comment_to_layout.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical" android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:padding="8dp">
+
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal">
+        <ImageView
+            android:id="@+id/circle_details_comment_to_layout_avatar"
+            android:layout_width="32dp"
+            android:layout_height="32dp" />
+
+        <TextView
+            android:id="@+id/circle_details_comment_to_layout_name_and_content"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content" />
+
+    </LinearLayout>
+
+
+</LinearLayout>

+ 5 - 4
app/res/layout/circle_item.xml

@@ -11,8 +11,8 @@
     android:paddingBottom="5dp">
 
 
-    <android.support.v7.widget.CardView
-        android:id="@+id/circle_item_cardview"
+    <LinearLayout
+        android:id="@+id/circle_item_layout"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         app:cardBackgroundColor="@android:color/white">
@@ -67,7 +67,8 @@
                     android:layout_height="wrap_content"
                     android:scrollbars="none"
                     android:numColumns="2"
-                    android:horizontalSpacing="5dp" />
+                    android:horizontalSpacing="5dp"
+                    android:clickable="true"/>
 
                 <LinearLayout
                     android:layout_width="match_parent"
@@ -177,7 +178,7 @@
                 </LinearLayout>
             </LinearLayout>
         </LinearLayout>
-    </android.support.v7.widget.CardView>
+    </LinearLayout>
 
     <View style="@style/horizontal_light_thin_divider" />
 

+ 39 - 0
app/res/layout/circle_new_comment.xml

@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical" android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:gravity="bottom"
+    android:id="@+id/new_comment_layout"
+    >
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:background="@color/grey_light"/>
+    <LinearLayout
+        
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="center_vertical"
+        android:paddingStart="16dp"
+        android:paddingEnd="16dp"
+        android:paddingTop = "8dp"
+        android:paddingBottom="8dp"
+        android:background="@color/white">
+
+        <EditText
+            android:id="@+id/new_comment_ET"
+            android:layout_weight="9"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:hint="我要评论"
+            android:textColorHint="@color/grey_light"
+            android:background="@drawable/shape_edittext_rc_solid_bg_grey"
+            android:padding="8dp"/>
+
+        <ImageView
+            android:id="@+id/new_comment_submit_img"
+            android:layout_width="32dp"
+            android:layout_height="32dp"
+            android:src="@drawable/ico_circle_new_comment"/>
+    </LinearLayout>
+</LinearLayout>

+ 8 - 8
app/res/layout/mine_settings.xml

@@ -18,7 +18,7 @@
     </android.support.design.widget.AppBarLayout>
 
     <LinearLayout
-        android:id="@+id/personal_settings_security_layout"
+        android:id="@+id/settings_security_layout"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:orientation="horizontal"
@@ -33,7 +33,7 @@
             android:text="账户与安全" />
 
         <TextView
-            android:id="@+id/personal_settings_security_TV"
+            android:id="@+id/settings_security_TV"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:gravity="center"
@@ -54,7 +54,7 @@
         android:layout_height="1dp"
         android:background="@color/grey_light_light" />
     <LinearLayout
-        android:id="@+id/personal_settings_notify_layout"
+        android:id="@+id/settings_notify_layout"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:orientation="horizontal"
@@ -69,7 +69,7 @@
             android:text="消息通知" />
 
         <TextView
-            android:id="@+id/personal_settings_notify_TV"
+            android:id="@+id/settings_notify_TV"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:gravity="center"
@@ -90,7 +90,7 @@
         android:layout_height="1dp"
         android:background="@color/grey_light_light" />
     <LinearLayout
-        android:id="@+id/personal_settings_privacy_layout"
+        android:id="@+id/settings_privacy_layout"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:orientation="horizontal"
@@ -120,7 +120,7 @@
         android:layout_height="1dp"
         android:background="@color/grey_light_light" />
     <LinearLayout
-        android:id="@+id/personal_settings_feedback_layout"
+        android:id="@+id/settings_feedback_layout"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:orientation="horizontal"
@@ -151,7 +151,7 @@
         android:background="@color/grey_light_light" />
 
     <LinearLayout
-        android:id="@+id/personal_settings_about_layout"
+        android:id="@+id/settings_about_layout"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:orientation="horizontal"
@@ -183,7 +183,7 @@
         android:background="@color/grey_light_light" />
 
     <Button
-        android:id="@+id/mine_settings_quit_btn"
+        android:id="@+id/settings_quit_btn"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:text="退出登录"

+ 182 - 0
app/res/layout/mine_settings_privacy_activity.xml

@@ -0,0 +1,182 @@
+<?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:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/grey_light_light">
+
+    <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:title="隐私"
+            app:left_text="返回"/>
+    </android.support.design.widget.AppBarLayout>
+
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:padding="16dp"
+        android:orientation="horizontal"
+        android:background="@color/white">
+        <TextView
+            android:layout_weight="7"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="加我为好友需要验证"/>
+
+        <Switch
+            android:id="@+id/settings_privacy_layout_add_friends_switch"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content" />
+    </LinearLayout>
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:background="@color/grey_light"/>
+
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:padding="16dp"
+        android:orientation="horizontal"
+        android:background="@color/white"
+        android:layout_marginTop="8dp">
+        <TextView
+            android:layout_weight="7"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="通过手机号找到我"/>
+
+        <Switch
+            android:id="@+id/settings_privacy_layout_find_by_mobile_switch"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content" />
+    </LinearLayout>
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:background="@color/grey_light"/>
+
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:padding="16dp"
+        android:orientation="horizontal"
+        android:background="@color/white">
+        <TextView
+            android:layout_weight="7"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="通过谁说号找到我"/>
+
+        <Switch
+            android:id="@+id/settings_privacy_layout_find_by_sheishuo_switch"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content" />
+    </LinearLayout>
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:background="@color/grey_light"/>
+
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:padding="16dp"
+        android:orientation="horizontal"
+        android:background="@color/white">
+        <TextView
+            android:layout_weight="7"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="通过用户名找到我"/>
+
+        <Switch
+            android:id="@+id/settings_privacy_layout_find_by_username_switch"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content" />
+    </LinearLayout>
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:background="@color/grey_light"/>
+
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:padding="16dp"
+        android:orientation="horizontal"
+        android:background="@color/white"
+        android:layout_marginTop="8dp">
+        <TextView
+            android:layout_weight="7"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="允许陌生人查看我的10条动态"/>
+
+        <Switch
+            android:id="@+id/settings_privacy_layout_public_to_everyone_switch"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content" />
+    </LinearLayout>
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:background="@color/grey_light"/>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:padding="16dp"
+        android:orientation="horizontal"
+        android:background="@color/white"
+        android:layout_marginTop="8dp">
+        <TextView
+            android:layout_weight="7"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="特效开关"/>
+
+        <Switch
+            android:id="@+id/settings_privacy_layout_effects_switch"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content" />
+    </LinearLayout>
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:background="@color/grey_light"/>
+
+    <LinearLayout
+        android:id="@+id/settings_privacy_layout_blacklist"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:padding="16dp"
+        android:orientation="horizontal"
+        android:background="@color/white"
+        android:gravity="center_vertical">
+        <TextView
+            android:layout_weight="7"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="黑名单"/>
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:src="@drawable/right_arrow"/>
+    </LinearLayout>
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:background="@color/grey_light"/>
+</LinearLayout>

+ 28 - 0
app/res/layout/setting_text_edit.xml

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical" android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <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="wrap_content"
+        android:padding="8dp">
+        <EditText
+            android:id="@+id/edittext"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:hint="请输入需要设置的内容"/>
+    </LinearLayout>
+
+
+</LinearLayout>

+ 0 - 21
app/res/layout/team_settings_activity.xml

@@ -1,21 +0,0 @@
-<?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:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-    <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"
-        android:orientation="horizontal">
-        <com.sheishuo.app.common.views.BaseToolbar
-            android:id="@+id/toolbar"
-            android:layout_width="match_parent"
-            android:layout_height="?attr/actionBarSize"
-            android:background="?attr/colorPrimary"
-            app:titleTextAppearance="@style/Toolbar.TitleText" />
-    </android.support.design.widget.AppBarLayout>
-</LinearLayout>

+ 258 - 0
app/res/layout/team_setttins.xml

@@ -0,0 +1,258 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <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:title="群聊设置" />
+    </android.support.design.widget.AppBarLayout>
+
+    <ScrollView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
+
+            <LinearLayout
+                android:id="@+id/team_settings_room_name_layout"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:gravity="center"
+                android:orientation="horizontal"
+                android:padding="16dp">
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="9"
+                    android:text="群聊名称"
+                    android:textSize="16sp" />
+
+                <TextView
+                    android:id="@+id/team_settings_room_name_TV"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:text="群聊名称"
+                    android:textColor="@color/grey_light"
+                    android:textSize="16sp" />
+            </LinearLayout>
+
+            <View
+                android:layout_width="match_parent"
+                android:layout_height="1dp"
+                android:background="@color/grey_light_light" />
+
+            <LinearLayout
+                android:id="@+id/team_settings_introduction_layout"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="vertical"
+                android:padding="16dp">
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="群聊注意事项"
+                    android:textSize="16sp" />
+
+                <TextView
+                    android:id="@+id/team_settings_introduction_TV"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:text="群注意事项群注意事项群注意事项群注意事项群注意事项群注意事项群注意事项群注意事项群注意事项群注意事项"
+                    android:textColor="@color/grey_light"
+                    android:textSize="16sp" />
+            </LinearLayout>
+
+            <View
+                android:layout_width="match_parent"
+                android:layout_height="1dp"
+                android:background="@color/grey_light_light" />
+
+            <LinearLayout
+                android:id="@+id/team_settings_member_count_layout"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="16dp"
+                android:gravity="center_horizontal"
+                android:orientation="horizontal"
+                android:padding="16dp">
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="9"
+                    android:text="群聊成员"
+                    android:textSize="16sp" />
+
+                <TextView
+                    android:id="@+id/team_settings_member_count_tv"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:text="99人"
+                    android:textColor="@color/grey_light"
+                    android:textSize="16sp" />
+
+                <ImageView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:src="@drawable/right_arrow" />
+
+            </LinearLayout>
+
+            <View
+                android:layout_width="match_parent"
+                android:layout_height="1dp"
+                android:background="@color/grey_light_light" />
+
+            <HorizontalScrollView
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content">
+
+                <LinearLayout
+                    android:id="@+id/team_settings_member_avatars_layout"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal"
+                    android:padding="16dp"/>
+            </HorizontalScrollView>
+
+
+            <View
+                android:layout_width="match_parent"
+                android:layout_height="1dp"
+                android:background="@color/grey_light_light" />
+
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal"
+                android:padding="16dp">
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="9"
+                    android:text="消息免打扰"
+                    android:textSize="16sp" />
+
+                <Switch
+                    android:id="@+id/team_settings_room_mute_switch"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:textColor="@color/grey_light"
+                    android:textSize="16sp" />
+            </LinearLayout>
+
+            <View
+                android:layout_width="match_parent"
+                android:layout_height="1dp"
+                android:background="@color/grey_light_light" />
+
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal"
+                android:padding="16dp">
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="9"
+                    android:text="置顶聊天"
+                    android:textSize="16sp" />
+
+                <Switch
+                    android:id="@+id/team_settings_room_pin_switch"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:textColor="@color/grey_light"
+                    android:textSize="16sp" />
+            </LinearLayout>
+
+
+            <View
+                android:layout_width="match_parent"
+                android:layout_height="1dp"
+                android:background="@color/grey_light_light" />
+
+            <LinearLayout
+                android:id="@+id/team_settings_chat_record_layout"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="16dp"
+                android:gravity="center_horizontal"
+                android:orientation="horizontal"
+                android:padding="16dp">
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="9"
+                    android:text="查看聊天记录"
+                    android:textSize="16sp" />
+
+
+                <ImageView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:src="@drawable/right_arrow" />
+
+            </LinearLayout>
+
+            <View
+                android:layout_width="match_parent"
+                android:layout_height="1dp"
+                android:background="@color/grey_light_light" />
+
+            <LinearLayout
+                android:id="@+id/team_settings_clear_chat_record_layout"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="16dp"
+                android:gravity="center_horizontal"
+                android:orientation="horizontal"
+                android:padding="16dp">
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="9"
+                    android:text="清空聊天记录"
+                    android:textSize="16sp" />
+
+            </LinearLayout>
+
+
+            <Button
+                android:id="@+id/team_settings_quit_btn"
+                android:layout_width="128dp"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:layout_marginTop="16dp"
+                android:background="@drawable/btn1_selector"
+                android:text="退出该房间"
+                android:textColor="@color/white" />
+
+
+        </LinearLayout>
+
+    </ScrollView>
+</LinearLayout>

+ 0 - 122
app/res/layout/trade_detail_activity.xml

@@ -1,122 +0,0 @@
-<?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"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical">
-
-    <com.sheishuo.app.common.views.BaseToolbar
-        android:id="@+id/toolbar"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:background="@color/colorPrimary"
-        android:title="详情" />
-    <ScrollView
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-
-        <android.support.constraint.ConstraintLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:padding="8dp">
-
-            <com.netease.nim.uikit.common.ui.imageview.HeadImageView
-                android:id="@+id/trade_detail_avatar"
-                android:layout_width="48dp"
-                android:layout_height="48dp"
-                android:layout_marginLeft="8dp"
-                android:layout_marginStart="8dp"
-                android:layout_marginTop="8dp"
-                android:src="@drawable/ic_add_friends"
-                app:layout_constraintLeft_toLeftOf="parent"
-                app:layout_constraintTop_toTopOf="parent" />
-
-            <TextView
-                android:id="@+id/trade_detail_username"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginLeft="15dp"
-                android:layout_marginStart="15dp"
-                android:layout_marginTop="0dp"
-                android:text="用户名"
-                android:textSize="16sp"
-                app:layout_constraintLeft_toRightOf="@+id/trade_detail_avatar"
-                app:layout_constraintTop_toTopOf="@+id/trade_detail_avatar" />
-
-            <TextView
-                android:id="@+id/trade_detail_location"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginLeft="8dp"
-                android:layout_marginStart="8dp"
-                android:layout_marginTop="12dp"
-                android:text="地理位置"
-                android:textColor="@color/grey_light"
-                android:textSize="14dp"
-                app:layout_constraintLeft_toLeftOf="@+id/trade_detail_username"
-                app:layout_constraintRight_toRightOf="@+id/trade_detail_username"
-                app:layout_constraintTop_toBottomOf="@+id/trade_detail_username" />
-
-            <TextView
-                android:id="@+id/trade_detail_date"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginEnd="8dp"
-                android:layout_marginLeft="135dp"
-                android:layout_marginRight="8dp"
-                android:layout_marginStart="135dp"
-                android:text="2017.08.04"
-                app:layout_constraintHorizontal_bias="0.171"
-                app:layout_constraintLeft_toRightOf="@+id/trade_detail_username"
-                app:layout_constraintRight_toRightOf="parent"
-                app:layout_constraintTop_toTopOf="@+id/trade_detail_username" />
-
-            <TextView
-                android:id="@+id/trade_detail_priority"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginEnd="8dp"
-                android:layout_marginRight="8dp"
-                android:text="置顶1314"
-                app:layout_constraintBottom_toBottomOf="@+id/trade_detail_location"
-                app:layout_constraintRight_toLeftOf="@+id/trade_detail_views" />
-
-            <TextView
-                android:id="@+id/trade_detail_views"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="阅读101"
-                app:layout_constraintBottom_toBottomOf="@+id/trade_detail_priority"
-                app:layout_constraintRight_toRightOf="@+id/trade_detail_date" />
-
-            <TextView
-                android:id="@+id/trade_detail_content"
-                android:layout_width="336dp"
-                android:layout_height="wrap_content"
-                android:layout_marginLeft="8dp"
-                android:layout_marginRight="8dp"
-                android:layout_marginTop="8dp"
-                android:text="这里是内容这里是内容这里
-            是内容这里是内容这里是内容这
-            里是内容这里是内容这里是内容"
-                app:layout_constraintLeft_toLeftOf="parent"
-                app:layout_constraintRight_toRightOf="parent"
-                app:layout_constraintTop_toBottomOf="@+id/trade_detail_priority"
-                android:layout_marginStart="8dp"
-                android:layout_marginEnd="8dp" />
-
-            <LinearLayout
-                android:id="@+id/trade_detail_imgs_layout"
-                android:layout_width="352dp"
-                android:layout_height="300dp"
-                android:layout_marginTop="27dp"
-                app:layout_constraintTop_toBottomOf="@+id/trade_detail_content"
-                android:layout_marginLeft="8dp"
-                app:layout_constraintLeft_toLeftOf="parent"
-                android:layout_marginRight="8dp"
-                app:layout_constraintRight_toRightOf="parent"
-                android:orientation="vertical"/>
-        </android.support.constraint.ConstraintLayout>
-    </ScrollView>
-</LinearLayout>

+ 140 - 0
app/res/layout/trade_details.xml

@@ -0,0 +1,140 @@
+<?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/trade_details_layout"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:clickable="true"
+    android:foreground="?android:attr/selectableItemBackground"
+    android:orientation="vertical">
+
+    <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:title="详情"/>
+    </android.support.design.widget.AppBarLayout>
+    <ScrollView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="@color/color_background">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
+
+            <android.support.constraint.ConstraintLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:padding="8dp"
+                android:background="@color/white">
+
+                <com.netease.nim.uikit.common.ui.imageview.HeadImageView
+                    android:id="@+id/trade_details_avatar"
+                    android:layout_width="48dp"
+                    android:layout_height="48dp"
+                    android:layout_marginLeft="16dp"
+                    android:layout_marginStart="16dp"
+                    android:layout_marginTop="16dp"
+                    android:src="@drawable/nim_avatar_default"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+
+                <TextView
+                    android:id="@+id/trade_details_name"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="8dp"
+                    android:layout_marginStart="8dp"
+                    android:layout_marginTop="16dp"
+                    android:text="用户名"
+                    app:layout_constraintLeft_toRightOf="@+id/trade_details_avatar"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <TextView
+                    android:id="@+id/trade_details_location"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="8dp"
+                    android:text="发布地点"
+                    app:layout_constraintLeft_toLeftOf="@+id/trade_details_name"
+                    app:layout_constraintTop_toBottomOf="@+id/trade_details_name" />
+
+                <com.sheishuo.app.common.views.PartlyHighLightTextView
+                    android:id="@+id/trade_details_content"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginEnd="16dp"
+                    android:layout_marginLeft="16dp"
+                    android:layout_marginRight="16dp"
+                    android:layout_marginStart="16dp"
+                    android:layout_marginTop="16dp"
+                    android:text="这里是交易内容详情这里是交易内容详情这里是交易内容详情这里是交易内容详情
+                        这里是交易内容详情这里是交易内容详情这里是交易内容详情这里是交易内容详情"
+                    app:highlight_color="@color/green_4DC0A4"
+                    app:hightlight_str=""
+                    app:layout_constraintHorizontal_bias="1.0"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintRight_toRightOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/trade_details_avatar" />
+
+                <LinearLayout
+                    android:id="@+id/trade_details_img_layout"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="16dp"
+                    android:orientation="vertical"
+                    app:layout_constraintLeft_toLeftOf="@+id/trade_details_content"
+                    app:layout_constraintRight_toRightOf="@+id/trade_details_content"
+                    app:layout_constraintTop_toBottomOf="@+id/trade_details_content" />
+
+
+                <TextView
+                    android:id="@+id/trade_details_date"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginEnd="8dp"
+                    android:layout_marginRight="8dp"
+                    android:layout_marginTop="8dp"
+                    android:padding="4dp"
+                    android:text="时间"
+                    app:layout_constraintRight_toRightOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <TextView
+                    android:id="@+id/trade_details_read_num"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginEnd="16dp"
+                    android:layout_marginRight="16dp"
+                    android:layout_marginTop="8dp"
+                    android:padding="4dp"
+                    android:text="阅读量123"
+                    android:textColor="@color/grey_light_light"
+                    app:layout_constraintRight_toRightOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/trade_details_date" />
+
+                <TextView
+                    android:id="@+id/trade_details_priority"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginEnd="10dp"
+                    android:layout_marginRight="10dp"
+                    android:background="@drawable/style_rounded_corner_editext"
+                    android:padding="4dp"
+                    android:text="置顶x123"
+                    android:textColor="@color/green_4DC0A4"
+                    app:layout_constraintRight_toLeftOf="@+id/trade_details_read_num"
+                    app:layout_constraintTop_toTopOf="@+id/trade_details_read_num" />
+
+
+            </android.support.constraint.ConstraintLayout>
+
+        </LinearLayout>
+    </ScrollView>
+</LinearLayout>

+ 36 - 23
app/res/layout/trade_list_fragment.xml

@@ -1,31 +1,44 @@
 <?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<android.support.design.widget.CoordinatorLayout 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="match_parent"
     android:background="@color/color_background"
-    android:fitsSystemWindows="false">
-    <LinearLayout
-        android:id="@+id/trade_list_notifications_layout"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:orientation="vertical"
-        tools:layout_editor_absoluteY="0dp"
-        tools:layout_editor_absoluteX="8dp" />
+    android:fitsSystemWindows="false"
+    android:orientation="vertical">
 
-    <android.support.v7.widget.RecyclerView
-        android:id="@+id/trade_list_recyclerview"
+    <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        tools:layout_editor_absoluteY="8dp"
-        tools:layout_editor_absoluteX="8dp"
-        android:layout_alignParentBottom="true"
-        android:layout_alignParentRight="true"
-        android:layout_alignParentEnd="true"
-        android:layout_alignParentTop="true"
-        android:layout_alignParentLeft="true"
-        android:layout_alignParentStart="true"
-        android:paddingLeft="8dp"
-        android:paddingRight="8dp"/>
+        android:orientation="vertical">
+
 
-</RelativeLayout>
+
+        <LinearLayout
+            android:id="@+id/trade_list_notifications_layout"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            tools:layout_editor_absoluteX="8dp"
+            tools:layout_editor_absoluteY="0dp" />
+
+        <android.support.v7.widget.RecyclerView
+            android:id="@+id/trade_list_recyclerview"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:paddingLeft="8dp"
+            android:paddingRight="8dp"
+            tools:layout_editor_absoluteX="8dp"
+            tools:layout_editor_absoluteY="8dp" />
+    </LinearLayout>
+
+    <android.support.design.widget.FloatingActionButton
+        android:id="@+id/trade_list_fab"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_margin="16dp"
+        android:src="@drawable/ico_trade_publish"
+        app:layout_anchor="@id/trade_list_recyclerview"
+        app:layout_anchorGravity="bottom|end" />
+</android.support.design.widget.CoordinatorLayout>

+ 9 - 3
app/res/layout/trade_list_item.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<android.support.v7.widget.CardView 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"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
@@ -7,7 +7,8 @@
     android:layout_marginTop="16dp"
     android:clickable="true"
     android:foreground="?android:attr/selectableItemBackground"
-    android:id="@+id/trade_list_item_layout">
+    android:id="@+id/trade_list_item_layout"
+    android:background="@color/white">
 
 
 
@@ -111,4 +112,9 @@
             android:layout_marginTop="8dp"
             app:layout_constraintTop_toBottomOf="@+id/trade_list_item_imgs_gridview" />
     </android.support.constraint.ConstraintLayout>
-</android.support.v7.widget.CardView>
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:background="@color/grey_light"/>
+</LinearLayout>

+ 37 - 0
app/res/layout/trade_list_search.xml

@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical" android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:id="@+id/trade_list_search_parent_layout">
+    <LinearLayout
+        android:id="@+id/trade_list_search_layout"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="@color/colorPrimary"
+        android:orientation="horizontal"
+        android:gravity="center_vertical"
+        android:visibility="visible"
+        android:padding="8dp">
+
+        <EditText
+            android:id="@+id/trade_list_search_ET"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_weight="9"
+            android:hint="请输入搜索内容"
+            android:textColorHint="@color/white" >
+            <requestFocus/>
+        </EditText>
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:src="@drawable/ic_action_search"/>
+        <TextView
+            android:id="@+id/trade_list_search"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="搜索"
+            android:textSize="18sp"
+            android:textColor="@color/white"/>
+    </LinearLayout>
+</LinearLayout>

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

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical" android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:gravity="bottom"
+    android:id="@+id/trade_publish_parent_layout">
+
+    <include layout="@layout/gift_panel" />
+</LinearLayout>

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

@@ -10,7 +10,7 @@
         android:title="@string/main_tab_trade"
         android:icon="@drawable/_03_unchecked"/>
     <item android:id="@+id/main_navi_circle_of_friends"
-        android:title="朋友圈"
+        android:title="@string/main_tab_circleoffriends"
         android:icon="@drawable/_04_unchecked"/>
     <item android:id="@+id/main_navi_me"
         android:title="我的"

+ 12 - 0
app/res/menu/normal_team_chat_menu.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+    <item android:id="@+id/team_chat_menu_search"
+        android:title="搜索"
+        app:showAsAction="always"
+        android:icon="@drawable/ic_action_search"/>
+    <item android:id="@+id/team_chat_menu_settings"
+        android:title="设置"
+        app:showAsAction="always"
+        android:icon="@drawable/mine_settings_white"/>
+</menu>

+ 0 - 0
app/res/menu/team_chat_menu.xml → app/res/menu/system_team_chat_menu.xml


+ 41 - 31
app/res/menu/trade_menu.xml

@@ -2,43 +2,53 @@
 <menu xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
-    <item android:id="@+id/trade_menu_search"
-        android:title="搜索"
+    <item
+        android:id="@+id/trade_menu_search"
         android:icon="@drawable/ic_action_search"
-        app:showAsAction="ifRoom"/>
-    <item android:title="筛选"
+        android:title="搜索"
+        app:showAsAction="ifRoom" />
+    <item
         android:id="@+id/trade_menu_filter"
+        android:title="筛选"
         app:showAsAction="always">
         <menu>
-            <item android:id="@+id/trade_menu_all"
-                android:title="全部"
-                android:checkable="true"
-                android:checked="true" />
-            <item android:id="@+id/trade_menu_sell"
-                android:title="出售"
-                android:checkable="true"
-                android:checked="false"/>
-            <item android:id="@+id/trade_menu_buy"
-                android:title="求购"
-                android:checkable="true"
-                android:checked="false"/>
-            <item android:id="@+id/trade_menu_recent"
-                android:title="最近的"
-                android:checkable="true"
-                android:checked="false"/>
-            <item android:id="@+id/trade_menu_concern"
-                android:title="我关注的"
-                android:checkable="true"
-                android:checked="false"
-                android:visible="false"/>
-            <item android:id="@+id/trade_menu_mine"
-                android:title="我发布的"
-                android:checkable="true"
-                android:checked="false"
-                android:visible="false"/>
+            <group>
+                <item
+                    android:id="@+id/trade_menu_all"
+                    android:checkable="true"
+                    android:checked="true"
+                    android:title="全部" />
+                <item
+                    android:id="@+id/trade_menu_sell"
+                    android:checkable="true"
+                    android:checked="false"
+                    android:title="出售" />
+                <item
+                    android:id="@+id/trade_menu_buy"
+                    android:checkable="true"
+                    android:checked="false"
+                    android:title="求购" />
+                <item
+                    android:id="@+id/trade_menu_recent"
+                    android:checkable="true"
+                    android:checked="false"
+                    android:title="最近的" />
+                <item
+                    android:id="@+id/trade_menu_concern"
+                    android:checkable="true"
+                    android:checked="false"
+                    android:title="我关注的"
+                    android:visible="false" />
+                <item
+                    android:id="@+id/trade_menu_mine"
+                    android:checkable="true"
+                    android:checked="false"
+                    android:title="我发布的"
+                    android:visible="false" />
+            </group>
+
         </menu>
     </item>
 
 
-
 </menu>

+ 14 - 0
app/res/values-v21/styles-activity.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
+        <item name="windowActionBar">false</item>
+        <item name="windowNoTitle">true</item>
+        <item name="colorPrimary">@color/colorPrimary</item>
+        <item name="android:colorPrimaryDark">@color/colorPrimary</item>
+        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
+        <item name="colorAccent">@color/colorPrimary</item>
+        <item name="android:colorForeground">@color/black</item>
+        <item name="android:navigationBarColor">@android:color/background_dark</item>
+    </style>
+</resources>

+ 8 - 0
app/res/values/arrays.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <string-array name="priority_type">
+        <item>国家</item>
+        <item>省市</item>
+        <item>地区</item>
+    </string-array>
+</resources>

+ 7 - 5
app/res/values/colors.xml

@@ -19,7 +19,7 @@
     <color name="split_line_grey_color_d9d9d9">#D9D9D9</color>
     <color name="green_4DC0A4">#4DC0A4</color>
     <color name="gray7">#c5c4c4</color>
-    <color name="GreyWhite">#F7F7F7</color>
+    <color name="GreyWhite">#f7f7f7</color>
     <color name="color_register_text_normal_1ca086">#1ca086</color>
     <color name="color_register_text_normal_246b61">#246b61</color>
     <color name="color_register_text_disable_39b79d">#39b79d</color>
@@ -74,10 +74,12 @@
 
 
     <!--谁说-->
-    <color name="colorPrimary">#FFAA00</color>
-    <color name="colorPrimaryDark">#d78f00</color>
-    <color name="colorAccent">#FF4081</color>
-    <color name="white">#FFFFFF</color>
+    <!--<color name="colorPrimary">#FFAA00</color>-->
+    <!--<color name="colorPrimaryDark">#d78f00</color>-->
+    <color name="colorPrimary">#fbab08</color>
+    <color name="colorPrimaryDark">#fbab08</color>
+    <color name="colorAccent">#ff4081</color>
+    <color name="white">#ffffff</color>
     <color name="black">#000000</color>
     <color name="grey_light">#c4c4c4</color>
     <color name="grey_light_light">#e6e6e6</color>

+ 2 - 0
app/res/values/ids.xml

@@ -3,4 +3,6 @@
     <item name="flag_trade_id" type="id"/>
     <item name="flag_trade_priority" type="id"/>
     <item name="flag_trade_priority_type" type="id"/>
+    <item name="flag_new_comment_social_id" type="id"/>
+    <item name="flag_new_comment_reply_id" type="id"/>
 </resources>

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

@@ -6,7 +6,7 @@
     <string name="empty"></string>
     <string name="main_tab_groups">聊天室</string>
     <string name="main_tab_trade">快讯</string>
-    <string name="main_tab_circleoffriends">朋友圈</string>
+    <string name="main_tab_circleoffriends">动态</string>
     <string name="main_tab_friends">朋友</string>
     <string name="main_tab_mine">我的</string>
     <string name="main_tab_session">会话</string>

+ 9 - 0
app/res/values/styles-activity.xml

@@ -17,9 +17,18 @@
         <item name="windowNoTitle">true</item>
         <item name="colorPrimary">@color/colorPrimary</item>
         <item name="android:colorPrimaryDark">@color/colorPrimary</item>
+        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
+        <item name="colorAccent">@color/colorPrimary</item>
+        <item name="android:colorForeground">@color/black</item>
     </style>
 
 
+    <!--translucent NoActionbar-->
+    <style name="AppTheme.NoActionBar.Translucent" parent="AppTheme.NoActionBar">
+        <item name="android:windowBackground">@color/transparent</item>
+        <item name="android:windowIsTranslucent">true</item>
+    </style>
+
     <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.ActionBar">
         <item name="android:itemTextAppearance">?android:attr/actionMenuTextAppearance</item>
         <item name="actionMenuTextAppearance">@style/ActionMenuTheme</item>

+ 5 - 0
app/src/com/sheishuo/app/SheishuoApplication.java

@@ -11,6 +11,7 @@ import android.support.multidex.MultiDex;
 import android.text.TextUtils;
 import android.util.Log;
 
+import com.netease.nim.uikit.ContextCache;
 import com.sheishuo.app.avchat.AVChatProfile;
 import com.sheishuo.app.common.util.location.CityDataHelper;
 import com.sheishuo.app.common.util.location.LocationHelper;
@@ -69,10 +70,14 @@ public class SheishuoApplication extends Application {
         MultiDex.install(this);
     }
 
+
     public void onCreate() {
         super.onCreate();
 
+
         context = this;
+
+        ContextCache.init(context);
         /**
          * 初始化各种工具
          */

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

@@ -6,7 +6,7 @@ import com.netease.nim.uikit.NimUIKit;
 import com.netease.nimlib.sdk.StatusBarNotificationConfig;
 
 /**
- * Created by jezhee on 2/20/15.
+ * Created by KN on 2017/08/01.
  */
 public class SheishuoCache {
 

+ 2 - 2
app/src/com/sheishuo/app/common/beans/CircleBean.java

@@ -45,7 +45,7 @@ public class CircleBean implements Serializable{
             this.list = list;
         }
 
-        public class ListBean {
+        public class ListBean implements Serializable{
             /**
              * id : 23
              * user_id : 200028
@@ -209,7 +209,7 @@ public class CircleBean implements Serializable{
                 this.liked = liked;
             }
 
-            public class Comment{
+            public class Comment implements Serializable{
 
                 /**
                  * id : 28

+ 2 - 1
app/src/com/sheishuo/app/common/beans/TradeBean.java

@@ -1,5 +1,6 @@
 package com.sheishuo.app.common.beans;
 
+import java.io.Serializable;
 import java.util.List;
 
 /**
@@ -43,7 +44,7 @@ public class TradeBean {
             this.list = list;
         }
 
-        public static class ListBean {
+        public static class ListBean implements Serializable{
             /**
              * id : 19
              * user_id : 200001

+ 8 - 0
app/src/com/sheishuo/app/common/util/data/SPHelper.java

@@ -75,4 +75,12 @@ public class SPHelper {
 
         return null;
     }
+
+
+    public static void remove(Context context,String key){
+        SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE);
+        SharedPreferences.Editor editor = sp.edit();
+        editor.remove(key);
+        editor.apply();
+    }
 }

+ 1 - 1
app/src/com/sheishuo/app/common/util/img/ImgUtil.java

@@ -15,7 +15,7 @@ import com.sheishuo.app.SheishuoApplication;
 public class ImgUtil {
     public static ImageView getImageFromNet( Context context,String imgUrl){
         ImageView imageView = new ImageView(context);
-        Glide.with(SheishuoApplication.getContext()).load(imgUrl).into(imageView);
+        Glide.with(context).load(imgUrl).into(imageView);
         return imageView;
     }
 

+ 9 - 1
app/src/com/sheishuo/app/common/util/net/INet.java

@@ -1,5 +1,7 @@
 package com.sheishuo.app.common.util.net;
 
+import android.support.annotation.Nullable;
+
 import okhttp3.FormBody;
 import okhttp3.MediaType;
 import okhttp3.RequestBody;
@@ -11,16 +13,22 @@ import okhttp3.RequestBody;
 public interface INet {
     MediaType JSON = MediaType.parse("application/json; charset=utf-8");
     void baseQuery();
+    void get(String url,ResponseCallback callback);
     void post(String url,FormBody body,ResponseCallback callback);
     void post(String url, RequestBody body,ResponseCallback callback);
     void updateLatitudeAndLongitude(ResponseCallback callback);
     void updateLocation(String province,String city,String district,ResponseCallback callback);
     void loginQuery(String mobile,String pwd,ResponseCallback callback);
     void getGiftList(ResponseCallback callback);
-    void uploadCircleImgs(String filePath, ResponseCallback callback);
+    void uploadImgs(String filePath, ResponseCallback callback);
     void getSocialInfo(String targetID,ResponseCallback callback);
     void getCityDataList(ResponseCallback callback);
     void getNearbyPeople(String userId,String page,ResponseCallback callback);
     void getCircleList(String targetId,String lastId,ResponseCallback callback);
     void getTradeList(int type,int page,ResponseCallback callback);
+    void publishTrade(int type,String content,String pics,int priority,int priorityType,String roomId,ResponseCallback callback);
+    void queryContact(String contactsListStr,ResponseCallback callback);
+    void searchTrade(int page,int sort,String key,ResponseCallback callback);
+    void newComment(int socialId, @Nullable int replyId, String comment, ResponseCallback callback);
+    void updateBanner(String filePath,ResponseCallback callback);
 }

+ 193 - 2
app/src/com/sheishuo/app/common/util/net/NetImpl.java

@@ -1,9 +1,9 @@
 package com.sheishuo.app.common.util.net;
 
+import android.support.annotation.Nullable;
 import android.util.Log;
 
 import com.google.gson.Gson;
-import com.google.gson.reflect.TypeToken;
 import com.sheishuo.app.cache.AccountCache;
 import com.sheishuo.app.cache.SocialInfoCache;
 import com.sheishuo.app.common.beans.CircleBean;
@@ -28,6 +28,8 @@ import okhttp3.Request;
 import okhttp3.RequestBody;
 import okhttp3.Response;
 
+import static com.sheishuo.app.common.util.net.NetInfo.*;
+
 /**
  * Created by KN on 2017/7/14.
  */
@@ -44,6 +46,26 @@ public class NetImpl implements INet {
     }
 
     @Override
+    public void get(String url, ResponseCallback callback) {
+        Request request = new Request.Builder()
+                .get()
+                .url(url)
+                .build();
+
+        try {
+            Response response = client.newCall(request).execute();
+            if ( 200 == response.code()){
+                callback.onSuccess(response.body().string());
+            }else {
+                callback.onFailed();
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+            callback.onFailed();
+        }
+    }
+
+    @Override
     public void post(String url, FormBody body, ResponseCallback callback) {
         Request request = new Request.Builder()
                 .url(url)
@@ -250,7 +272,7 @@ public class NetImpl implements INet {
     }
 
     @Override
-    public void uploadCircleImgs(String filePath, final ResponseCallback callback) {
+    public void uploadImgs(String filePath, final ResponseCallback callback) {
         File file = new File(filePath);
         MultipartBody.Builder builder = new MultipartBody.Builder();
         builder.setType(MultipartBody.FORM);
@@ -291,6 +313,7 @@ public class NetImpl implements INet {
         });
     }
 
+
     @Override
     public void getSocialInfo(final String targetID, final ResponseCallback callback) {
         new Thread(new Runnable() {
@@ -472,5 +495,173 @@ public class NetImpl implements INet {
         }).start();
     }
 
+    @Override
+    public void publishTrade(final int type, final String content, final String pics, final int priority, final int priorityType, final String roomId, final ResponseCallback callback) {
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                FormBody body = new FormBody.Builder()
+                        .add("user_id",AccountCache.getAccount().getId())
+                        .add("type", String.valueOf(type))
+                        .add("msg",content)
+                        .add("pic",pics)
+                        .add("priority",String.valueOf(priority))
+                        .add("priority_type",String.valueOf(priorityType))
+                        .add("room_id",roomId)
+                        .build();
+
+                Request request = new Request.Builder()
+                        .post(body)
+                        .url(NEW_TRADE)
+                        .build();
+
+
+                Response response = null;
+                try {
+                    response = client.newCall(request).execute();
+                    if (200 == response.code()){
+                        String resultJson = response.body().string();
+                        callback.onSuccess(resultJson);
+                    }else {
+                        callback.onFailed();
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    callback.onFailed();
+                }
+
+
+
+
+
+            }
+        }).start();
+    }
+
+    @Override
+    public void queryContact(final String contactsListStr, final ResponseCallback callback) {
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                FormBody body = new FormBody.Builder()
+                        .add("user_id",AccountCache.getAccount().getId())
+                        .add("mobiles",contactsListStr)
+                        .build();
+
+                Request request = new Request.Builder()
+                        .post(body)
+                        .url(CONTACTS_RELATIONSHIP)
+                        .build();
+
+                try {
+                    Response response = client.newCall(request).execute();
+                    if (200 == response.code()){
+                        String resultJson = response.body().string();
+                        callback.onSuccess(resultJson);
+                    }else{
+                        callback.onFailed();
+                    }
+
+                }catch (Exception e){
+                    e.printStackTrace();
+                    callback.onFailed();
+                }
+            }
+        }).start();
+    }
+
+    @Override
+    public void searchTrade(int page, int sort, String key, ResponseCallback callback) {
+
+    }
+
+    @Override
+    public void newComment(final int socialId, @Nullable final int replyId, final String comment, final ResponseCallback callback) {
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                try{
+                    FormBody body = new FormBody.Builder()
+                            .add("user_id",AccountCache.getAccount().getId())
+                            .add("social_id", String.valueOf(socialId))
+                            .add("reply_id", String.valueOf(replyId))
+                            .add("comment",comment)
+                            .build();
+                    Request request = new Request.Builder()
+                            .url(CIRCLE_COMMENT)
+                            .post(body)
+                            .build();
+
+                    Response response = client.newCall(request).execute();
+
+                    if (200 == response.code()){
+                        String resultStr = response.body().string();
+                        Log.e("resultStr",resultStr);
+                        int code = new JSONObject(resultStr).getInt("c");
+                        if (0 == code){
+                            callback.onSuccess(code);
+                        }else {
+                            callback.onFailed();
+                        }
+                    }else {
+                        callback.onFailed();
+                    }
+
+                }catch (Exception e){
+                    e.printStackTrace();
+                    callback.onFailed();
+                }
+            }
+        }).start();
+    }
+
+    @Override
+    public void updateBanner(final String filePath, final ResponseCallback callback) {
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                File file = new File(filePath);
+                MultipartBody.Builder builder = new MultipartBody.Builder();
+                builder.setType(MultipartBody.FORM);
+
+                builder.addFormDataPart("user_id", AccountCache.getAccount().getId());
+                builder.addFormDataPart("upload", file.getName(), RequestBody.create(null, file));
+
+
+                RequestBody body = builder.build();
+                Request request = new Request.Builder()
+                        .url(NetInfo.UPDATE_BANNER)
+                        .post(body)
+                        .build();
+
+                Call call = client.newCall(request);
+                call.enqueue(new Callback() {
+                    @Override
+                    public void onFailure(Call call, IOException e) {
+                        callback.onFailed();
+                        e.printStackTrace();
+                    }
+
+                    @Override
+                    public void onResponse(Call call, Response response) throws IOException {
+                        try {
+                            JSONObject jsonObject = new JSONObject(response.body().string());
+                            if (jsonObject.getInt("c") == 0) {
+                                int imgCode = jsonObject.getJSONObject("d").getInt("aid");
+                                callback.onSuccess(imgCode);
+                            } else {
+                                callback.onFailed();
+                            }
+                        } catch (JSONException e) {
+                            e.printStackTrace();
+                            callback.onFailed();
+                        }
+                    }
+                });
+            }
+        }).start();
+
+    }
+
 
 }

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

@@ -23,4 +23,9 @@ public class NetInfo {
     public final static String RESET_LOCATION_BY_DISTRICT= INDEX + "?m=who&c=index&a=reset_location";
     public final static String UPDATE_LATITUDE_AND_LONGITUDE = INDEX + "?m=who&c=index&a=coordinate_2_location";
     public final static String NEARBY_PEOPLE = INDEX + "?m=who&c=index&a=near_user";
+    public final static String NEW_TRADE = INDEX + "?m=who&c=trade&a=publish";
+    public final static String CONTACTS_RELATIONSHIP = "m=who&c=social&a=contact";
+    public final static String TRADE_SEARCH = INDEX + "?m=who&c=trade&a=search";
+    public final static String CIRCLE_COMMENT = INDEX + "?m=who&c=social&a=comment";
+    public final static String UPDATE_BANNER = INDEX + "?m=who&c=social&a=banner_upload";
 }

+ 21 - 7
app/src/com/sheishuo/app/common/views/GridViewAdapter.java

@@ -1,11 +1,14 @@
 package com.sheishuo.app.common.views;
 
+import android.content.Context;
 import android.database.DataSetObserver;
+import android.util.Log;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ImageView;
 import android.widget.ListAdapter;
 
+import com.netease.nim.uikit.session.activity.WatchPictureActivity;
 import com.sheishuo.app.SheishuoApplication;
 import com.sheishuo.app.common.util.img.ImgUtil;
 
@@ -18,10 +21,14 @@ import java.util.List;
  */
 
 public class GridViewAdapter implements ListAdapter {
-    List<String> imgUrl = new ArrayList<>();
+    List<String> thumbs,pics;
+    Context context;
 
-    public  GridViewAdapter(List<String> imgUrl) {
-        this.imgUrl = imgUrl;
+
+    public  GridViewAdapter(Context context, List<String> thumbs, List<String> pics) {
+        this.thumbs = thumbs;
+        this.pics = pics;
+        this.context = context;
     }
 
     @Override
@@ -31,7 +38,7 @@ public class GridViewAdapter implements ListAdapter {
 
     @Override
     public boolean isEnabled(int position) {
-        return false;
+        return true;
     }
 
     @Override
@@ -46,7 +53,7 @@ public class GridViewAdapter implements ListAdapter {
 
     @Override
     public int getCount() {
-        return imgUrl.size();
+        return thumbs.size();
     }
 
     @Override
@@ -65,8 +72,8 @@ public class GridViewAdapter implements ListAdapter {
     }
 
     @Override
-    public View getView(int position, View convertView, ViewGroup parent) {
-        ImageView imageView = ImgUtil.getImageFromNet(SheishuoApplication.getContext(),imgUrl.get(position));
+    public View getView(final int position, View convertView, ViewGroup parent) {
+        ImageView imageView = ImgUtil.getImageFromNet(context,thumbs.get(position));
         if (getCount() >= 5){
             imageView.setMinimumHeight((int) ImgUtil.convertDpToPixel(96,SheishuoApplication.getContext()));
             imageView.setMinimumWidth((int) ImgUtil.convertDpToPixel(96,SheishuoApplication.getContext()));
@@ -75,6 +82,13 @@ public class GridViewAdapter implements ListAdapter {
             imageView.setMinimumWidth((int) ImgUtil.convertDpToPixel(128,SheishuoApplication.getContext()));
         }
 
+        imageView.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                WatchPictureActivity.start(context,pics,thumbs,position);
+            }
+        });
+
         return imageView;
     }
 

+ 0 - 5
app/src/com/sheishuo/app/common/views/ImgGridView.java

@@ -15,11 +15,6 @@ import com.sheishuo.app.common.util.img.ImgUtil;
 public class ImgGridView extends GridView {
     private Context context;
 
-    @Override
-    public boolean dispatchTouchEvent(MotionEvent ev) {
-        //防止MyGridView拦截事件
-        return false;
-    }
 
     public ImgGridView(Context context) {
         super(context);

+ 223 - 0
app/src/com/sheishuo/app/core_module/circle/activity/CircleDetailsActivity.java

@@ -0,0 +1,223 @@
+package com.sheishuo.app.core_module.circle.activity;
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.GridLayout;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+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.common.beans.CircleBean;
+import com.sheishuo.app.common.util.img.ImgUtil;
+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.impl.SheishuoUI;
+
+import jp.wasabeef.glide.transformations.CropCircleTransformation;
+
+/**
+ * Created by KN on 2017/8/25.
+ */
+
+public class CircleDetailsActivity extends SheishuoUI {
+
+    public static final String DATA = "data";
+
+    private String TAG = this.getClass().getSimpleName();
+    private Context context = this;
+
+    private CircleBean.DBean.ListBean bean;
+
+    private BaseToolbar toolbar;
+
+    private HeadImageView avatar;
+
+    private GridLayout imgGridView;
+
+    private TextView nameTV,dateTV,readNumTV,likedNumTV,commentTV;
+
+    private PartlyHighLightTextView contentTV;
+
+    private LinearLayout likedUserAvatarLayout;
+
+
+    //comment views
+    private LinearLayout commentsLayout;
+    private HeadImageView comment;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.circle_details);
+        bean = (CircleBean.DBean.ListBean) getIntent().getSerializableExtra(DATA);
+        findViews();
+        init();
+    }
+
+
+    void findViews(){
+        avatar = findView(R.id.circle_details_avatar);
+        nameTV = findView(R.id.circle_details_name);
+        dateTV = findView(R.id.circle_details_date);
+        readNumTV = findView(R.id.circle_details_read_num);
+        likedNumTV = findView(R.id.circle_details_like_num);
+        commentTV = findView(R.id.circle_details_comment_num);
+        contentTV = findView(R.id.circle_details_content);
+
+        imgGridView = findView(R.id.circle_details_imgs_grid);
+
+        likedUserAvatarLayout = findView(R.id.circle_details_avatar_layout);
+        commentsLayout = findView(R.id.circle_details_comments_layout);
+
+    }
+
+
+    void init(){
+        //加载头像
+        if (getUserInfo(bean.getUser_id()).getAvatar() != null){
+            Glide.with(context)
+                    .load(getUserInfo(bean.getUser_id()).getAvatar())
+                    .into(avatar);
+        }
+
+        //设置用户名
+        nameTV.setText(getName(bean.getUser_id()));
+
+        //显示发布时间
+        dateTV.setText(bean.getInputtime());
+
+        //显示阅读量
+        readNumTV.setText(bean.getViews());
+
+        //显示点赞数
+        likedNumTV.setText(bean.getLikes());
+
+        //显示朋友圈内容
+        contentTV.setText(bean.getMsg());
+
+        //评论
+        commentTV.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Intent intent = new Intent(context,NewCommentActivity.class);
+                intent.putExtra(NewCommentActivity.SOCIAL_ID,bean.getId());
+                startActivity(intent);
+            }
+        });
+
+
+        //显示点赞用户头像
+        for (String userId : bean.getLike_users()){
+            ImageView avatarView = new ImageView(context);
+            avatarView.setAdjustViewBounds(true);
+            avatarView.setMaxHeight((int) ImgUtil.convertDpToPixel(48,context));
+            avatarView.setMaxWidth((int) ImgUtil.convertDpToPixel(48,context));
+
+            if (getUserInfo(userId).getAvatar() != null){
+                Glide.with(context)
+                        .load(getUserInfo(userId).getAvatar())
+                        .bitmapTransform(new CropCircleTransformation(context))
+                        .into(avatarView);
+            }else {
+                Glide.with(context)
+                        .load(R.drawable.nim_avatar_default)
+                        .bitmapTransform(new CropCircleTransformation(context))
+                        .into(avatarView);
+            }
+
+            likedUserAvatarLayout.addView(avatarView);
+        }
+
+
+        //显示朋友圈图片
+        if (bean.getPics().size() > 4){
+            imgGridView.setColumnCount(3);
+        }else{
+            imgGridView.setColumnCount(2);
+        }
+        for (int i = 0;i < bean.getThumbs().size();i++){
+            ImageView imageView = new ImageView(context);
+            Glide.with(context)
+                    .load(bean.getThumbs().get(i))
+                    .into(imageView);
+
+            imageView.setAdjustViewBounds(true);
+
+
+            int imgWidthAndHeight = 0;
+            //设置图片展示大小
+            if (bean.getPics().size() > 4){
+                imgWidthAndHeight = 128;
+            }else if (bean.getPics().size() > 1){
+                imgWidthAndHeight = 256;
+            }else{
+                imgWidthAndHeight = 512;
+            }
+            //设置间距
+            LinearLayout.LayoutParams ll = new LinearLayout.LayoutParams((int) ImgUtil.convertDpToPixel(imgWidthAndHeight,context), (int) ImgUtil.convertDpToPixel(imgWidthAndHeight,context));
+            GridLayout.LayoutParams gl = new GridLayout.LayoutParams(ll);
+            gl.rightMargin = 16;
+            gl.topMargin = 16 / 2;
+            gl.bottomMargin = 16 / 2;
+            imageView.setLayoutParams(gl);
+
+
+            final int finalI = i;
+            imgGridView.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    WatchPictureActivity.start(context,bean.getPics(),bean.getThumbs(), finalI);
+                }
+            });
+
+
+            imgGridView.addView(imageView);
+        }
+
+
+        //显示评论
+        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)));
+            }
+        }
+
+
+
+    }
+
+    //动态添加Comment
+    private View createComment(CircleBean.DBean.ListBean.Comment comment){
+        LinearLayout commentView = (LinearLayout) LayoutInflater.from(context).inflate(R.layout.circle_details_comment_layout,null);
+        HeadImageView commentAvatar = (HeadImageView) commentView.findViewById(R.id.circle_details_comment_layout_avatar);
+        TextView commentName = (TextView) commentView.findViewById(R.id.circle_details_comment_layout_name);
+        TextView commentContent = (TextView) commentView.findViewById(R.id.circle_details_comment_layout_content);
+        TextView commentDate = (TextView) commentView.findViewById(R.id.circle_details_comment_layout_date);
+
+        if (getUserInfo(comment.getUser_id()).getAvatar() != null){
+            Glide.with(context)
+                    .load(getUserInfo(comment.getUser_id()).getAvatar())
+                    .into(commentAvatar);
+        }
+
+        commentName.setText(getName(comment.getUser_id()));
+
+        commentDate.setText(comment.getInputtime());
+
+        commentContent.setText(comment.getComment());
+
+
+        return commentView;
+
+    }
+}

+ 90 - 0
app/src/com/sheishuo/app/core_module/circle/activity/NewCommentActivity.java

@@ -0,0 +1,90 @@
+package com.sheishuo.app.core_module.circle.activity;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+
+import com.sheishuo.app.R;
+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.impl.SheishuoUI;
+
+/**
+ * Created by KN on 2017/8/26.
+ */
+
+public class NewCommentActivity extends SheishuoUI{
+
+
+
+    public static final String SOCIAL_ID = "social_id";
+    public static final String REPLY_ID = "reply_id";
+
+    private String TAG = this.getClass().getSimpleName();
+    private Context context = this;
+
+    private int socialId,replyId;
+
+    private LinearLayout layout;
+    private EditText replyET;
+    private ImageView replyBtn;
+
+    private INet net = new NetImpl();
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.circle_new_comment);
+        String socialIdStr = getIntent().getStringExtra(SOCIAL_ID);
+        if (socialIdStr != null)
+            socialId = Integer.parseInt(socialIdStr);
+
+        String replyIdStr = getIntent().getStringExtra(REPLY_ID);
+        if (replyIdStr != null)
+            replyId = Integer.parseInt(replyIdStr);
+
+        findViews();
+        init();
+    }
+
+
+    void findViews(){
+        layout = findView(R.id.new_comment_layout);
+        replyET = findView(R.id.new_comment_ET);
+        replyBtn = findView(R.id.new_comment_submit_img);
+    }
+
+    void init(){
+
+        layout.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                finish();
+            }
+        });
+
+        Log.e(TAG,SOCIAL_ID + ":" + socialId);
+        replyBtn.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                net.newComment(socialId, replyId, replyET.getText().toString(), new ResponseCallback() {
+                    @Override
+                    public void onSuccess(Object object) {
+                        showToast(context,"评论成功");
+                        finish();
+                    }
+
+                    @Override
+                    public void onFailed() {
+                        showToast(context,"评论失败");
+                        finish();
+                    }
+                });
+            }
+        });
+    }
+}

+ 1 - 1
app/src/com/sheishuo/app/core_module/circle/model/NewTweetModel.java

@@ -48,7 +48,7 @@ public class NewTweetModel {
                 @Override
                 public void run() {
                     final int index = finalI;
-                    net.uploadCircleImgs(filesPath.get(finalI), new ResponseCallback() {
+                    net.uploadImgs(filesPath.get(finalI), new ResponseCallback() {
                         @Override
                         public void onSuccess(Object object) {
                             //Log.e("object", (String) object);

+ 2 - 0
app/src/com/sheishuo/app/core_module/mine/view/ui/activity/MineTradeActivity.java

@@ -74,11 +74,13 @@ public class MineTradeActivity extends SheishuoUI {
                     case 0:
                         PAGE_TO_LOAD = 1;
                         TYPE_TO_LOAD = TradeModel.TYPE_MINE;
+                        if (adapter != null) adapter.clearAll();
                         getTradeList(TYPE_TO_LOAD,PAGE_TO_LOAD);
                         break;
                     case 1:
                         PAGE_TO_LOAD = 1;
                         TYPE_TO_LOAD = TradeModel.TYPE_CONCERN;
+                        if (adapter != null) adapter.clearAll();
                         getTradeList(TYPE_TO_LOAD,PAGE_TO_LOAD);
                         break;
                 }

+ 62 - 0
app/src/com/sheishuo/app/core_module/mine/view/ui/activity/PrivacyActivity.java

@@ -0,0 +1,62 @@
+package com.sheishuo.app.core_module.mine.view.ui.activity;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.LinearLayout;
+import android.widget.Switch;
+
+import com.sheishuo.app.R;
+import com.sheishuo.app.contact.activity.BlackListActivity;
+import com.sheishuo.app.impl.SheishuoUI;
+
+/**
+ * Created by KN on 2017/8/23.
+ */
+
+public class PrivacyActivity extends SheishuoUI {
+
+
+    private String TAG = this.getClass().getSimpleName();
+    private Context context = this;
+
+    private Switch addFriendSwitch
+            ,findByMobileSwitch
+            ,findBySheishuoSwitch
+            ,findByUsernameSwitch
+            ,publicToEveryoneSwitch
+            ,effectsSwitch;
+
+    private LinearLayout blackListLayout;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.mine_settings_privacy_activity);
+        findViews();
+        init();
+    }
+
+
+    void findViews(){
+        addFriendSwitch = findView(R.id.settings_privacy_layout_add_friends_switch);
+        findByMobileSwitch = findView(R.id.settings_privacy_layout_find_by_mobile_switch);
+        findBySheishuoSwitch = findView(R.id.settings_privacy_layout_find_by_sheishuo_switch);
+        findByUsernameSwitch = findView(R.id.settings_privacy_layout_find_by_username_switch);
+        publicToEveryoneSwitch  = findView(R.id.settings_privacy_layout_public_to_everyone_switch);
+        effectsSwitch = findView(R.id.settings_privacy_layout_effects_switch);
+
+        blackListLayout = findView(R.id.settings_privacy_layout_blacklist);
+    }
+
+    void init(){
+
+        //初始化黑名单
+        blackListLayout.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                BlackListActivity.start(context);
+            }
+        });
+    }
+}

+ 97 - 0
app/src/com/sheishuo/app/core_module/mine/view/ui/activity/SettingsActivity.java

@@ -0,0 +1,97 @@
+package com.sheishuo.app.core_module.mine.view.ui.activity;
+
+import android.app.ActivityManager;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+import android.widget.LinearLayout;
+
+import com.netease.nim.uikit.LoginSyncDataStatusObserver;
+import com.netease.nim.uikit.NimUIKit;
+import com.netease.nim.uikit.common.ui.drop.DropManager;
+import com.netease.nim.uikit.session.activity.WatchPictureActivity;
+import com.sheishuo.app.R;
+import com.sheishuo.app.SheishuoCache;
+import com.sheishuo.app.chatroom.helper.ChatRoomHelper;
+import com.sheishuo.app.common.util.data.SPHelper;
+import com.sheishuo.app.common.views.BaseToolbar;
+import com.sheishuo.app.impl.SheishuoUI;
+import com.sheishuo.app.impl.SheishuoUIKit;
+import com.sheishuo.app.login.LoginActivity;
+import com.sheishuo.app.login.LoginAndRegActivity;
+import com.sheishuo.app.login.LogoutHelperBak;
+import com.sheishuo.app.login.helper.LoginHelper;
+
+/**
+ * Created by KN on 2017/8/23.
+ */
+
+public class SettingsActivity extends SheishuoUI {
+
+    private String TAG = this.getClass().getSimpleName();
+    private Context context = this;
+
+    private BaseToolbar toolbar;
+    private LinearLayout securityLayout
+            , notifyLayout
+            , privacyLayout
+            , feedbackLayout
+            , aboutLayout;
+
+    private Button quitBtn;
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.mine_settings);
+        findViews();
+        init();
+    }
+
+
+    void findViews(){
+        toolbar = findView(R.id.toolbar);
+        securityLayout = findView(R.id.settings_security_layout);
+        notifyLayout = findView(R.id.settings_notify_layout);
+        privacyLayout = findView(R.id.settings_privacy_layout);
+        feedbackLayout = findView(R.id.settings_feedback_layout);
+        aboutLayout = findView(R.id.settings_about_layout);
+        quitBtn = findView(R.id.settings_quit_btn);
+    }
+
+    void init(){
+        //初始化Toolbar
+        toolbar.getLeftTV().setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                finish();
+            }
+        });
+
+
+        //初始化退出登录按钮
+        quitBtn.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                SPHelper.remove(context,"mobile");
+                SPHelper.remove(context,"pwd");
+                LogoutHelperBak.logout();
+
+                LoginAndRegActivity.start(context);
+                finish();
+
+            }
+        });
+
+
+
+        //初始化隐私
+        privacyLayout.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                startActivity(new Intent(context,PrivacyActivity.class));
+            }
+        });
+    }
+}

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

@@ -103,6 +103,17 @@ public class CreateNewGroupActivity extends SheishuoUI {
                     return;
                 }
 
+                if (groupName.contains("国家")
+                        ||groupName.contains("省")
+                        ||groupName.contains("市")
+                        ||groupName.contains("区")
+                        ||groupName.contains("县")
+                        ||groupName.contains("特别")
+                        ||groupName.contains("自治")){
+                    showToast(context,"不允许创建与地区有关的群聊");
+                    return;
+                }
+
                 Map<TeamFieldEnum, Serializable> teamInfoMap = new HashMap<>();
                 teamInfoMap.put(TeamFieldEnum.Name, groupName);
                 teamInfoMap.put(TeamFieldEnum.Introduce, groupIntroduce);

+ 63 - 0
app/src/com/sheishuo/app/core_module/sheishuo/view/ui/SettingTextEditActivity.java

@@ -0,0 +1,63 @@
+package com.sheishuo.app.core_module.sheishuo.view.ui;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.EditText;
+
+import com.sheishuo.app.R;
+import com.sheishuo.app.common.views.BaseToolbar;
+import com.sheishuo.app.impl.SheishuoUI;
+
+/**
+ * Created by KN on 2017/8/23.
+ */
+
+public class SettingTextEditActivity extends SheishuoUI {
+
+    public final static String SETTING_CONTENT_TITLE = "setting_content_title";
+    public final static String SETTING_CONTENT = "setting_content";
+    public final static String SETTING_CONTENT_RESULT = "setting_content_result";
+    public final static int SETTING_CONTENT_RESULT_CODE = 1200;
+
+
+    private BaseToolbar toolbar;
+    private EditText editText;
+
+    private String title = "";
+    private String originStr = "";
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.setting_text_edit);
+        title = getIntent().getStringExtra(SETTING_CONTENT_TITLE);
+        originStr = getIntent().getStringExtra(SETTING_CONTENT);
+        findViews();
+        init();
+
+    }
+
+
+    void findViews(){
+        toolbar = findView(R.id.toolbar);
+        editText = findView(R.id.edittext);
+    }
+
+    void init(){
+        toolbar.setTitle(title);
+        editText.setText(originStr);
+
+        toolbar.setRightText("确定");
+
+        toolbar.getRightTV().setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Intent intent  =  new Intent();
+                intent.putExtra(SETTING_CONTENT_RESULT,editText.getText().toString());
+                setResult(SETTING_CONTENT_RESULT_CODE,intent);
+                finish();
+            }
+        });
+    }
+}

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

@@ -0,0 +1,284 @@
+package com.sheishuo.app.core_module.sheishuo.view.ui;
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+import android.widget.CompoundButton;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.Switch;
+import android.widget.TextView;
+
+import com.bumptech.glide.Glide;
+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.team.TeamService;
+import com.netease.nimlib.sdk.team.constant.TeamFieldEnum;
+import com.netease.nimlib.sdk.team.model.Team;
+import com.netease.nimlib.sdk.team.model.TeamMember;
+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.core_module.mine.view.ui.activity.UserInfoDetailActivity;
+import com.sheishuo.app.impl.SheishuoUI;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import jp.wasabeef.glide.transformations.CropCircleTransformation;
+
+/**
+ * Created by KN on 2017/8/22.
+ */
+
+public class TeamSettingsActivity extends SheishuoUI implements View.OnClickListener {
+    public final static String TEAM_ID = "team_id";
+    public final static int NAME_REQUEST_CODE = 1101;
+    public final static int INTRODUCTION_REQUEST_CODE = 1102;
+    public final static int MEMBER_REQUEST_CODE = 1103;
+
+    private String TAG = this.getClass().getSimpleName();
+    private Context context = this;
+
+    private LinearLayout teamNameLayout, teamIntroductionLayout, teamMemberCountLayout, teamMemberAvatarLayout, chatRecordLayout, clearChatRecordLayout;
+
+    private TextView teamNameTV, teamIntroductionTV, teamMemberCountTV;
+
+    private Switch muteSwitch, pinSwitch;
+
+    private Button quitBtn;
+
+    private String teamRoomId = "";
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.team_setttins);
+        teamRoomId = getIntent().getStringExtra(TEAM_ID);
+
+        findViews();
+        init();
+    }
+
+
+    void findViews() {
+        teamNameLayout = findView(R.id.team_settings_room_name_layout);
+        teamIntroductionLayout = findView(R.id.team_settings_introduction_layout);
+        teamMemberCountLayout = findView(R.id.team_settings_member_count_layout);
+        teamMemberAvatarLayout = findView(R.id.team_settings_member_avatars_layout);
+        chatRecordLayout = findView(R.id.team_settings_chat_record_layout);
+        clearChatRecordLayout = findView(R.id.team_settings_clear_chat_record_layout);
+
+        teamNameTV = findView(R.id.team_settings_room_name_TV);
+        teamIntroductionTV = findView(R.id.team_settings_introduction_TV);
+        teamMemberCountTV = findView(R.id.team_settings_member_count_tv);
+
+        muteSwitch = findView(R.id.team_settings_room_mute_switch);
+        pinSwitch = findView(R.id.team_settings_room_pin_switch);
+
+        quitBtn = findView(R.id.team_settings_quit_btn);
+    }
+
+
+    void init() {
+        Team team = getTeamService().queryTeamBlock(teamRoomId);
+        teamNameTV.setText(team.getName());
+        teamIntroductionTV.setText(team.getIntroduce());
+        teamMemberCountTV.setText(team.getMemberCount() + "人");
+
+
+        if (team.mute()) muteSwitch.setChecked(true);
+        muteSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+            @Override
+            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+                if (isChecked) {
+                    getTeamService().muteTeam(teamRoomId, true);
+                } else {
+                    getTeamService().muteTeam(teamRoomId, false);
+                }
+            }
+        });
+
+        //置顶功能暂未实现
+        //TO DO
+
+
+        //注册点击事件
+        teamNameLayout.setOnClickListener(this);
+        teamIntroductionLayout.setOnClickListener(this);
+        teamMemberCountLayout.setOnClickListener(this);
+        chatRecordLayout.setOnClickListener(this);
+        clearChatRecordLayout.setOnClickListener(this);
+        quitBtn.setOnClickListener(this);
+
+
+        //加载群成员头像
+        getTeamService().queryMemberList(teamRoomId).setCallback(new RequestCallback<List<TeamMember>>() {
+            @Override
+            public void onSuccess(List<TeamMember> teamMembers) {
+                List<String> memberIds = new ArrayList<>();
+                for (TeamMember member : teamMembers) {
+                    memberIds.add(member.getAccount());
+                }
+
+                updateMembersInfo(memberIds);
+            }
+
+            @Override
+            public void onFailed(int i) {
+
+            }
+
+            @Override
+            public void onException(Throwable throwable) {
+
+            }
+        });
+    }
+
+
+    private TeamService getTeamService() {
+        return NIMClient.getService(TeamService.class);
+    }
+
+    @Override
+    public void onClick(View v) {
+
+        Intent texteditIntent = new Intent(TeamSettingsActivity.this, SettingTextEditActivity.class);
+
+        switch (v.getId()) {
+            case R.id.team_settings_quit_btn:
+                getTeamService().quitTeam(teamRoomId);
+                finish();
+                break;
+            case R.id.team_settings_room_name_layout:
+                texteditIntent.putExtra(SettingTextEditActivity.SETTING_CONTENT_TITLE, "群聊名称");
+                texteditIntent.putExtra(SettingTextEditActivity.SETTING_CONTENT, teamNameTV.getText().toString());
+                startActivityForResult(texteditIntent, NAME_REQUEST_CODE);
+                break;
+
+            case R.id.team_settings_introduction_layout:
+                texteditIntent.putExtra(SettingTextEditActivity.SETTING_CONTENT_TITLE, "群聊注意事项");
+                texteditIntent.putExtra(SettingTextEditActivity.SETTING_CONTENT, teamIntroductionTV.getText().toString());
+                startActivityForResult(texteditIntent, INTRODUCTION_REQUEST_CODE);
+                break;
+
+        }
+    }
+
+
+    private void updateTeamName(final String teamName) {
+
+        getTeamService().updateTeam(teamRoomId, TeamFieldEnum.Name, teamName).setCallback(new RequestCallback<Void>() {
+            @Override
+            public void onSuccess(Void aVoid) {
+                showToast(context, "更新群聊名称成功");
+                teamNameTV.setText(teamName);
+            }
+
+            @Override
+            public void onFailed(int i) {
+                showToast(context, "您没有这个权限");
+            }
+
+            @Override
+            public void onException(Throwable throwable) {
+
+            }
+        });
+    }
+
+
+    private void updateTeamIntroduction(final String introduction) {
+
+        getTeamService().updateTeam(teamRoomId, TeamFieldEnum.Introduce, introduction).setCallback(new RequestCallback<Void>() {
+            @Override
+            public void onSuccess(Void aVoid) {
+                showToast(context, "更新成功");
+                teamIntroductionTV.setText(introduction);
+            }
+
+            @Override
+            public void onFailed(int i) {
+                showToast(context, "您没有这个权限");
+            }
+
+            @Override
+            public void onException(Throwable throwable) {
+
+            }
+        });
+    }
+
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+        if (resultCode == SettingTextEditActivity.SETTING_CONTENT_RESULT_CODE) {
+            switch (requestCode) {
+                case NAME_REQUEST_CODE:
+                    String teamName = data.getStringExtra(SettingTextEditActivity.SETTING_CONTENT_RESULT);
+                    updateTeamName(teamName);
+                    break;
+                case INTRODUCTION_REQUEST_CODE:
+                    String teamIntroduction = data.getStringExtra(SettingTextEditActivity.SETTING_CONTENT_RESULT);
+                    updateTeamIntroduction(teamIntroduction);
+                    break;
+            }
+        }
+
+    }
+
+
+    //加载群成员资料和头像
+    private void updateMembersInfo(List<String> memberIds) {
+        NIMClient.getService(UserService.class).fetchUserInfo(memberIds).setCallback(new RequestCallback<List<NimUserInfo>>() {
+            @Override
+            public void onSuccess(List<NimUserInfo> nimUserInfos) {
+                for (final NimUserInfo info : nimUserInfos) {
+                    ImageView avatar = new ImageView(context);
+                    avatar.setAdjustViewBounds(true);
+                    avatar.setMaxWidth((int) ImgUtil.convertDpToPixel(48,context));
+                    avatar.setMaxHeight((int) ImgUtil.convertDpToPixel(48,context));
+
+                    avatar.setOnClickListener(new View.OnClickListener() {
+                        @Override
+                        public void onClick(View v) {
+                            Intent intent = new Intent(context, UserInfoDetailActivity.class);
+                            intent.putExtra(UserInfoDetailActivity.USER_ID, info.getAccount());
+                            startActivity(intent);
+                        }
+                    });
+
+                    if (info.getAvatar() == null) {
+                        Glide.with(context)
+                                .load(R.drawable.nim_avatar_default)
+                                .bitmapTransform(new CropCircleTransformation(context))
+                                .into(avatar);
+                    } else {
+                        Glide.with(context)
+                                .load(info.getAvatar())
+                                .bitmapTransform(new CropCircleTransformation(context))
+                                .into(avatar);
+                    }
+
+                    teamMemberAvatarLayout.addView(avatar);
+                }
+            }
+
+            @Override
+            public void onFailed(int i) {
+
+            }
+
+            @Override
+            public void onException(Throwable throwable) {
+
+            }
+        });
+    }
+}

+ 48 - 0
app/src/com/sheishuo/app/core_module/trade/model/TradeModel.java

@@ -8,12 +8,17 @@ import com.sheishuo.app.common.beans.TradeBean;
 import com.sheishuo.app.common.util.net.INet;
 import com.sheishuo.app.common.util.net.NetImpl;
 import com.sheishuo.app.common.util.net.NetInfo;
+import com.sheishuo.app.common.util.net.NetStatus;
 import com.sheishuo.app.common.util.net.ResponseCallback;
 import com.sheishuo.app.core_module.trade.presenter.TradePresenter;
 
 import org.json.JSONException;
 import org.json.JSONObject;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
 import okhttp3.FormBody;
 
 /**
@@ -155,6 +160,49 @@ public class TradeModel {
     }
 
 
+    /**
+     * 上传图片
+     */
+    public void uploadPhoto(final List<String> filesPath){
+        final int allPhotoNum = filesPath.size();
+        final List<Integer> uploadedNum = new ArrayList<>();
+        uploadedNum.add(0);
+        uploadedNum.set(0,0);
+
+        for (int i = 0;i < filesPath.size();i++){
+            final int finalI = i;
+            new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    final int index = finalI;
+                    net.uploadImgs(filesPath.get(finalI), new ResponseCallback() {
+                        @Override
+                        public void onSuccess(Object object) {
+                            //Log.e("object", (String) object);
+                            presenter.showToast("第" + (finalI + 1) + "张照片上传完毕");
+                            presenter.onOnePhotoUploaded(index,(int)object);
+                        }
+
+                        @Override
+                        public void onFailed() {
+                            presenter.showToast("第" + (finalI + 1) + "张照片上传失败");
+                        }
+                    });
+
+
+                    //同步List
+                    Collections.synchronizedList(uploadedNum);
+                    int temp = uploadedNum.get(0) + 1;
+                    uploadedNum.set(0,temp);
+                    if(uploadedNum.get(0) == allPhotoNum) {
+                        presenter.onAllPhotoUploaded();
+                    }
+                }
+
+
+            }).start();
 
+        }
 
+    }
 }

+ 35 - 1
app/src/com/sheishuo/app/core_module/trade/presenter/TradePresenter.java

@@ -2,14 +2,19 @@ package com.sheishuo.app.core_module.trade.presenter;
 
 import com.sheishuo.app.common.beans.TradeBean;
 import com.sheishuo.app.core_module.trade.model.TradeModel;
+import com.sheishuo.app.core_module.trade.view.ui.activity.TradePublishActivity;
 import com.sheishuo.app.main.fragment.TradeListFragment;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * Created by KN on 2017/7/31.
  */
 
 public class TradePresenter {
     TradeListFragment fragment;
+    TradePublishActivity activity;
     TradeModel model;
 
     public TradePresenter(TradeListFragment fragment){
@@ -17,6 +22,11 @@ public class TradePresenter {
         model = new TradeModel(this);
     }
 
+    public TradePresenter(TradePublishActivity activity){
+        this.activity = activity;
+        model = new TradeModel(this);
+    }
+
 
     public void loadTradeList(int type,int page){
         model.loadTradeList(type,page);
@@ -38,7 +48,31 @@ public class TradePresenter {
         fragment.onUnfollowTradeSuccess(id);
     }
     public void showToast(String str){
-        fragment.showToast(str);
+        if (fragment != null){
+            fragment.showToast(str);
+        }else {
+            activity.showToast(activity,str);
+        }
+    }
+
+
+    public void uploadPhoto(String filePath){
+        List<String> path = new ArrayList<>();
+        path.add(filePath);
+        uploadPhoto(path);
     }
 
+    public void uploadPhoto(List<String> filePaths){
+        model.uploadPhoto(filePaths);
+    }
+
+
+    public void onOnePhotoUploaded(int index,int photoId){
+        activity.onOnePhotoUploaded(index,photoId);
+    }
+
+
+    public void onAllPhotoUploaded(){
+        activity.onAllPhotosUploaded();
+    }
 }

+ 4 - 3
app/src/com/sheishuo/app/core_module/trade/view/adapter/TradeItemAdapter.java

@@ -11,6 +11,7 @@ import android.view.View;
 import android.view.ViewGroup;
 import android.widget.GridLayout;
 import android.widget.ImageView;
+import android.widget.LinearLayout;
 import android.widget.TextView;
 
 import com.bumptech.glide.Glide;
@@ -149,7 +150,7 @@ public class TradeItemAdapter extends RecyclerView.Adapter<TradeItemAdapter.Trad
         holder.review.setText("浏览"+bean.getReview());
 
         //加载thumbs
-        GridViewAdapter gridViewAdapter = new GridViewAdapter(bean.getThumbs());
+        GridViewAdapter gridViewAdapter = new GridViewAdapter(context,bean.getThumbs(),bean.getPics());
         if (bean.getThumbs().size() > 4){
             //默认为两列,如果超过4张图则显示为3列
             holder.imgGridView.setNumColumns(3);
@@ -290,14 +291,14 @@ public class TradeItemAdapter extends RecyclerView.Adapter<TradeItemAdapter.Trad
     }
 
     class TradeItemViewHolder extends RecyclerView.ViewHolder{
-        private CardView layout;
+        private LinearLayout layout;
         private ImageView avatarImg,followImg;
         private TextView userName,date,priority,review;
         private PartlyHighLightTextView content;
         private ImgGridView imgGridView;
         public TradeItemViewHolder(View view) {
             super(view);
-            layout = (CardView) view.findViewById(R.id.trade_list_item_layout);
+            layout = (LinearLayout) view.findViewById(R.id.trade_list_item_layout);
             avatarImg = (ImageView) view.findViewById(R.id.trade_list_item_avatar);
             followImg = (ImageView) view.findViewById(R.id.trade_list_item_follow_img);
             userName = (TextView) view.findViewById(R.id.trade_list_item_name);

+ 0 - 59
app/src/com/sheishuo/app/core_module/trade/view/ui/activity/TradeDetailActivity.java

@@ -1,59 +0,0 @@
-package com.sheishuo.app.core_module.trade.view.ui.activity;
-
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.util.Log;
-import android.view.Menu;
-import com.sheishuo.app.R;
-import com.sheishuo.app.common.views.BaseToolbar;
-import com.sheishuo.app.impl.SheishuoUI;
-
-/**
- * Created by KN on 2017/8/4.
- */
-
-public class TradeDetailActivity extends SheishuoUI{
-
-    private String TAG = this.getClass().getSimpleName();
-
-    private BaseToolbar toolbar;
-    public static void start(Context context) {
-        start(context, null);
-    }
-
-    public static void start(Context context, Intent extras) {
-        Intent intent = new Intent();
-        intent.setClass(context, TradeDetailActivity.class);
-        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
-        if (extras != null) {
-            intent.putExtras(extras);
-        }
-        context.startActivity(intent);
-    }
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.trade_detail_activity);
-        findViews();
-        init();
-    }
-
-
-    private void findViews(){
-        toolbar = (BaseToolbar) findViewById(R.id.toolbar);
-    }
-
-    private void init(){
-        setSupportActionBar(toolbar);
-    }
-
-
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        super.onCreateOptionsMenu(menu);
-        Log.e(TAG,"onCreateOptionsMenu");
-        getMenuInflater().inflate(R.menu.main_activity_menu,menu);
-        return true;
-    }
-}

+ 134 - 0
app/src/com/sheishuo/app/core_module/trade/view/ui/activity/TradeDetailsActivity.java

@@ -0,0 +1,134 @@
+package com.sheishuo.app.core_module.trade.view.ui.activity;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.engine.DiskCacheStrategy;
+import com.netease.nim.uikit.common.ui.imageview.HeadImageView;
+import com.netease.nim.uikit.session.activity.WatchPictureActivity;
+import com.netease.nimlib.sdk.NIMClient;
+import com.netease.nimlib.sdk.msg.model.IMMessage;
+import com.netease.nimlib.sdk.uinfo.UserService;
+import com.sheishuo.app.R;
+import com.sheishuo.app.common.beans.TradeBean;
+import com.sheishuo.app.common.util.img.ImgUtil;
+import com.sheishuo.app.common.views.BaseToolbar;
+import com.sheishuo.app.common.views.PartlyHighLightTextView;
+import com.sheishuo.app.impl.SheishuoUI;
+
+/**
+ * Created by KN on 2017/8/24.
+ */
+
+public class TradeDetailsActivity extends SheishuoUI {
+
+    public static String DATA = "data";
+
+
+    private String TAG = this.getClass().getSimpleName();
+    private Context context = this;
+
+    private TradeBean.DBean.ListBean bean;
+
+
+    private BaseToolbar toolbar;
+
+    private LinearLayout imgsLayout;
+
+    private TextView nickNameTV
+            ,locationTV
+            ,dateTV
+            ,priorityTV
+            ,readNumTV;
+
+    private HeadImageView avatar;
+
+    private PartlyHighLightTextView contentTV;
+
+
+
+
+    //FLAGS
+    private int infoType = 0;
+
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.trade_details);
+        bean = (TradeBean.DBean.ListBean) getIntent().getSerializableExtra(DATA);
+        findViews();
+        init();
+    }
+
+
+    void findViews(){
+        toolbar = findView(R.id.toolbar);
+
+        avatar = findView(R.id.trade_details_avatar);
+
+        nickNameTV = findView(R.id.trade_details_name);
+        locationTV = findView(R.id.trade_details_location);
+        dateTV = findView(R.id.trade_details_date);
+        priorityTV = findView(R.id.trade_details_priority);
+        readNumTV = findView(R.id.trade_details_read_num);
+
+        contentTV = findView(R.id.trade_details_content);
+
+        imgsLayout = findView(R.id.trade_details_img_layout);
+
+
+
+    }
+
+    void init(){
+
+
+        if (getUserInfo(bean.getUser_id()).getAvatar() != null){
+            Glide.with(context)
+                    .load(getUserInfo(bean.getUser_id())
+                            .getAvatar()).into(avatar);
+        }
+
+
+        nickNameTV.setText(getName(bean.getUser_id()));
+        locationTV.setText(bean.getDistrict());
+        dateTV.setText(bean.getInputtime());
+        if (bean.getPriority().equals("0")) priorityTV.setVisibility(View.INVISIBLE);
+        priorityTV.setText("置顶x" + bean.getPriority());
+        readNumTV.setText("阅读量" + bean.getReview());
+
+        contentTV.setText(bean.getMsg());
+
+        imgsLayout.removeAllViews();
+
+        for (int i = 0;i < bean.getPics().size();i++){
+            Log.e(TAG,bean.getPics().get(i));
+            ImageView imageView = new ImageView(context);
+
+            Glide.with(context)
+                    .load(bean.getPics().get(i))
+                    .diskCacheStrategy(DiskCacheStrategy.ALL)
+                    .into(imageView);
+
+
+            final int finalI = i;
+            imageView.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    WatchPictureActivity.start(context,bean.getPics(),bean.getThumbs(), finalI);
+                }
+            });
+
+            Log.e(TAG,"addView");
+            imgsLayout.addView(imageView);
+        }
+    }
+
+}

+ 353 - 0
app/src/com/sheishuo/app/core_module/trade/view/ui/activity/TradePublishActivity.java

@@ -0,0 +1,353 @@
+package com.sheishuo.app.core_module.trade.view.ui.activity;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v7.widget.RecyclerView;
+import android.util.Log;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.CompoundButton;
+import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.RadioButton;
+import android.widget.SeekBar;
+import android.widget.Spinner;
+import android.widget.TextView;
+
+import com.bumptech.glide.Glide;
+import com.netease.nim.uikit.activity.GiftRechargeActivity;
+import com.netease.nim.uikit.common.media.picker.PickImageHelper;
+import com.netease.nim.uikit.common.media.picker.model.PhotoInfo;
+import com.sheishuo.app.R;
+import com.sheishuo.app.cache.AccountCache;
+import com.sheishuo.app.common.util.img.ImgUtil;
+import com.sheishuo.app.common.util.net.NetImpl;
+import com.sheishuo.app.common.util.net.ResponseCallback;
+import com.sheishuo.app.core_module.trade.model.TradeModel;
+import com.sheishuo.app.core_module.trade.presenter.TradePresenter;
+import com.sheishuo.app.core_module.trade.view.adapter.TradeItemAdapter;
+import com.sheishuo.app.impl.SheishuoUI;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import jp.wasabeef.glide.transformations.ColorFilterTransformation;
+
+/**
+ * Created by KN on 2017/8/23.
+ */
+
+public class TradePublishActivity extends SheishuoUI {
+
+    public final static String TEAM_ID = "team_id";
+
+    private String TAG = this.getClass().getSimpleName();
+    private Context context = this;
+
+    private TradePresenter presenter = new TradePresenter(this);
+
+    private EditText tradeContentET;
+
+    private Button publishBtn;
+
+    private RadioButton sellRadioBtn, buyRadioBtn;
+
+    private SeekBar prioritySeekbar;
+
+    private TextView priorityTV,emptyTipTV,balanceTV,rechargeTV;
+
+    private LinearLayout photosLayout,tradeLayout,parentLayout;
+
+    private String photosStr = "";
+
+    private List<String> selectedPhotoPathList = new ArrayList<>();
+
+    private List<String> photoIds = new ArrayList<>();
+
+
+    //Spinner
+    private Spinner spinner;
+    private List<String> priorityTypeList = new ArrayList<>();
+    private ArrayAdapter<String> adapter;
+
+
+
+    //FLAGS
+    private String teamId = "";
+    private String PRIORITY_TYPE = TradeItemAdapter.PRIORITY_COUNTRY;
+    private int TRADE_TYPE = TradeModel.TYPE_SELL;
+    private int RADIO_CHECKED;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        if (getIntent().getStringExtra(TEAM_ID) != null)
+            teamId = getIntent().getStringExtra(TEAM_ID);
+        setContentView(R.layout.trade_publish_activity);
+        findViews();
+        init();
+    }
+
+
+    void findViews() {
+        parentLayout = findView(R.id.trade_publish_parent_layout);
+        tradeLayout = findView(R.id.gift_panel_trade_layout);
+        emptyTipTV = findView(R.id.gift_panel_empty_tip_TV);
+        tradeContentET = findView(R.id.gift_panel_gift_message_ET);
+        publishBtn = findView(R.id.gift_panel_publish_btn);
+        sellRadioBtn = findView(R.id.gift_panel_sell_radio_btn);
+        buyRadioBtn = findView(R.id.gift_panel_buy_radio_btn);
+        spinner = findView(R.id.gift_panel_spinner);
+        prioritySeekbar = findView(R.id.gift_panel_num_seekbar);
+        priorityTV = findView(R.id.gift_panel_num_TV);
+        photosLayout = findView(R.id.gift_panel_photos_layout);
+        balanceTV = findView(R.id.gift_panel_balance_TV);
+        rechargeTV = findView(R.id.gift_panel_recharge_TV);
+    }
+
+
+    void init() {
+
+        //设置父Layout
+        parentLayout.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                finish();
+            }
+        });
+
+        //初始化余额
+        balanceTV.setText(AccountCache.getAccount().getCoin());
+
+        //初始化充值
+        rechargeTV.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                startActivity(new Intent(context,GiftRechargeActivity.class));
+            }
+        });
+        //设置Spinner
+        priorityTypeList.add("国家道具");
+        priorityTypeList.add("省份道具");
+        priorityTypeList.add("城市道具");
+        priorityTypeList.add("地区道具");
+        adapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_dropdown_item, priorityTypeList);
+        spinner.setAdapter(adapter);
+        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+            @Override
+            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
+                PRIORITY_TYPE = String.valueOf(position);
+            }
+
+            @Override
+            public void onNothingSelected(AdapterView<?> parent) {
+
+            }
+        });
+
+
+        //设置seekbar
+        prioritySeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
+            @Override
+            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
+                    priorityTV.setText(String.valueOf(progress));
+            }
+
+            @Override
+            public void onStartTrackingTouch(SeekBar seekBar) {
+
+            }
+
+            @Override
+            public void onStopTrackingTouch(SeekBar seekBar) {
+
+            }
+        });
+
+
+        //设置RadioButton
+        sellRadioBtn.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+            @Override
+            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+                if(RADIO_CHECKED == R.id.gift_panel_sell_radio_btn){
+                    sellRadioBtn.setChecked(false);
+                    return;
+                }
+                if (isChecked) {
+                    tradeLayout.setVisibility(View.VISIBLE);
+                    emptyTipTV.setVisibility(View.GONE);
+                    TRADE_TYPE = TradeModel.TYPE_SELL;
+                }
+            }
+        });
+
+        buyRadioBtn.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+            @Override
+            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+                if(RADIO_CHECKED == R.id.gift_panel_buy_radio_btn){
+                    buyRadioBtn.setChecked(false);
+                    return;
+                }
+                if (isChecked) {
+                    tradeLayout.setVisibility(View.VISIBLE);
+                    emptyTipTV.setVisibility(View.GONE);
+                    TRADE_TYPE = TradeModel.TYPE_BUY;
+                }
+            }
+        });
+
+
+
+
+        //初始化发布按钮
+        publishBtn.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                publishBtn.setEnabled(false);
+                for (int i = 0;i < photoIds.size() ; i ++){
+                    if (i == photoIds.size() - 1){
+                        photosStr += photoIds.get(i);
+                    }else {
+                        photosStr += photoIds.get(i) + ",";
+                    }
+                }
+
+                Log.e(TAG,photosStr);
+
+                new NetImpl().publishTrade(TRADE_TYPE
+                        , tradeContentET.getText().toString()
+                        , photosStr
+                        , Integer.valueOf(priorityTV.getText().toString())
+                        , Integer.valueOf(PRIORITY_TYPE)
+                        , teamId
+                        , new ResponseCallback() {
+                            @Override
+                            public void onSuccess(Object object) {
+                                try {
+                                    int code = new JSONObject((String) object).getInt("c");
+                                    if (1 == code){
+                                        showToast(context,new JSONObject((String) object).getString("d"));
+                                    }else {
+                                        showToast(context,"发布成功");
+                                    }
+                                    finish();
+
+                                } catch (JSONException e) {
+                                    e.printStackTrace();
+                                }
+                            }
+
+                            @Override
+                            public void onFailed() {
+                                showToast(context,"发布失败");
+                            }
+                        });
+            }
+        });
+
+
+        //初始化photosLayout
+        photosLayout.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                PickImageHelper.PickImageOption option = new PickImageHelper.PickImageOption();
+                PickImageHelper.pickImage(context, 0, option);
+            }
+        });
+
+    }
+
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+        if (resultCode == Activity.RESULT_OK) {
+            for (String key : data.getExtras().keySet()) {
+                Log.e("key", key);
+            }
+
+            Bundle result = data.getExtras();
+            if (!result.getBoolean("from_local")) {
+                //照相机
+                String filePath = result.getString("file_path");
+                //移除添加图片按钮
+                photosLayout.removeAllViews();
+
+                ImageView imageView = new ImageView(this);
+                imageView.setAdjustViewBounds(true);
+                int toDp = (int) ImgUtil.convertDpToPixel(128, context);
+                imageView.setLayoutParams(new LinearLayout.LayoutParams(toDp, toDp));
+                Glide.with(context).load(filePath)
+                        .centerCrop()
+                        .bitmapTransform(new ColorFilterTransformation(context, 0x7900CCCC))
+                        .into(imageView);
+                photosLayout.addView(imageView);
+                selectedPhotoPathList.add(filePath);
+                presenter.uploadPhoto(filePath);
+            } else {
+                //相册
+
+                //移除添加图片按钮
+                photosLayout.removeAllViews();
+
+                List<PhotoInfo> photoInfoList = (List<PhotoInfo>) result.getSerializable("photo_list");
+                for (PhotoInfo info : photoInfoList) {
+                    ImageView imageView = new ImageView(this);
+                    imageView.setAdjustViewBounds(true);
+                    int toDp = (int) ImgUtil.convertDpToPixel(128, context);
+                    imageView.setLayoutParams(new LinearLayout.LayoutParams(toDp, toDp));
+                    Glide.with(context).load(info.getFilePath())
+                            .centerCrop()
+                            .bitmapTransform(new ColorFilterTransformation(context, 0x7900CCCC))
+                            .into(imageView);
+                    photosLayout.addView(imageView);
+                    selectedPhotoPathList.add(info.getAbsolutePath());
+                }
+
+                presenter.uploadPhoto(selectedPhotoPathList);
+
+
+
+            }
+
+        }
+    }
+
+
+    /**
+     * 开放调用方法
+     */
+
+
+
+    //当一张照片上传完成后回调
+    public void onOnePhotoUploaded(final int index, final int photoId){
+        getHandler().post(new Runnable() {
+            @Override
+            public void run() {
+                ImageView imageView = (ImageView) photosLayout.getChildAt(index);
+                String filePath = selectedPhotoPathList.get(index);
+                Glide.with(context).load(filePath).into(imageView);
+                Collections.synchronizedList(photoIds);
+                photoIds.add(String.valueOf(photoId));
+
+            }
+        });
+
+    }
+
+
+    //全部照片上传完成
+    public void onAllPhotosUploaded(){
+        publishBtn.setEnabled(true);
+    }
+}

+ 63 - 0
app/src/com/sheishuo/app/core_module/trade/view/ui/activity/TradeSearchActivity.java

@@ -0,0 +1,63 @@
+package com.sheishuo.app.core_module.trade.view.ui.activity;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.EditText;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.sheishuo.app.R;
+import com.sheishuo.app.impl.SheishuoUI;
+
+/**
+ * Created by KN on 2017/8/23.
+ */
+
+public class TradeSearchActivity extends SheishuoUI {
+
+    private String TAG = this.getClass().getSimpleName();
+
+    private Context context = this;
+
+    private LinearLayout parentLayout;
+
+    private EditText searchET;
+
+    private TextView searchTV;
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.trade_list_search);
+        findViews();
+        init();
+    }
+
+
+    void findViews(){
+        parentLayout = findView(R.id.trade_list_search_parent_layout);
+        searchET = findView(R.id.trade_list_search_ET);
+        searchTV = findView(R.id.trade_list_search);
+    }
+
+    void init(){
+        searchTV.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                String searchContent = searchET.getText().toString();
+                showToast(context,"搜索完成");
+                finish();
+
+            }
+        });
+
+
+
+        parentLayout.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                finish();
+            }
+        });
+    }
+}

+ 84 - 13
app/src/com/sheishuo/app/impl/SheishuoTeamMessageActivity.java

@@ -2,8 +2,11 @@ package com.sheishuo.app.impl;
 
 import android.app.Activity;
 import android.content.Context;
+import android.content.DialogInterface;
 import android.content.Intent;
 import android.os.Bundle;
+import android.support.v4.view.MenuItemCompat;
+import android.support.v7.app.AlertDialog;
 import android.util.Log;
 import android.view.Menu;
 import android.view.MenuInflater;
@@ -30,6 +33,7 @@ import com.netease.nimlib.sdk.team.model.Team;
 import com.netease.nimlib.sdk.team.model.TeamMember;
 import com.sheishuo.app.R;
 import com.sheishuo.app.common.views.BaseToolbar;
+import com.sheishuo.app.core_module.sheishuo.view.ui.TeamSettingsActivity;
 import com.sheishuo.app.session.search.SearchMessageActivity;
 
 import java.util.List;
@@ -85,15 +89,12 @@ public class SheishuoTeamMessageActivity extends TeamMessageActivity {
 
     private void initToolbar() {
 
-        toolbar.getTitleTV().setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                //群组资料
-            }
-        });
 
         setSupportActionBar(toolbar);
 
+
+
+
     }
 
 
@@ -124,7 +125,26 @@ public class SheishuoTeamMessageActivity extends TeamMessageActivity {
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
         MenuInflater inflater = new MenuInflater(context);
-        inflater.inflate(R.menu.team_chat_menu, menu);
+        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.getTitleTV().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);
     }
 
@@ -138,15 +158,16 @@ public class SheishuoTeamMessageActivity extends TeamMessageActivity {
             case R.id.team_chat_menu_clear_chat_history:
                 //清空聊天记录
                 if (team != null) {
-                    NIMClient.getService(MsgService.class).clearChattingHistory(team.getId(), SessionTypeEnum.Team);
-                    //通知消息更新
-                    MessageListPanelHelper.getInstance().notifyClearMessages(team.getId());
-
-
-                    showToast("清除消息成功");
+                    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);
     }
@@ -325,4 +346,54 @@ public class SheishuoTeamMessageActivity extends TeamMessageActivity {
             }
         });
     }
+
+
+    public boolean isSystemTeam(Team team){
+        if (team.getName().contains("国家")
+                ||team.getName().contains("省")
+                ||team.getName().contains("市")
+                ||team.getName().contains("区")
+                ||team.getName().contains("县")
+                ||team.getName().contains("自治")
+                ||team.getName().contains("特别行政区")){
+            return true;
+        }
+
+        return false;
+    }
+
+
+    private void showClearChatHistoryDialog(){
+        /* @setIcon 设置对话框图标
+         * @setTitle 设置对话框标题
+         * @setMessage 设置对话框消息提示
+         * setXXX方法返回Dialog对象,因此可以链式设置属性
+         */
+        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) {
+                        NIMClient.getService(MsgService.class).clearChattingHistory(team.getId(), SessionTypeEnum.Team);
+                        //通知消息更新
+                        MessageListPanelHelper.getInstance().notifyClearMessages(team.getId());
+
+
+                        showToast("清除消息成功");
+                    }
+                });
+        normalDialog.setNegativeButton("取消",
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int which) {
+
+                    }
+                });
+        // 显示
+        normalDialog.show();
+    }
+
 }

+ 18 - 0
app/src/com/sheishuo/app/impl/SheishuoTeamMessageFragment.java

@@ -1,10 +1,14 @@
 package com.sheishuo.app.impl;
 
+import android.content.Intent;
 import android.os.Bundle;
 import android.util.Log;
+import android.view.View;
 
 import com.netease.nim.uikit.session.fragment.TeamMessageFragment;
 import com.netease.nim.uikit.session.module.Container;
+import com.netease.nim.uikit.session.module.input.InputPanel;
+import com.sheishuo.app.core_module.trade.view.ui.activity.TradePublishActivity;
 
 /**
  * Created by KN on 2017/8/18.
@@ -38,10 +42,24 @@ public class SheishuoTeamMessageFragment extends TeamMessageFragment {
                 ||team.getName().contains("特别行政区")){
             inputPanel.setSendGiftEnable(true);
         }
+
+
+
+        inputPanel.getSendGiftBtn().setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Intent intent = new Intent(getActivity(),TradePublishActivity.class);
+                intent.putExtra(TradePublishActivity.TEAM_ID,team.getId());
+                startActivity(intent);
+            }
+        });
     }
 
 
 
+
+
+
     public Container getContainer(){
         return container;
     }

+ 6 - 0
app/src/com/sheishuo/app/impl/SheishuoUI.java

@@ -13,6 +13,7 @@ import android.widget.Toast;
 
 import com.netease.nim.uikit.common.activity.UI;
 import com.netease.nimlib.sdk.NIMClient;
+import com.netease.nimlib.sdk.uinfo.UserInfoProvider;
 import com.netease.nimlib.sdk.uinfo.UserService;
 import com.netease.nimlib.sdk.uinfo.model.NimUserInfo;
 import com.sheishuo.app.R;
@@ -90,5 +91,10 @@ public class SheishuoUI extends UI {
     }
 
 
+    public NimUserInfo getUserInfo(String userId){
+        return NIMClient.getService(UserService.class).getUserInfo(userId);
+    }
+
+
 
 }

+ 6 - 2
app/src/com/sheishuo/app/login/LoginActivity.java

@@ -108,7 +108,7 @@ public class LoginActivity extends SheishuoUI implements View.OnClickListener{
 
 
                 //登录NIM服务
-                new LoginHelper(context,bean).loginToNIM();
+                new LoginHelper(LoginActivity.this,bean).loginToNIM();
 
 
             }
@@ -127,5 +127,9 @@ public class LoginActivity extends SheishuoUI implements View.OnClickListener{
         });
     }
 
-
+    @Override
+    public void onBackPressed() {
+        super.onBackPressed();
+        LoginAndRegActivity.start(this);
+    }
 }

+ 9 - 2
app/src/com/sheishuo/app/login/LoginAndRegActivity.java

@@ -56,7 +56,7 @@ public class LoginAndRegActivity extends SheishuoUI implements View.OnClickListe
 
 
     public static void start(Context context) {
-        Intent intent = new Intent(context, LoginActivity.class);
+        Intent intent = new Intent(context, LoginAndRegActivity.class);
         intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
         context.startActivity(intent);
     }
@@ -99,7 +99,7 @@ public class LoginAndRegActivity extends SheishuoUI implements View.OnClickListe
 
 
                     //登录NIM服务
-                    new LoginHelper(context,bean).loginToNIM();
+                    new LoginHelper(LoginAndRegActivity.this,bean).loginToNIM();
 
 
                 }
@@ -156,4 +156,11 @@ public class LoginAndRegActivity extends SheishuoUI implements View.OnClickListe
         Toast.makeText(this, "未全部授权,部分功能可能无法正常运行!", Toast.LENGTH_SHORT).show();
         MPermission.printMPermissionResult(false, this, BASIC_PERMISSIONS);
     }
+
+
+    @Override
+    public void onBackPressed() {
+        super.onBackPressed();
+        System.exit(0);
+    }
 }

+ 8 - 5
app/src/com/sheishuo/app/login/helper/LoginHelper.java

@@ -1,6 +1,6 @@
 package com.sheishuo.app.login.helper;
 
-import android.content.Context;
+import android.app.Activity;
 import android.util.Log;
 
 import com.netease.nim.uikit.NimUIKit;
@@ -12,6 +12,7 @@ import com.netease.nimlib.sdk.auth.LoginInfo;
 import com.sheishuo.app.SheishuoCache;
 import com.sheishuo.app.config.preference.Preferences;
 import com.sheishuo.app.config.preference.UserPreferences;
+import com.sheishuo.app.login.LoginActivity;
 import com.sheishuo.app.login.beans.LoginBean;
 import com.sheishuo.app.main.activity.MainActivity;
 
@@ -22,12 +23,12 @@ import com.sheishuo.app.main.activity.MainActivity;
 public class LoginHelper {
 
     private String TAG = this.getClass().getSimpleName();
-    private Context context;
+    private Activity activity;
     LoginBean loginBean;
     private AbortableFuture<LoginInfo> loginRequest;
 
-    public LoginHelper(Context context,LoginBean loginBean){
-        this.context = context;
+    public LoginHelper(Activity activity, LoginBean loginBean){
+        this.activity = activity;
         this.loginBean = loginBean;
     }
 
@@ -61,7 +62,9 @@ public class LoginHelper {
                     initNotificationConfig();
 
                     // 进入主界面
-                    MainActivity.start(context, null);
+                    MainActivity.start(activity, null);
+
+                    activity.finish();
                 }
 
                 @Override

+ 3 - 0
app/src/com/sheishuo/app/main/activity/MainActivity.java

@@ -292,4 +292,7 @@ public class MainActivity extends SheishuoUI {
         LoginActivity.start(this);
         finish();
     }
+
+
+
 }

+ 5 - 3
app/src/com/sheishuo/app/main/adapter/AreaGroupsAdapter.java

@@ -56,16 +56,18 @@ public class AreaGroupsAdapter extends RecyclerView.Adapter<AreaGroupsAdapter.Ar
                 if (team.getName().equals("国家聊天室")) {
                     Glide.with(context).load(R.drawable.group_country).into(holder.groupIco);
                 } else if (team.getName().contains("市") || team.getName().contains("省")) {
-                    Glide.with(context).load(R.drawable.group_province_city).into(holder.groupIco);
+                    Glide.with(context).load(R.drawable.group_province_city)
+                            .into(holder.groupIco);
                 } else if (team.getName().contains("区") || team.getName().contains("县")) {
-                    Glide.with(context).load(R.drawable.group_district).into(holder.groupIco);
+                    Glide.with(context).load(R.drawable.group_district)
+                            .placeholder(R.drawable.group_district)
+                            .into(holder.groupIco);
                 } else {
                     if (team.getIcon().isEmpty()) {
                         Glide.with(context).load(R.drawable.nim_avatar_group).into(holder.groupIco);
                     } else {
                         Glide.with(context)
                                 .load(team.getIcon())
-                                .placeholder(R.drawable.nim_avatar_group)
                                 .into(holder.groupIco);
                     }
                 }

+ 39 - 9
app/src/com/sheishuo/app/main/adapter/CircleListAdapter.java

@@ -1,6 +1,7 @@
 package com.sheishuo.app.main.adapter;
 
 import android.content.Context;
+import android.content.Intent;
 import android.support.v7.widget.CardView;
 import android.support.v7.widget.RecyclerView;
 import android.text.Html;
@@ -8,6 +9,7 @@ import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.AdapterView;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
@@ -15,6 +17,9 @@ import android.widget.TextView;
 import com.bumptech.glide.Glide;
 import com.netease.nimlib.sdk.NIMClient;
 import com.netease.nimlib.sdk.RequestCallback;
+import com.netease.nimlib.sdk.msg.MsgService;
+import com.netease.nimlib.sdk.msg.model.IMMessage;
+import com.netease.nimlib.sdk.team.TeamService;
 import com.netease.nimlib.sdk.uinfo.UserService;
 import com.netease.nimlib.sdk.uinfo.model.NimUserInfo;
 import com.sheishuo.app.R;
@@ -24,6 +29,7 @@ import com.sheishuo.app.common.util.img.ImgUtil;
 import com.sheishuo.app.common.util.net.NetStatus;
 import com.sheishuo.app.common.views.GridViewAdapter;
 import com.sheishuo.app.common.views.ImgGridView;
+import com.sheishuo.app.core_module.circle.activity.NewCommentActivity;
 import com.sheishuo.app.main.fragment.CircleOfFriendsFragment;
 
 import org.w3c.dom.Text;
@@ -31,6 +37,7 @@ import org.w3c.dom.Text;
 import java.util.ArrayList;
 import java.util.List;
 
+import static com.sheishuo.app.R.id.all;
 import static com.sheishuo.app.R.id.circle_comment_preview_item_tv;
 import static com.sheishuo.app.R.id.circle_liked_user_tv;
 import static com.sheishuo.app.R.id.visit_num_tv;
@@ -52,7 +59,6 @@ public class CircleListAdapter  extends RecyclerView.Adapter<CircleListAdapter.C
         this.addAll(bean);
         this.context = fragment.getActivity();
         this.circleFragment = fragment;
-
     }
 
     @Override
@@ -72,21 +78,30 @@ public class CircleListAdapter  extends RecyclerView.Adapter<CircleListAdapter.C
         holder.dateTV.setText(bean.getInputtime());
         holder.likesNumTV.setText(bean.getLikes());
         holder.visitNumTv.setText(bean.getViews());
-
-
         holder.usernameTV.setText(getUserName(bean.getUser_id()));
 
+        //直接评论
+        holder.commentTV.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Log.e("socialId",bean.getId());
+                Intent intent = new Intent(context, NewCommentActivity.class);
+                intent.putExtra(NewCommentActivity.SOCIAL_ID,bean.getId());
+                context.startActivity(intent);
+            }
+        });
 
         //加载thumbs
-        GridViewAdapter gridViewAdapter = new GridViewAdapter(bean.getThumbs());
         if (bean.getThumbs().size() > 4){
             //默认为两列,如果超过4张图则显示为3列
             holder.gridView.setNumColumns(3);
         }
+        GridViewAdapter gridViewAdapter = new GridViewAdapter(context,bean.getThumbs(),bean.getPics());
         holder.gridView.setAdapter(gridViewAdapter);
 
 
 
+
         //加载朋友圈列表用户头像
         if (NIMClient.getService(UserService.class).getUserInfo(bean.getUser_id())!= null){
             String url = NIMClient.getService(UserService.class).getUserInfo(bean.getUser_id()).getAvatar();
@@ -103,6 +118,8 @@ public class CircleListAdapter  extends RecyclerView.Adapter<CircleListAdapter.C
                 allLikedUser += getUserName(likedUserId) + ",";
             }
 
+            allLikedUser = allLikedUser.substring(0,allLikedUser.length() - 1);
+
             holder.likedUserTV.setText(allLikedUser);
         }
 
@@ -139,7 +156,7 @@ public class CircleListAdapter  extends RecyclerView.Adapter<CircleListAdapter.C
         //加载评论
         if (bean.getComments_list().size() > 0){
             holder.commentsLayout.setVisibility(View.VISIBLE);
-            for (CircleBean.DBean.ListBean.Comment comment : bean.getComments_list()){
+            for (final CircleBean.DBean.ListBean.Comment comment : bean.getComments_list()){
                 View commentView = LayoutInflater.from(context).inflate(R.layout.circle_comment_preview_item,null);
                 ImageView imageView = (ImageView) commentView.findViewById(R.id.circle_comment_preview_item_img);
                 TextView textView = (TextView) commentView.findViewById(circle_comment_preview_item_tv);
@@ -157,9 +174,19 @@ public class CircleListAdapter  extends RecyclerView.Adapter<CircleListAdapter.C
                             + getUserName(comment.getUser_id())
                             + "</font> "
                             + comment.getComment()));
-                    System.out.println(comment.getComment());
                 }
 
+                //直接评论
+                commentView.setOnClickListener(new View.OnClickListener() {
+                    @Override
+                    public void onClick(View v) {
+                        Intent intent = new Intent(context, NewCommentActivity.class);
+                        intent.putExtra(NewCommentActivity.SOCIAL_ID,bean.getId());
+                        intent.putExtra(NewCommentActivity.REPLY_ID,comment.getUser_id());
+                        context.startActivity(intent);
+                    }
+                });
+
 
                 holder.commentsLayout.addView(commentView);
             }
@@ -170,6 +197,7 @@ public class CircleListAdapter  extends RecyclerView.Adapter<CircleListAdapter.C
                     + "条评论</font>"));
             holder.commentsLayout.addView(moreCommentsTV);
 
+
         }
 
 
@@ -290,7 +318,7 @@ public class CircleListAdapter  extends RecyclerView.Adapter<CircleListAdapter.C
         if (listener != null){
             switch (v.getId()){
                 //Item点击
-                case R.id.circle_item_cardview:
+                case R.id.circle_item_layout:
                     listener.onItemClick(v);
                     break;
 
@@ -303,7 +331,7 @@ public class CircleListAdapter  extends RecyclerView.Adapter<CircleListAdapter.C
 
     //ViewHolder
     class CircleListViewHolder extends RecyclerView.ViewHolder{
-        private CardView layout;
+        private LinearLayout layout;
         private LinearLayout commentsLayout;
         private TextView usernameTV
                 ,contentTV
@@ -312,6 +340,7 @@ public class CircleListAdapter  extends RecyclerView.Adapter<CircleListAdapter.C
                 ,visitNumTv
                 ,likesNumTV
                 ,likedUserTV
+                ,commentTV
                 ,firstCommentTV
                 ,secondCommentTV;
         private ImgGridView gridView;
@@ -323,7 +352,7 @@ public class CircleListAdapter  extends RecyclerView.Adapter<CircleListAdapter.C
 
         public CircleListViewHolder(View v) {
             super(v);
-            layout = (CardView) v.findViewById(R.id.circle_item_cardview);
+            layout = (LinearLayout) v.findViewById(R.id.circle_item_layout);
             commentsLayout = (LinearLayout) v.findViewById(R.id.circle_two_comments_layout);
             likedUserLayout = v.findViewById(R.id.circle_liked_user_layout);
             gridView = (ImgGridView) v.findViewById(R.id.gridview_imgs);
@@ -334,6 +363,7 @@ public class CircleListAdapter  extends RecyclerView.Adapter<CircleListAdapter.C
             visitNumTv = (TextView) v.findViewById(visit_num_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);
             //firstCommentTV = (TextView) v.findViewById(R.id.circle_comment_first_tv);
             //secondCommentTV = (TextView) v.findViewById(R.id.circle_comment_second_tv);
 

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

@@ -185,6 +185,9 @@ public class AreaGroupsFragment extends MainTabFragment {
             }
         });
 
+        //自动打开地区群
+        SheishuoUIKit.startTeamSession(getActivity(),groupIds.get(groupIds.size() - 1));
+
 
         //加载附近的群
         new Thread(new Runnable() {

+ 12 - 6
app/src/com/sheishuo/app/main/fragment/CircleOfFriendsFragment.java

@@ -12,6 +12,7 @@ import android.view.View;
 import android.view.Window;
 import android.view.WindowManager;
 import android.widget.ImageView;
+import android.widget.LinearLayout;
 import android.widget.TextView;
 import android.widget.Toast;
 
@@ -23,6 +24,8 @@ import com.sheishuo.app.cache.AccountCache;
 import com.sheishuo.app.R;
 import com.sheishuo.app.SheishuoApplication;
 import com.sheishuo.app.common.util.net.NetStatus;
+import com.sheishuo.app.common.views.ImgGridView;
+import com.sheishuo.app.core_module.circle.activity.CircleDetailsActivity;
 import com.sheishuo.app.core_module.circle.activity.NewTweetingActivity;
 import com.sheishuo.app.common.beans.CircleBean;
 import com.sheishuo.app.common.views.BaseToolbar;
@@ -72,10 +75,6 @@ public class CircleOfFriendsFragment extends MainTabFragment{
         findViews();
         initToolbar();
 
-        if (getActivity() instanceof MainActivity){
-            Log.e(TAG,"Yes");
-        }
-
 
         presenter.loadCircleList(AccountCache.getAccount().getId(),"0");
 
@@ -105,7 +104,7 @@ public class CircleOfFriendsFragment extends MainTabFragment{
     //初始化toolbar
     void initToolbar(){
         toolbar.init();
-        toolbar.setTitle("朋友圈");
+        toolbar.setTitle("动态");
         toolbar.setRightText("发表");
 
         //打开发布Activity
@@ -181,7 +180,13 @@ public class CircleOfFriendsFragment extends MainTabFragment{
                     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(getActivity(), CircleDetailsActivity.class);
+                                intent.putExtra(CircleDetailsActivity.DATA,bean);
+                                startActivity(intent);
+                            }
                         }
 
                         @Override
@@ -189,6 +194,7 @@ public class CircleOfFriendsFragment extends MainTabFragment{
                             CircleBean.DBean.ListBean bean = (CircleBean.DBean.ListBean) view.getTag();
                             Log.e(TAG,"点赞的朋友圈ID === " + bean.getId());
                             presenter.onUserLiked(bean.getId());
+
                         }
                     });
 

+ 26 - 4
app/src/com/sheishuo/app/main/fragment/MineFragment.java

@@ -29,6 +29,7 @@ import com.sheishuo.app.common.views.BaseToolbar;
 import com.sheishuo.app.core_module.mine.view.ui.activity.MineTradeActivity;
 import com.sheishuo.app.core_module.mine.view.ui.activity.NearbyPeopleActivity;
 import com.sheishuo.app.core_module.mine.view.ui.activity.PersonalSettingsActivity;
+import com.sheishuo.app.core_module.mine.view.ui.activity.SettingsActivity;
 import com.sheishuo.app.core_module.mine.view.ui.activity.UserInfoDetailActivity;
 import com.sheishuo.app.main.activity.MainActivity;
 
@@ -158,10 +159,7 @@ public class MineFragment extends MainTabFragment implements View.OnClickListene
                 startActivity(new Intent(getActivity(), MineTradeActivity.class));
                 break;
             case R.id.mine_fragment_setting:
-                Intent intent = new Intent(getActivity(), UserInfoDetailActivity.class);
-                intent.putExtra(UserInfoDetailActivity.USER_ID,"200031");
-                startActivity(intent);
-
+                startActivity(new Intent(getActivity(), SettingsActivity.class));
                 break;
         }
     }
@@ -182,6 +180,19 @@ public class MineFragment extends MainTabFragment implements View.OnClickListene
                     Glide.with(getActivity()).load(filePath)
                             .centerCrop()
                             .into(bannerImg);
+
+                    net.updateBanner(filePath, new ResponseCallback() {
+                        @Override
+                        public void onSuccess(Object object) {
+                            showToast("更新背景图成功");
+                        }
+
+                        @Override
+                        public void onFailed() {
+                            showToast("更新背景图失败");
+                        }
+                    });
+
                 }
             } else {
                 //相册
@@ -196,6 +207,17 @@ public class MineFragment extends MainTabFragment implements View.OnClickListene
                             .load(photoInfoList.get(0).getFilePath())
                             .centerCrop()
                             .into(bannerImg);
+                    net.updateBanner(photoInfoList.get(0).getFilePath(), new ResponseCallback() {
+                        @Override
+                        public void onSuccess(Object object) {
+                            showToast("更新背景图成功");
+                        }
+
+                        @Override
+                        public void onFailed() {
+                            showToast("更新背景图失败");
+                        }
+                    });
                 }
             }
 

+ 30 - 7
app/src/com/sheishuo/app/main/fragment/TradeListFragment.java

@@ -1,10 +1,10 @@
 package com.sheishuo.app.main.fragment;
 
-import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
 import android.support.annotation.Nullable;
+import android.support.design.widget.FloatingActionButton;
 import android.support.v7.widget.CardView;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
@@ -13,7 +13,6 @@ import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
 import android.view.View;
-import android.widget.GridLayout;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
@@ -27,12 +26,16 @@ import com.sheishuo.app.core_module.trade.model.TradeModel;
 import com.sheishuo.app.core_module.trade.presenter.TradePresenter;
 import com.sheishuo.app.core_module.trade.view.adapter.TradeItemAdapter;
 import com.sheishuo.app.core_module.trade.view.ui.activity.TradeChangePriorityActivity;
-import com.sheishuo.app.core_module.trade.view.ui.activity.TradeDetailActivity;
+import com.sheishuo.app.core_module.trade.view.ui.activity.TradeDetailsActivity;
+import com.sheishuo.app.core_module.trade.view.ui.activity.TradePublishActivity;
+import com.sheishuo.app.core_module.trade.view.ui.activity.TradeSearchActivity;
 import com.sheishuo.app.main.activity.MainActivity;
 
 import java.util.ArrayList;
 import java.util.List;
 
+import static android.view.View.GONE;
+
 /**
  * Created by KN on 2017/7/31.
  */
@@ -56,6 +59,7 @@ public class TradeListFragment extends MainTabFragment {
     private LinearLayoutManager layoutManager;
     private List<MenuItem> menuItems = new ArrayList<>();
     private Menu menu;
+    private FloatingActionButton fab;
 
     /**
      * FLAGS
@@ -85,6 +89,11 @@ public class TradeListFragment extends MainTabFragment {
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
 
+        if (item.getItemId() == R.id.trade_menu_search){
+            startActivity(new Intent(getActivity(), TradeSearchActivity.class));
+            return false;
+        }
+
         if (item.getItemId() == MENU_ITEM_CHECKED || item.getItemId() == R.id.trade_menu_filter){
             return false;
         }
@@ -142,6 +151,8 @@ public class TradeListFragment extends MainTabFragment {
         handler = getHandler();
         parent = (MainActivity) getActivity();
         toolbar = (BaseToolbar) parent.getToolBar();
+        fab = findView(R.id.trade_list_fab);
+
     }
 
     private void init(){
@@ -150,15 +161,26 @@ public class TradeListFragment extends MainTabFragment {
         layoutManager = new LinearLayoutManager(getActivity());
         loadTradeList(TYPE_TO_LOAD,PAGE_TO_LOAD);
 
+
+        fab.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                startActivity(new Intent(getActivity(), TradePublishActivity.class));
+            }
+        });
+
+
+
+
     }
 
     private void initToolbar(){
         toolbar.init();
-        toolbar.setTitle("");
+        toolbar.setTitle("快讯");
 
         toolbar.getIndexIco().setVisibility(View.VISIBLE);
         toolbar.setLeftText(AccountCache.getAccount().getCity() + AccountCache.getAccount().getDistrict());
-        toolbar.getRightTV().setVisibility(View.GONE);
+        toolbar.getRightTV().setVisibility(GONE);
     }
 
 
@@ -174,8 +196,9 @@ public class TradeListFragment extends MainTabFragment {
                 public void onClick(View view) {
                     if (view instanceof CardView){
                         TradeBean.DBean.ListBean bean = (TradeBean.DBean.ListBean) view.getTag();
-                        TradeDetailActivity.start(getActivity());
-
+                        Intent intent = new Intent(getActivity(), TradeDetailsActivity.class);
+                        intent.putExtra(TradeDetailsActivity.DATA,bean);
+                        startActivity(intent);
                     }else if (view instanceof ImageView){
 
                         String id;

BIN
uikit/res/drawable-hdpi/group_country.png


BIN
uikit/res/drawable-hdpi/group_district.png


BIN
uikit/res/drawable-hdpi/group_province_city.png


BIN
uikit/res/drawable-mdpi/group_country.png


BIN
uikit/res/drawable-mdpi/group_district.png


BIN
uikit/res/drawable-mdpi/group_province_city.png


BIN
uikit/res/drawable-xhdpi/group_country.png


BIN
uikit/res/drawable-xhdpi/group_district.png


BIN
uikit/res/drawable-xhdpi/group_province_city.png


BIN
uikit/res/drawable-xxhdpi/group_country.png


BIN
uikit/res/drawable-xxhdpi/group_district.png


BIN
uikit/res/drawable-xxhdpi/group_province_city.png


BIN
uikit/res/drawable-xxxhdpi/group_country.png


BIN
uikit/res/drawable-xxxhdpi/group_district.png


Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott