Browse Source

1.提高BaseToolbar扩展性
2.集成好友通讯录

Junqin Wang 8 years ago
parent
commit
1f56ba7747

+ 5 - 1
app/AndroidManifest.xml

@@ -115,10 +115,14 @@
             android:windowSoftInputMode="adjustResize|stateHidden"/>
 
         <!--朋友圈相关-->
-        <activity android:name=".circle.activity.NewTweetingActivity"
+        <activity android:name=".core_module.circle.activity.NewTweetingActivity"
             android:theme="@style/AppTheme.NoActionBar"/>
 
 
+        <!--联系人界面-->
+        <activity android:name=".core_module.recent_contacts.activity.ContactsListActivity"
+            android:theme="@style/AppTheme.NoActionBar"/>
+
         <!-- 关于 -->
         <activity
             android:name="com.sheishuo.app.main.activity.AboutActivity"

+ 1 - 1
app/proguard.cfg

@@ -153,7 +153,7 @@
 -keepattributes Signature
 -keepattributes *Annotation*
 
--keep class com.sheishuo.app.circle.model.beans.**{*;}
+-keep class com.sheishuo.app.core_module.circle.model.beans.**{*;}
 -keep class com.sheishuo.app.login.beans.**{*;}
 -keep class com.sheishuo.app.common.beans.**{*;}
 

+ 8 - 1
app/res/layout/base_toolbar.xml

@@ -38,6 +38,13 @@
                 android:gravity="center"
                 android:textColor="@color/white"
                 android:textSize="16sp" />
-
+            <LinearLayout
+                android:id="@+id/toolbar_ico_layout"
+                android:layout_weight="2"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal"
+                android:visibility="gone"
+                android:gravity="center"/>
         </LinearLayout>
 </android.support.v7.widget.Toolbar>

+ 9 - 0
app/res/layout/recent_contacts_list_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">
+    <LinearLayout
+        android:id="@+id/recent_contacts_list_layout"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"/>
+</LinearLayout>

+ 97 - 0
app/src/com/sheishuo/app/common/views/BaseToolbar.java

@@ -7,10 +7,18 @@ import android.support.v7.widget.Toolbar;
 import android.util.AttributeSet;
 import android.view.LayoutInflater;
 import android.view.View;
+import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
+import com.bumptech.glide.Glide;
 import com.sheishuo.app.R;
+import com.sheishuo.app.common.util.img.ImgUtil;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import okhttp3.FormBody;
 
 /**
  * Created by KN on 2017/7/20.
@@ -19,12 +27,19 @@ import com.sheishuo.app.R;
 public class BaseToolbar extends Toolbar {
 
     private final String TITLE = "title",LEFT_TEXT = "left_text",RIGHT_TEXT = "right_text";
+    private static Context context;
     private String titleStr = "",leftStr = "",rightStr = "";
     private TextView titleTV,leftTV,rightTV;
+    private LinearLayout icoLayout;
+
+    public interface IcoBtnClickListener{
+        void onClick(View view);
+    }
 
 
     public BaseToolbar(Context context, @Nullable AttributeSet attrs) {
         super(context, attrs);
+        this.context = context;
         View view = LayoutInflater.from(context).inflate(R.layout.base_toolbar,this,true);
         findViews(view);
         assert attrs != null;
@@ -56,6 +71,7 @@ public class BaseToolbar extends Toolbar {
         titleTV = (TextView) view.findViewById(R.id.toolbar_title);
         leftTV = (TextView) view.findViewById(R.id.toolbar_left);
         rightTV = (TextView) view.findViewById(R.id.toolbar_right);
+        icoLayout = (LinearLayout) view.findViewById(R.id.toolbar_ico_layout);
     }
 
 
@@ -76,6 +92,8 @@ public class BaseToolbar extends Toolbar {
         titleTV.setVisibility(INVISIBLE);
         leftTV.setVisibility(INVISIBLE);
         rightTV.setVisibility(INVISIBLE);
+        icoLayout.removeAllViews();
+        icoLayout.setVisibility(GONE);
         titleTV.setOnClickListener(null);
         leftTV.setOnClickListener(null);
         rightTV.setOnClickListener(null);
@@ -84,6 +102,10 @@ public class BaseToolbar extends Toolbar {
 
 
 
+
+
+
+
     public void setTitle(String title){
         getTitleTV().setText(title);
         titleTV.setVisibility(VISIBLE);
@@ -101,6 +123,81 @@ public class BaseToolbar extends Toolbar {
 
     }
 
+    public LinearLayout getIcoLayout() {
+        return icoLayout;
+    }
+
+    public void setIcoLayout(LinearLayout icoLayout) {
+        this.icoLayout = icoLayout;
+    }
+
+
+
+
+    /**************用于为BaseToolbar增加额外功能***************/
+
+
+    public static class Builder implements OnClickListener{
+
+        BaseToolbar toolbar;
+        private List<Integer> icoIds = new ArrayList<>();
+        IcoBtnClickListener listener;
+        Context context;
+
+        public Builder create(Context context,@Nullable BaseToolbar toolbar){
+            if (toolbar == null){
+                this.toolbar = new BaseToolbar(context,null);
+            }else {
+                this.toolbar = toolbar;
+            }
+
+            this.context = context;
+
+            return this;
+        }
+
+
+
+        /**
+         * 为Toolbar添加一个图标按钮
+         *
+         * 为了保证布局显示正常,若添加ico按钮则自动隐藏Right_Text
+         * @param resId
+         */
+        public BaseToolbar.Builder addIcoButton(int resId){
+                toolbar.rightTV.setVisibility(GONE);
+                toolbar.icoLayout.setVisibility(VISIBLE);
+                ImageView icoView = new ImageView(context);
+                icoView.setAdjustViewBounds(true);
+                int dpToPixel = (int) ImgUtil.convertDpToPixel(24,context);
+                Glide.with(context)
+                        .load(resId)
+                        .override(dpToPixel,dpToPixel)
+                        .into(icoView);
+                toolbar.icoLayout.addView(icoView);
+                icoIds.add(resId);
+                return this;
+        }
+
+
+        public BaseToolbar.Builder addIcoButtonClickListener(int index,IcoBtnClickListener listener){
+                this.listener = listener;
+                toolbar.getIcoLayout().getChildAt(0).setOnClickListener(this);
+                return this;
+        }
+
+        public BaseToolbar build(){
+                return toolbar;
+        }
+
+
+
+        @Override
+        public void onClick(View v) {
+            if (listener != null) listener.onClick(v);
+        }
+    }
+
 
 
 

