Fenix Wang 8 роки тому
батько
коміт
40125e0673
27 змінених файлів з 511 додано та 102 видалено
  1. 11 2
      app/AndroidManifest.xml
  2. 14 7
      app/app.iml
  3. BIN
      app/res/drawable-hdpi/tuto_1_min.jpg
  4. BIN
      app/res/drawable-hdpi/tuto_2_min.jpg
  5. BIN
      app/res/drawable-hdpi/tuto_3_min.jpg
  6. 1 1
      app/res/layout/activity_forget.xml
  7. 112 50
      app/res/layout/login_and_reg_layout.xml
  8. 1 1
      app/res/layout/team_setttins.xml
  9. 2 0
      app/res/values/strings.xml
  10. 7 0
      app/src/com/sheishuo/app/cache/SocialInfoCache.java
  11. 10 1
      app/src/com/sheishuo/app/common/util/img/ImgUtil.java
  12. 32 28
      app/src/com/sheishuo/app/common/util/location/CityDataHelper.java
  13. 3 0
      app/src/com/sheishuo/app/common/util/net/INet.java
  14. 48 1
      app/src/com/sheishuo/app/common/util/net/NetImpl.java
  15. 2 0
      app/src/com/sheishuo/app/common/util/net/NetInfo.java
  16. 5 0
      app/src/com/sheishuo/app/core_module/circle/activity/CirclePersonActivity.java
  17. 2 0
      app/src/com/sheishuo/app/core_module/mine/view/ui/activity/MineTradeActivity.java
  18. 12 1
      app/src/com/sheishuo/app/core_module/mine/view/ui/activity/PersonalSettingsActivity.java
  19. 34 0
      app/src/com/sheishuo/app/core_module/sheishuo/view/ui/TeamMemberActivity.java
  20. 51 4
      app/src/com/sheishuo/app/core_module/sheishuo/view/ui/TeamSettingsActivity.java
  21. 3 0
      app/src/com/sheishuo/app/login/LoginActivity.java
  22. 130 1
      app/src/com/sheishuo/app/login/LoginAndRegActivity.java
  23. 19 3
      app/src/com/sheishuo/app/main/adapter/CircleListAdapter.java
  24. 7 0
      app/src/com/sheishuo/app/main/fragment/CircleOfFriendsFragment.java
  25. 3 1
      uikit/res/layout/nim_message_item_text.xml
  26. 1 1
      uikit/res/values/colors.xml
  27. 1 0
      uikit/src/com/netease/nim/uikit/cache/NimUserInfoCache.java

+ 11 - 2
app/AndroidManifest.xml

@@ -601,11 +601,20 @@
         <activity
             android:name=".main.activity.ForgetActivity"
             android:label="@string/title_activity_forget"
-            android:theme="@style/AppTheme.NoActionBar"></activity>
+            android:theme="@style/AppTheme.NoActionBar" />
         <activity
             android:name=".core_module.friends.activity.FollowSelectActivity"
             android:label="@string/title_activity_forget"
-            android:theme="@style/AppTheme.NoActionBar"></activity>
+            android:theme="@style/AppTheme.NoActionBar" />
+        <activity
+            android:name=".core_module.sheishuo.view.ui.TeamMemberActivity"
+            android:label="@string/title_activity_team_member"
+            android:parentActivityName="com.netease.nim.uikit.team.activity.AdvancedTeamMemberActivity"
+            android:theme="@style/AppTheme.NoActionBar">
+            <meta-data
+                android:name="android.support.PARENT_ACTIVITY"
+                android:value="com.netease.nim.uikit.team.activity.AdvancedTeamMemberActivity" />
+        </activity>
     </application>
 
 </manifest>

+ 14 - 7
app/app.iml

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

BIN
app/res/drawable-hdpi/tuto_1_min.jpg


BIN
app/res/drawable-hdpi/tuto_2_min.jpg


BIN
app/res/drawable-hdpi/tuto_3_min.jpg


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

@@ -123,7 +123,7 @@
                 android:layout_marginLeft="90dp"
                 android:background="@null"
                 android:ems="10"
-                android:hint="输入8至12位新密码"
+                android:hint="输入8位以上新密码"
                 android:inputType="textPassword" />
 
         </RelativeLayout>

+ 112 - 50
app/res/layout/login_and_reg_layout.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<RelativeLayout 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"
@@ -7,57 +7,119 @@
     android:fitsSystemWindows="true"
     tools:context="com.sheishuo.app.login.LoginAndRegActivity">
 
-    <ImageView
-        android:id="@+id/activity_login_an_reg_logo"
-        android:layout_width="100dp"
-        android:layout_height="100dp"
-        app:srcCompat="@drawable/logo"
-        app:layout_constraintTop_toTopOf="parent"
-        android:layout_marginTop="64dp"
-        android:layout_marginLeft="8dp"
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical">
+
+        <ImageView
+            android:id="@+id/activity_login_an_reg_logo"
+            android:layout_width="match_parent"
+            android:layout_height="100dp"
+            android:layout_marginEnd="8dp"
+            android:layout_marginLeft="8dp"
+            android:layout_marginRight="8dp"
+            android:layout_marginStart="8dp"
+            android:layout_marginTop="64dp"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toTopOf="parent"
+            app:srcCompat="@drawable/logo" />
+
+        <TextView
+            android:id="@+id/tv_app_name"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginEnd="8dp"
+            android:layout_marginLeft="8dp"
+            android:layout_marginRight="8dp"
+            android:layout_marginStart="8dp"
+            android:layout_marginTop="8dp"
+            android:text="SHEI SHUO"
+            android:textAlignment="center"
+            android:typeface="sans"
+            app:layout_constraintLeft_toLeftOf="@+id/activity_login_an_reg_logo"
+            app:layout_constraintRight_toRightOf="@+id/activity_login_an_reg_logo"
+            app:layout_constraintTop_toBottomOf="@+id/activity_login_an_reg_logo" />
+
+        <Button
+            android:id="@+id/btn_login"
+            style="@style/NormalBtnStyle"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="20dp"
+            android:layout_marginRight="20dp"
+            android:layout_marginTop="56dp"
+            android:text="登录"
+            app:layout_constraintLeft_toLeftOf="@+id/tv_app_name"
+            app:layout_constraintRight_toRightOf="@+id/tv_app_name"
+            app:layout_constraintTop_toBottomOf="@+id/tv_app_name" />
+
+        <Button
+            android:id="@+id/btn_register"
+            style="@style/NormalBtnStyle"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="20dp"
+            android:layout_marginRight="20dp"
+            android:layout_marginTop="25dp"
+            android:text="注册"
+            app:layout_constraintLeft_toLeftOf="@+id/btn_login"
+            app:layout_constraintRight_toRightOf="@+id/btn_login"
+            app:layout_constraintTop_toBottomOf="@+id/btn_login" />
+    </LinearLayout>
+
+    <RelativeLayout
+        android:id="@+id/intro_layout"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@color/GreyWhite"
+        app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintLeft_toLeftOf="parent"
-        android:layout_marginRight="8dp"
-        app:layout_constraintRight_toRightOf="parent" />
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="parent">
 
-    <TextView
-        android:id="@+id/tv_app_name"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="SHEI SHUO"
-        android:typeface="sans"
-        android:layout_marginLeft="8dp"
-        app:layout_constraintLeft_toLeftOf="@+id/activity_login_an_reg_logo"
-        android:layout_marginTop="8dp"
-        app:layout_constraintTop_toBottomOf="@+id/activity_login_an_reg_logo"
-        android:layout_marginRight="8dp"
-        app:layout_constraintRight_toRightOf="@+id/activity_login_an_reg_logo" />
-
-    <Button
-        android:id="@+id/btn_login"
-        android:layout_width="300dp"
-        android:layout_height="wrap_content"
-        android:text="登录"
-        style="@style/NormalBtnStyle"
-        android:layout_marginLeft="0dp"
-        app:layout_constraintLeft_toLeftOf="@+id/tv_app_name"
-        android:layout_marginRight="0dp"
-        app:layout_constraintRight_toRightOf="@+id/tv_app_name"
-        android:layout_marginTop="56dp"
-        app:layout_constraintTop_toBottomOf="@+id/tv_app_name" />
-
-    <Button
-        android:id="@+id/btn_register"
-        android:layout_width="300dp"
-        android:layout_height="wrap_content"
-        android:text="注册"
-        style="@style/NormalBtnStyle"
-        android:layout_marginLeft="8dp"
-        app:layout_constraintLeft_toLeftOf="@+id/btn_login"
-        android:layout_marginRight="8dp"
-        app:layout_constraintRight_toRightOf="@+id/btn_login"
-        android:layout_marginTop="25dp"
-        app:layout_constraintTop_toBottomOf="@+id/btn_login" />
+        <android.support.v4.view.ViewPager
+            android:id="@+id/view_pager"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent">
+
+        </android.support.v4.view.ViewPager>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="right"
+            android:orientation="horizontal"
+            android:paddingRight="5dp"
+            android:paddingTop="5dp">
+
+            <Button
+                android:id="@+id/skip_btn"
+                android:layout_width="60dp"
+                android:layout_height="40dp"
+                android:layout_weight="0"
+                android:text="跳过"
+                android:textColor="@color/white" />
+
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:gravity="bottom"
+            android:orientation="horizontal">
+
+            <Button
+                android:id="@+id/start_btn"
+                android:layout_width="match_parent"
+                android:layout_height="60dp"
+                android:layout_marginBottom="15dp"
+                android:background="@null"
+                android:elevation="11dp" />
+        </LinearLayout>
 