+ 2 - 2
app/src/com/sheishuo/app/circle/activity/NewTweetingActivity.java → app/src/com/sheishuo/app/core_module/circle/activity/NewTweetingActivity.java

@@ -1,4 +1,4 @@
-package com.sheishuo.app.circle.activity;
+package com.sheishuo.app.core_module.circle.activity;
 
 import android.app.Activity;
 import android.content.Context;
@@ -17,7 +17,7 @@ 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.circle.presenter.NewTweetPresenter;
+import com.sheishuo.app.core_module.circle.presenter.NewTweetPresenter;
 import com.sheishuo.app.common.util.img.ImgUtil;
 import com.sheishuo.app.common.util.location.LocationHelper;
 import com.sheishuo.app.common.util.net.NetStatus;

+ 3 - 13
app/src/com/sheishuo/app/circle/model/NewTweetModel.java → app/src/com/sheishuo/app/core_module/circle/model/NewTweetModel.java

@@ -1,11 +1,9 @@
-package com.sheishuo.app.circle.model;
-
-import android.util.Log;
+package com.sheishuo.app.core_module.circle.model;
 
 import com.google.gson.Gson;
 import com.sheishuo.app.cache.AccountCache;
-import com.sheishuo.app.circle.model.beans.NewTweetingBean;
-import com.sheishuo.app.circle.presenter.NewTweetPresenter;
+import com.sheishuo.app.core_module.circle.model.beans.NewTweetingBean;
+import com.sheishuo.app.core_module.circle.presenter.NewTweetPresenter;
 import com.sheishuo.app.common.util.net.INet;
 import com.sheishuo.app.common.util.net.NetImpl;
 import com.sheishuo.app.common.util.net.NetInfo;
@@ -13,20 +11,12 @@ import com.sheishuo.app.common.util.net.NetStatus;
 import com.sheishuo.app.common.util.net.ResponseCallback;
 import com.sheishuo.app.login.beans.LoginBean;
 
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
 
 import okhttp3.FormBody;
-import okhttp3.MultipartBody;
-import okhttp3.RequestBody;
 
 /**
  * Created by KN on 2017/7/21.

+ 1 - 1
app/src/com/sheishuo/app/circle/model/beans/NewTweetingBean.java → app/src/com/sheishuo/app/core_module/circle/model/beans/NewTweetingBean.java

@@ -1,4 +1,4 @@
-package com.sheishuo.app.circle.model.beans;
+package com.sheishuo.app.core_module.circle.model.beans;
 
 /**
  * Created by KN on 2017/7/21.

+ 3 - 4
app/src/com/sheishuo/app/circle/presenter/NewTweetPresenter.java → app/src/com/sheishuo/app/core_module/circle/presenter/NewTweetPresenter.java

@@ -1,8 +1,7 @@
-package com.sheishuo.app.circle.presenter;
+package com.sheishuo.app.core_module.circle.presenter;
 
-import com.sheishuo.app.circle.activity.NewTweetingActivity;
-import com.sheishuo.app.circle.model.NewTweetModel;
-import com.sheishuo.app.main.model.CircleModel;
+import com.sheishuo.app.core_module.circle.activity.NewTweetingActivity;
+import com.sheishuo.app.core_module.circle.model.NewTweetModel;
 
 import java.util.ArrayList;
 import java.util.List;

+ 45 - 0
app/src/com/sheishuo/app/core_module/recent_contacts/activity/ContactsListActivity.java

@@ -0,0 +1,45 @@
+package com.sheishuo.app.core_module.recent_contacts.activity;
+
+import android.os.Bundle;
+import android.support.v4.app.FragmentManager;
+import android.support.v4.app.FragmentTransaction;
+import android.view.View;
+import android.widget.LinearLayout;
+
+import com.netease.nim.uikit.contact.ContactsFragment;
+import com.sheishuo.app.R;
+import com.sheishuo.app.main.fragment.ContactListFragment;
+import com.sheishuo.app.main.fragment.SessionListFragment;
+import com.sheishuo.app.uikit_implements.SheishuoUI;
+
+/**
+ * Created by KN on 2017/7/28.
+ */
+
+public class ContactsListActivity extends SheishuoUI {
+
+    private LinearLayout layout;
+    private FragmentManager manager = getSupportFragmentManager();
+    private FragmentTransaction transaction;
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.recent_contacts_list_activity);
+        findViews();
+        init();
+    }
+
+    void findViews(){
+        layout = findView(R.id.recent_contacts_list_layout);
+    }
+
+    void init(){
+        if (manager != null){
+            ContactsFragment fragment  = new ContactsFragment();
+            transaction = manager.beginTransaction();
+            transaction.add(R.id.recent_contacts_list_layout,fragment);
+            transaction.commit();
+        }
+
+    }
+}

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