+    </RelativeLayout>
 
 
-</android.support.constraint.ConstraintLayout>
+</RelativeLayout>

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

@@ -72,7 +72,7 @@
                 <TextView
                     android:id="@+id/team_settings_introduction_TV"
                     android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
+                    android:layout_height="60dp"
                     android:text="群注意事项群注意事项群注意事项群注意事项群注意事项群注意事项群注意事项群注意事项群注意事项群注意事项"
                     android:textColor="@color/grey_light"
                     android:textSize="16sp" />

Різницю між файлами не показано, бо вона завелика
+ 2 - 0
app/res/values/strings.xml


+ 7 - 0
app/src/com/sheishuo/app/cache/SocialInfoCache.java

@@ -18,6 +18,13 @@ public class SocialInfoCache {
     private static Map<String,SocialInfoBean> socialInfoMap = new HashMap<>();
     private static Map<String, String> followCache;
 
+    public static void reset()
+    {
+        socialInfoMap.clear();
+        followCache.clear();
+        NimUserInfoCache.getInstance().clear();
+    }
+
     public static void put(String id, SocialInfoBean info){
         NimUserInfoCache.getInstance().setAlias(id, info.getAlias());
         socialInfoMap.put(id,info);

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

@@ -12,6 +12,7 @@ import android.media.ExifInterface;
 import android.net.Uri;
 import android.os.Environment;
 import android.util.DisplayMetrics;
+import android.util.Log;
 import android.view.WindowManager;
 import android.widget.ImageView;
 
@@ -29,7 +30,15 @@ import java.io.IOException;
 public class ImgUtil {
     public static ImageView getImageFromNet( Context context,String imgUrl){
         ImageView imageView = new ImageView(context);
-        Glide.with(context).load(imgUrl).into(imageView);
+        try
+        {
+            Glide.with(context).load(imgUrl).into(imageView);
+        }
+        catch (Exception e)
+        {
+            Log.e("ImgUtil", "getImageFromNet : "+e.getMessage());
+        }
+
         return imageView;
     }
 

+ 32 - 28
app/src/com/sheishuo/app/common/util/location/CityDataHelper.java

@@ -5,6 +5,7 @@ import android.util.Log;
 
 import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
+import com.sheishuo.app.R;
 import com.sheishuo.app.common.beans.CityDataBean;
 import com.sheishuo.app.common.util.net.INet;
 import com.sheishuo.app.common.util.net.NetImpl;
@@ -35,36 +36,39 @@ public class CityDataHelper {
         cityAreaMap = new HashMap<>();
 
 
-        net.getCityDataList(new ResponseCallback() {
-            @Override
-            public void onSuccess(Object object) {
-                String jsonStr = (String) object;
-                list.clear();
-                List<CityDataBean> temp = new Gson().fromJson(jsonStr,new TypeToken<List<CityDataBean>>(){}.getType());
-                list.addAll(temp);
-
-                Log.e("size",list.size()+"");
-
-                for (CityDataBean provinceBean : list){
-                    List<String> tempList = new ArrayList<>();
-                    for (CityDataBean.CityBean cityBean : provinceBean.getCity()){
-                        tempList.add(cityBean.getName());
-                        cityAreaMap.put(cityBean.getName(),cityBean.getArea());
-                    }
-                    provinces.add(provinceBean.getName());
-                    provinceCityMap.put(provinceBean.getName(),tempList);
-                }
-
-                for (String str : getAllProvince()){
-                    Log.e("selectHelper",str);
-                }
-            }
+//        net.getCityDataList(new ResponseCallback() {
+//            @Override
+//            public void onSuccess(Object object) {
+//
+//            }
+//
+//            @Override
+//            public void onFailed() {
+//                Log.e("CityDataHelper","init failed");
+//            }
+//        });
+
+
+        String jsonStr = context.getString(R.string.city_data);
+        list.clear();
+        List<CityDataBean> temp = new Gson().fromJson(jsonStr,new TypeToken<List<CityDataBean>>(){}.getType());
+        list.addAll(temp);
+
+        Log.e("size",list.size()+"");
 
-            @Override
-            public void onFailed() {
-                Log.e("CityDataHelper","init failed");
+        for (CityDataBean provinceBean : list){
+            List<String> tempList = new ArrayList<>();
+            for (CityDataBean.CityBean cityBean : provinceBean.getCity()){
+                tempList.add(cityBean.getName());
+                cityAreaMap.put(cityBean.getName(),cityBean.getArea());
             }
-        });
+            provinces.add(provinceBean.getName());
+            provinceCityMap.put(provinceBean.getName(),tempList);
+        }
+
+        for (String str : getAllProvince()){
+            Log.e("selectHelper",str);
+        }
     }
 
 

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

@@ -64,4 +64,7 @@ public interface INet {
     void requestList(ResponseCallback callback);
     void requestDelete(String requestId, ResponseCallback callback);
     void addFriend(String requestId,  ResponseCallback callback);
+
+    //chat room intro
+    void getChatRoomIntro(ResponseCallback callback);
 }

+ 48 - 1
app/src/com/sheishuo/app/common/util/net/NetImpl.java

@@ -7,6 +7,7 @@ import android.util.Log;
 import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
 import com.netease.nim.uikit.cache.NimUserInfoCache;
+import com.netease.nim.uikit.common.ui.dialog.EasyAlertDialogHelper;
 import com.sheishuo.app.SheishuoApplication;
 import com.sheishuo.app.cache.AccountCache;
 import com.sheishuo.app.cache.HobbyCache;
@@ -21,6 +22,8 @@ import com.sheishuo.app.common.beans.SocialInfoBean;
 import com.sheishuo.app.common.beans.SocialPhoto;
 import com.sheishuo.app.common.beans.TradeBean;
 import com.sheishuo.app.common.util.img.ImgUtil;
+import com.sheishuo.app.impl.SheishuoUIKit;
+import com.sheishuo.app.login.LoginActivity;
 import com.sheishuo.app.login.beans.LoginBean;
 
 import org.json.JSONArray;
@@ -867,6 +870,7 @@ public class NetImpl implements INet {
                     Response response = client.newCall(request).execute();
                     if (200 == response.code()){
                         String json = response.body().string();
+                        Log.d("TradeList", json);
                         TradeBean bean = new Gson().fromJson(json,TradeBean.class);
                         if (0 != bean.getD().getList().size()){
                             callback.onSuccess(bean);
@@ -1309,10 +1313,15 @@ public class NetImpl implements INet {
 
                     if (200 == response.code()){
                         String resultStr = response.body().string();
-                        int resultCode = new JSONObject(resultStr).getInt("c");
+                        Log.e("update info", resultStr);
+                        JSONObject jsonObject = new JSONObject(resultStr);
+                        int resultCode = jsonObject.getInt("c");
                         if (0 == resultCode){
                             callback.onSuccess(null);
                         }else {
+                            final String error = jsonObject.getString("d");
+                            if(error != null && error.length() > 0)
+                                callback.onSuccess(error);
                             callback.onFailed();
                         }
                     }else {
@@ -1549,4 +1558,42 @@ public class NetImpl implements INet {
             }
         }).start();
     }
+
+    @Override
+    public void getChatRoomIntro(final ResponseCallback callback) {
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                try {
+                    FormBody body = new FormBody.Builder()
+                            .build();
+
+                    Request request = new Request.Builder()
+                            .post(body)
+                            .url(CHAT_ROOM_INTRO_URL)
+                            .build();
+
+                    Response response = client.newCall(request).execute();
+                    if (200 == response.code()) {
+                        String result = response.body().string();
+                        JSONObject jsonObject = new JSONObject(result);
+                        int c = jsonObject.getInt("c");
+                        String d = jsonObject.getString("d");
+                        if(c == 0) {
+                            callback.onSuccess(d);
+                        }
+                        else
+                        {
+                            callback.onFailed();
+                        }
+                    } else {
+                        callback.onFailed();
+                    }
+                }catch (Exception e){
+                    e.printStackTrace();
+                    callback.onFailed();
+                }
+            }
+        }).start();
+    }
 }

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

@@ -62,4 +62,6 @@ public class NetInfo {
     public final static String ABOUT_URL = INDEX + "?m=who&c=index&a=webview&id=about";
     public final static String AGREEMENT_URL = INDEX + "?m=who&c=index&a=webview&id=agreement";
     public final static String LAW_URL = INDEX + "?m=who&c=index&a=webview&id=law";
+    public final static String CHAT_ROOM_INTRO_URL = INDEX + "?m=who&c=index&a=chatroom_intro";
+
 }

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

@@ -135,6 +135,11 @@ public class CirclePersonActivity extends SheishuoUI {
         });
     }
 
+    public Handler getTheHandler()
+    {
+        return getHandler();
+    }
+
     public void onCircleListLoaded(final CircleBean bean){
 
         handler.post(new Runnable() {

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

@@ -149,6 +149,8 @@ public class MineTradeActivity extends SheishuoUI {
                             recyclerView.setAdapter(adapter);
                             setupAdapter();
                         }else {
+                            if(PAGE_TO_LOAD == 1)
+                                adapter.clearAll();
                             adapter.addAll(bean);
                         }
 

+ 12 - 1
app/src/com/sheishuo/app/core_module/mine/view/ui/activity/PersonalSettingsActivity.java

@@ -20,6 +20,7 @@ import com.bumptech.glide.Glide;
 import com.netease.nim.uikit.common.media.picker.PickImageHelper;
 import com.netease.nim.uikit.common.media.picker.model.PhotoInfo;
 import com.netease.nim.uikit.common.ui.dialog.DialogMaker;
+import com.netease.nim.uikit.common.ui.dialog.EasyAlertDialogHelper;
 import com.netease.nim.uikit.common.ui.imageview.HeadImageView;
 import com.netease.nim.uikit.common.util.log.LogUtil;
 import com.netease.nim.uikit.session.actions.PickImageAction;
@@ -45,6 +46,7 @@ import com.sheishuo.app.contact.helper.UserUpdateHelper;
 import com.sheishuo.app.core_module.location.LocationSelectActivity;
 import com.sheishuo.app.core_module.sheishuo.view.ui.SettingTextEditActivity;
 import com.sheishuo.app.impl.SheishuoUI;
+import com.sheishuo.app.impl.SheishuoUIKit;
 import com.sheishuo.app.main.fragment.MineFragment;
 
 import java.io.File;
@@ -157,7 +159,16 @@ public class PersonalSettingsActivity extends SheishuoUI {
         callback = new ResponseCallback() {
             @Override
             public void onSuccess(Object object) {
-
+                if(object != null && object instanceof String) {
+                    final String error = (String)object;
+                    getHandler().post(new Runnable() {
+                        @Override
+                        public void run() {
+                            EasyAlertDialogHelper.showOneButtonDiolag(PersonalSettingsActivity.this, "提示",
+                                    error, "确认", false, null);
+                        }
+                    });
+                }
             }
 
             @Override

+ 34 - 0
app/src/com/sheishuo/app/core_module/sheishuo/view/ui/TeamMemberActivity.java

@@ -0,0 +1,34 @@
+package com.sheishuo.app.core_module.sheishuo.view.ui;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.design.widget.FloatingActionButton;
+import android.support.design.widget.Snackbar;
+import android.support.v7.app.AppCompatActivity;
+import android.support.v7.widget.Toolbar;
+import android.view.View;
+
+import com.netease.nim.uikit.team.activity.AdvancedTeamMemberActivity;
+import com.netease.nim.uikit.team.activity.AdvancedTeamMemberInfoActivity;
+import com.sheishuo.app.R;
+import com.sheishuo.app.core_module.mine.view.ui.activity.UserInfoDetailActivity;
+
+public class TeamMemberActivity extends AdvancedTeamMemberActivity {
+
+    private static final String EXTRA_ID = "EXTRA_ID";
+
+    public static void startActivityForResult(Activity context, String tid, int resCode) {
+        Intent intent = new Intent();
+        intent.putExtra(EXTRA_ID, tid);
+        intent.setClass(context, TeamMemberActivity.class);
+        context.startActivityForResult(intent, resCode);
+    }
+
+    @Override
+    public void onHeadImageViewClick(String account) {
+        Intent intent = new Intent(getBaseContext(), UserInfoDetailActivity.class);
+        intent.putExtra(UserInfoDetailActivity.USER_ID, account);
+        startActivity(intent);
+    }
+}

+ 51 - 4
app/src/com/sheishuo/app/core_module/sheishuo/view/ui/TeamSettingsActivity.java

@@ -18,6 +18,7 @@ import android.widget.Toast;
 
 import com.bumptech.glide.Glide;
 import com.netease.nim.uikit.NimUIKit;
+import com.netease.nim.uikit.common.ui.dialog.EasyAlertDialogHelper;
 import com.netease.nim.uikit.common.ui.imageview.HeadImageView;
 import com.netease.nim.uikit.contact_selector.activity.ContactSelectActivity;
 import com.netease.nim.uikit.recent.RecentContactsFragment;
@@ -40,10 +41,14 @@ import com.netease.nimlib.sdk.uinfo.model.NimUserInfo;
 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.INet;
+import com.sheishuo.app.common.util.net.NetImpl;
+import com.sheishuo.app.common.util.net.ResponseCallback;
 import com.sheishuo.app.common.views.BaseToolbar;
 import com.sheishuo.app.core_module.friends.activity.FollowSelectActivity;
 import com.sheishuo.app.core_module.mine.view.ui.activity.UserInfoDetailActivity;
 import com.sheishuo.app.impl.SheishuoUI;
+import com.sheishuo.app.login.LoginActivity;
 import com.sheishuo.app.session.activity.MessageHistoryActivity;
 
 import java.util.ArrayList;
@@ -63,6 +68,8 @@ public class TeamSettingsActivity extends SheishuoUI implements View.OnClickList
 
     private static final int REQUEST_CODE_CONTACT_SELECT = 103;
 
+    private static String systemTeamIntro;
+
     private String TAG = this.getClass().getSimpleName();
     private Context context = this;
 
@@ -86,6 +93,7 @@ public class TeamSettingsActivity extends SheishuoUI implements View.OnClickList
 
         findViews();
         init();
+        requestSystemTeamIntro();
     }
 
 
@@ -233,7 +241,7 @@ public class TeamSettingsActivity extends SheishuoUI implements View.OnClickList
         teamMemberCountLayout.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                AdvancedTeamMemberActivity.startActivityForResult((Activity) context,team.getId(),0);
+                TeamMemberActivity.startActivityForResult((Activity) context,team.getId(),0);
             }
         });
 
@@ -268,9 +276,7 @@ public class TeamSettingsActivity extends SheishuoUI implements View.OnClickList
                 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);