@@ -71,7 +71,7 @@ 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()));
 

+ 2 - 1
app/src/com/sheishuo/app/main/fragment/CircleOfFriendsFragment.java

@@ -18,7 +18,7 @@ import com.netease.nimlib.sdk.uinfo.model.NimUserInfo;
 import com.sheishuo.app.cache.AccountCache;
 import com.sheishuo.app.R;
 import com.sheishuo.app.SheishuoApplication;
-import com.sheishuo.app.circle.activity.NewTweetingActivity;
+import com.sheishuo.app.core_module.circle.activity.NewTweetingActivity;
 import com.sheishuo.app.common.beans.CircleBean;
 import com.sheishuo.app.common.views.BaseToolbar;
 import com.sheishuo.app.main.activity.MainActivity;
@@ -210,6 +210,7 @@ public class CircleOfFriendsFragment extends MainTabFragment{
         if (adapter != null){
             //防止Inconsistency detected
             recyclerView.getRecycledViewPool().clear();
+            recyclerView.scrollToPosition(0);
 
             adapter.clearAll();
             loadCircleListMore("");

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

@@ -81,8 +81,6 @@ public class HomeFragment extends TFragment implements OnPageChangeListener, Rem
     @Override
     public void onActivityCreated(Bundle savedInstanceState) {
         super.onActivityCreated(savedInstanceState);
-        //setToolBar(R.id.toolbar, R.string.app_name, R.drawable.actionbar_dark_logo);
-        //setTitle(R.string.app_name);
 
 
         findViews();
@@ -104,7 +102,7 @@ public class HomeFragment extends TFragment implements OnPageChangeListener, Rem
                 pager.setCurrentItem(1);
                 pager.setCurrentItem(0);
             }
-        },1000);
+        },300);
 
 
     }
@@ -378,6 +376,7 @@ public class HomeFragment extends TFragment implements OnPageChangeListener, Rem
     }
 
 
+    @SuppressWarnings("RestrictedApi")
     @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
         //super.onActivityResult(requestCode, resultCode, data);

+ 19 - 0
app/src/com/sheishuo/app/main/fragment/SessionListFragment.java

@@ -1,14 +1,18 @@
 package com.sheishuo.app.main.fragment;
 
+import android.content.Intent;
 import android.os.Bundle;
+import android.support.v7.widget.Toolbar;
 import android.util.Log;
 import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
 import android.view.View;
+import android.widget.ImageView;
 import android.widget.TextView;
 import android.widget.Toast;
 
+import com.bumptech.glide.Glide;
 import com.netease.nim.uikit.common.activity.UI;
 import com.netease.nim.uikit.common.util.log.LogUtil;
 import com.netease.nim.uikit.recent.RecentContactsCallback;
@@ -26,6 +30,7 @@ import com.netease.nimlib.sdk.msg.model.RecentContact;
 import com.sheishuo.app.R;
 import com.sheishuo.app.common.views.BaseToolbar;
 import com.sheishuo.app.config.preference.Preferences;
+import com.sheishuo.app.core_module.recent_contacts.activity.ContactsListActivity;
 import com.sheishuo.app.login.LoginActivity;
 import com.sheishuo.app.login.LogoutHelperBak;
 import com.sheishuo.app.main.activity.MainActivity;
@@ -117,8 +122,22 @@ public class SessionListFragment extends MainTabFragment {
 
     //初始化toolbar
     public void initToolbar(){
+        Log.e(TAG,"init toolbar");
         toolbar.init();
         toolbar.setTitle("朋友");
+        if (toolbar != null){
+            toolbar = new BaseToolbar.Builder()
+                    .create(getActivity(),toolbar)
+                    .addIcoButton(R.drawable.friends_contacts)
+                    .addIcoButtonClickListener(0, new BaseToolbar.IcoBtnClickListener() {
+                        @Override
+                        public void onClick(View view) {
+                            startActivity(new Intent(getActivity(), ContactsListActivity.class));
+                        }
+                    })
+                    .build();
+        }
+
     }
 
     @Override