+                onTeamIntroClick(texteditIntent);
                 break;
 
         }
@@ -298,6 +304,47 @@ public class TeamSettingsActivity extends SheishuoUI implements View.OnClickList
         });
     }
 
+    private void requestSystemTeamIntro()
+    {
+        if(!isSystemTeam(team))
+            return;
+
+        if(systemTeamIntro != null)
+        {
+            teamIntroductionTV.setText(systemTeamIntro);
+        }
+        else
+        {
+            INet net = new NetImpl();
+            net.getChatRoomIntro(new ResponseCallback() {
+                @Override
+                public void onSuccess(Object object) {
+                    systemTeamIntro = (String) object;
+                    teamIntroductionTV.setText(systemTeamIntro);
+                }
+
+                @Override
+                public void onFailed() {
+
+                }
+            });
+        }
+    }
+
+    private void onTeamIntroClick(Intent texteditIntent)
+    {
+        if(team.getCreator().equals(AccountCache.getAccount().getId()))
+        {
+            texteditIntent.putExtra(SettingTextEditActivity.SETTING_CONTENT_TITLE, "群聊注意事项");
+            texteditIntent.putExtra(SettingTextEditActivity.SETTING_CONTENT, teamIntroductionTV.getText().toString());
+            startActivityForResult(texteditIntent, INTRODUCTION_REQUEST_CODE);
+        }
+        else
+        {
+            EasyAlertDialogHelper.showOneButtonDiolag(TeamSettingsActivity.this, "群聊注意事项",
+                    teamIntroductionTV.getText().toString(), "确认", false, null);
+        }
+    }
 
     private void updateTeamIntroduction(final String introduction) {
 

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

@@ -20,6 +20,7 @@ import com.netease.nim.uikit.common.ui.dialog.DialogMaker;
 import com.netease.nim.uikit.common.ui.dialog.EasyAlertDialogHelper;
 import com.sheishuo.app.cache.AccountCache;
 import com.sheishuo.app.R;
+import com.sheishuo.app.cache.SocialInfoCache;
 import com.sheishuo.app.common.util.data.SPHelper;
 import com.sheishuo.app.common.util.net.INet;
 import com.sheishuo.app.common.util.net.NetImpl;
@@ -164,6 +165,8 @@ public class LoginActivity extends SheishuoUI implements View.OnClickListener{
                 AccountCache.setCache(bean.getD());
                 AccountCache.sync();
 
+                SocialInfoCache.reset();
+
 
 
                 //登录NIM服务

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

@@ -3,18 +3,30 @@ package com.sheishuo.app.login;
 import android.Manifest;
 import android.content.Context;
 import android.content.Intent;
+import android.content.SharedPreferences;
+import android.graphics.Color;
 import android.os.Bundle;
 import android.support.annotation.NonNull;
+import android.support.v4.view.PagerAdapter;
+import android.support.v4.view.ViewCompat;
+import android.support.v4.view.ViewPager;
 import android.util.Log;
+import android.view.LayoutInflater;
 import android.view.View;
+import android.view.ViewGroup;
 import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
 import android.widget.Toast;
 
 import com.netease.nim.uikit.common.ui.dialog.DialogMaker;
+import com.netease.nim.uikit.common.ui.imageview.BaseZoomableImageView;
 import com.netease.nim.uikit.permission.MPermission;
 import com.netease.nim.uikit.permission.annotation.OnMPermissionDenied;
 import com.netease.nim.uikit.permission.annotation.OnMPermissionGranted;
 import com.netease.nim.uikit.permission.annotation.OnMPermissionNeverAskAgain;
+import com.netease.nim.uikit.session.activity.WatchPictureActivity;
 import com.sheishuo.app.R;
 import com.sheishuo.app.cache.AccountCache;
 import com.sheishuo.app.common.util.data.SPHelper;
@@ -27,9 +39,17 @@ import com.sheishuo.app.impl.SheishuoUI;
 public class LoginAndRegActivity extends SheishuoUI implements View.OnClickListener{
 
     private final int BASIC_PERMISSION_REQUEST_CODE = 123;
+
+    public final static String SHARED_PREFERENCES_KEY = "SP";
+    public final static String SHOW_INTRO_KEY = "ShowIntro";
+
     String TAG = this.getClass().getSimpleName();
     Context context = this;
-    Button loginBtn,regBtn;
+    Button loginBtn,regBtn,skipBtn,startBtn;
+    RelativeLayout introLayout;
+    private ViewPager imageViewPager;
+    private PagerAdapter adapter;
+    private int introPages = 3;
 
     /**
      * 基本权限管理
@@ -77,8 +97,16 @@ public class LoginAndRegActivity extends SheishuoUI implements View.OnClickListe
     private void init(){
         loginBtn = findView(R.id.btn_login);
         regBtn = findView(R.id.btn_register);
+        skipBtn = findView(R.id.skip_btn);
+        startBtn = findView(R.id.start_btn);
+
         loginBtn.setOnClickListener(this);
         regBtn.setOnClickListener(this);
+        skipBtn.setOnClickListener(this);
+        startBtn.setOnClickListener(this);
+
+        introLayout = findView(R.id.intro_layout);
+        imageViewPager = findView(R.id.view_pager);
 
         final String mobile = (String) SPHelper.getParam(context,"mobile","");
         final String pwd = (String) SPHelper.getParam(context,"pwd","");
@@ -119,7 +147,93 @@ public class LoginAndRegActivity extends SheishuoUI implements View.OnClickListe
                 }
             });
         }
+
+
+        initIntroView();
     }
+
+    private void initIntroView()
+    {
+        SharedPreferences sp = context.getSharedPreferences(SHARED_PREFERENCES_KEY, MODE_PRIVATE);
+        //存入数据
+        if(sp.getBoolean(SHOW_INTRO_KEY, false))
+        {
+            introLayout.setVisibility(View.GONE);
+            return;
+        }
+
+        adapter = new PagerAdapter() {
+            @Override
+            public int getCount() {
+                return introPages;
+            }
+
+            @Override
+            public boolean isViewFromObject(View view, Object object) {
+                return (view == object);
+            }
+
+            @Override
+            public Object instantiateItem(ViewGroup container, int position) {
+
+                ImageView imageView = new ImageView(context);
+                imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
+                imageView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
+                if(position == 0)
+                    imageView.setImageResource(R.drawable.tuto_1_min);
+                else if(position == 1)
+                    imageView.setImageResource(R.drawable.tuto_2_min);
+                else if(position == 2)
+                    imageView.setImageResource(R.drawable.tuto_3_min);
+
+                container.addView(imageView);
+
+                if (position == 0) {
+                    onViewPagerSelected(position);
+                }
+
+                return imageView;
+            }
+
+            @Override
+            public int getItemPosition(Object object) {
+                return POSITION_NONE;
+            }
+        };
+
+        imageViewPager.setAdapter(adapter);
+        imageViewPager.setOffscreenPageLimit(9);
+        imageViewPager.setCurrentItem(0);
+        imageViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
+            @Override
+            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
+            }
+
+            @Override
+            public void onPageSelected(int position) {
+                onViewPagerSelected(position);
+            }
+
+            @Override
+            public void onPageScrollStateChanged(int state) {
+            }
+        });
+    }
+
+    private void onViewPagerSelected(int position) {
+        if(position == introPages-1)
+        {
+            startBtn.setVisibility(View.VISIBLE);
+            skipBtn.setVisibility(View.GONE);
+        }
+        else
+        {
+            startBtn.setVisibility(View.GONE);
+            skipBtn.setVisibility(View.VISIBLE);
+        }
+    }
+
+
     protected <T extends View> T findView(int resId) {
         return (T) (findViewById(resId));
     }
@@ -135,11 +249,26 @@ public class LoginAndRegActivity extends SheishuoUI implements View.OnClickListe
                 Log.e(TAG,"registerBtn");
                 RegisterActivity.start(context);
                 break;
+            case R.id.skip_btn:
+            case R.id.start_btn:
+                closeIntro();
+                break;
             default:
                 break;
         }
     }
 
+    private void closeIntro()
+    {
+
+        SharedPreferences sp = context.getSharedPreferences(SHARED_PREFERENCES_KEY, MODE_PRIVATE);
+        //存入数据
+        SharedPreferences.Editor editor = sp.edit();
+        editor.putBoolean(SHOW_INTRO_KEY, true);
+        editor.commit();
+
+        introLayout.setVisibility(View.GONE);
+    }
 
     @Override
     public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

+ 19 - 3
app/src/com/sheishuo/app/main/adapter/CircleListAdapter.java

@@ -4,6 +4,7 @@ import android.app.Activity;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
+import android.os.Handler;
 import android.support.v7.app.AlertDialog;
 import android.support.v7.widget.CardView;
 import android.support.v7.widget.RecyclerView;
@@ -265,13 +266,19 @@ public class CircleListAdapter  extends RecyclerView.Adapter<CircleListAdapter.C
                         net.deleteSocial(id, new ResponseCallback() {
                             @Override
                             public void onSuccess(Object object) {
-                                circleFragment.showToast("删除成功");
+                                if(circleFragment != null)
+                                    circleFragment.showToast("删除成功");
+                                if(circleActivity != null)
+                                    circleActivity.showToast("删除成功");
                                 onDelete(id);
                             }
 
                             @Override
                             public void onFailed() {
-                                circleFragment.showToast("删除失败");
+                                if(circleFragment != null)
+                                    circleFragment.showToast("删除失败");
+                                if(circleActivity != null)
+                                    circleActivity.showToast("删除失败");
                             }});
                     }
                 });
@@ -288,7 +295,16 @@ public class CircleListAdapter  extends RecyclerView.Adapter<CircleListAdapter.C
 
     public void onDelete(final String id)
     {
-        circleFragment.getHandler().post(new Runnable() {
+        Handler handler = null;
+        if(circleFragment != null)
+            handler = circleFragment.getHandler();
+        else if(circleActivity != null)
+            handler = circleActivity.getTheHandler();
+
+        if(handler == null)
+            return;
+
+        handler.post(new Runnable() {
             @Override
             public void run() {
                 for(int i=0; i<data.size(); i++)

+ 7 - 0
app/src/com/sheishuo/app/main/fragment/CircleOfFriendsFragment.java

@@ -257,8 +257,15 @@ public class CircleOfFriendsFragment extends MainTabFragment{
                         @Override
                         public void onLikedClick(View view) {
                             CircleBean.DBean.ListBean bean = (CircleBean.DBean.ListBean) view.getTag();
+                            bean.getLike_users().add(AccountCache.getAccount().getId());
                             Log.e(TAG,"点赞的朋友圈ID === " + bean.getId());
                             presenter.onUserLiked(bean.getId());
+                            getHandler().post(new Runnable() {
+                                @Override
+                                public void run() {
+                                    adapter.notifyDataSetChanged();
+                                }
+                            });
                         }
 
                         @Override

+ 3 - 1
uikit/res/layout/nim_message_item_text.xml

@@ -4,6 +4,7 @@
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:layout_gravity="center_vertical">
+
     <TextView
         android:id="@+id/nim_message_item_text_body"
         android:layout_width="wrap_content"
@@ -14,5 +15,6 @@
         android:lineSpacingExtra="3dip"
         android:maxWidth="@dimen/max_text_bubble_width"
         android:textColor="@color/color_black_b3000000"
-        android:textSize="16sp"/>
+        android:textColorLink="@color/robot_link_element_text_blue"
+        android:textSize="16sp" />
 </LinearLayout>

+ 1 - 1
uikit/res/values/colors.xml

@@ -72,5 +72,5 @@
     <color name="color_black_ff999999">#ff999999</color>
     <color name="color_gray_bfc2c5">#bfc2c5</color>
 
-    <color name="robot_link_element_text_blue">#248DFA</color>
+    <color name="robot_link_element_text_blue">#248dfa</color>
 </resources>

+ 1 - 0
uikit/src/com/netease/nim/uikit/cache/NimUserInfoCache.java

@@ -49,6 +49,7 @@ public class NimUserInfoCache {
 
     public void clear() {
         clearUserCache();
+        aliasMap.clear();
     }
 
     /**

Деякі файли не було показано, через те що забагато файлів було змінено