فهرست منبع

完成UU互联第一阶段重构任务。

Arison 6 سال پیش
والد
کامیت
8664b6ff65
19فایلهای تغییر یافته به همراه292 افزوده شده و 21 حذف شده
  1. 174 0
      lib_common/src/main/java/com/uas/module/common/base/fragment/BaseToolBarFragment.java
  2. 1 1
      lib_common/src/main/java/com/uas/module/common/utils/helper/LoginHelper.java
  3. 12 0
      lib_common/src/main/java/com/uas/module/common/utils/listener/OnItemClickListener.java
  4. 1 1
      lib_common/src/main/java/com/uas/module/common/widget/LinearItemDecoration.java
  5. BIN
      lib_common/src/main/res/drawable-hdpi/common_toolbar_message_bg.png
  6. 1 1
      lib_widget/src/main/java/com/uas/module/widget/activity/UASWebActivity.java
  7. BIN
      lib_widget/src/main/res/drawable-xxhdpi/icon_massage_nor.png
  8. BIN
      lib_widget/src/main/res/drawable-xxhdpi/icon_massage_selected.png
  9. 2 1
      module_girls/build.gradle
  10. 5 1
      module_girls/src/main/AndroidManifest.xml
  11. 61 7
      module_girls/src/main/java/com/uas/module/girls/MessageFragment.java
  12. 19 0
      module_girls/src/main/java/com/uas/module/girls/ui/MessageNoticeActivity.java
  13. 9 0
      module_girls/src/main/res/layout/activity_message_notice.xml
  14. 1 2
      module_girls/src/main/res/layout/fragment_message.xml
  15. 2 4
      module_girls/src/main/res/layout/item_message.xml
  16. 1 0
      module_girls/src/main/res/values/strings.xml
  17. 1 1
      module_home/src/main/java/com/uas/module/home/ui/SettingActivity.java
  18. 1 1
      module_main/build.gradle
  19. 1 1
      module_main/src/main/java/com/uas/module/main/BottomNavigationActivity.java

+ 174 - 0
lib_common/src/main/java/com/uas/module/common/base/fragment/BaseToolBarFragment.java

@@ -0,0 +1,174 @@
+package com.uas.module.common.base.fragment;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v4.app.FragmentTransaction;
+import android.support.v7.app.AppCompatActivity;
+import android.support.v7.widget.Toolbar;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewStub;
+import android.widget.FrameLayout;
+import android.widget.TextView;
+
+import com.uas.module.common.R;
+import com.uas.module.common.base.BaseFragment;
+import com.uas.module.common.utils.StatusBarUtil;
+
+
+public abstract class BaseToolBarFragment extends BaseFragment {
+    private static final String STATE_SAVE_IS_HIDDEN = "STATE_SAVE_IS_HIDDEN";
+    private View rootView;
+    private FrameLayout contentFl;
+    protected AppCompatActivity ct;
+    private boolean mInited;
+    private Toolbar commonToolBar;
+    private TextView commonTitleTv;
+    private boolean createView;
+
+    /*防止内存重启*/
+    @Override
+    public void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        if (savedInstanceState != null) {
+            boolean isSupportHidden = savedInstanceState.getBoolean(STATE_SAVE_IS_HIDDEN);
+            FragmentTransaction ft = getFragmentManager().beginTransaction();
+            if (isSupportHidden) {
+                ft.hide(this);
+            } else {
+                ft.show(this);
+            }
+            ft.commit();
+        }
+    }
+
+    @Override
+    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+        setHasOptionsMenu(true);
+        super.onCreateOptionsMenu(menu, inflater);
+    }
+
+    @Override
+    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+        if (!isHidden()) {
+            mInited = true;
+            onCreateView(savedInstanceState, createView);
+        }
+    }
+
+    @Override
+    public void onHiddenChanged(boolean hidden) {
+        super.onHiddenChanged(hidden);
+        if (!mInited && !hidden) {
+            mInited = true;
+            onCreateView(null, createView);
+        }
+    }
+
+    /*防止内存重启出现重叠*/
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        if (outState != null)
+            outState.putBoolean(STATE_SAVE_IS_HIDDEN, isHidden());
+    }
+
+    @Nullable
+    @Override
+    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+        createView = true;
+        if (rootView != null) {//有缓存,不创建
+            ViewGroup parent = (ViewGroup) rootView.getParent();
+            if (parent != null) {
+                parent.removeView(rootView);
+            }
+            createView = false;
+        } else {
+            rootView = inflater.inflate(R.layout.base_bar_layout, container, false);
+            contentFl = rootView.findViewById(R.id.contentFl);
+            int layoutId = inflateLayoutId();
+            if (layoutId > 0) {
+                View contentView = inflater.inflate(layoutId, container, false);
+                contentFl.addView(contentView);
+            }
+            if (needCommonToolBar()) {
+                initCommonToolbar();
+            }
+        }
+
+        return rootView;
+    }
+
+    public FrameLayout getContentView() {
+        return contentFl;
+    }
+
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        ct = (AppCompatActivity) context;
+    }
+
+    protected <T extends View> T findViewById(int id) {
+        if (contentFl == null) {
+            return null;
+        } else {
+            return contentFl.findViewById(id);
+        }
+    }
+
+    //是否需要通用的toolbar
+    public boolean needCommonToolBar() {
+        return true;
+    }
+
+    public void initCommonToolbar() {
+        ViewStub stub = rootView.findViewById(R.id.toolbarVs);
+        if (stub != null) {
+            stub.inflate();
+            commonToolBar = rootView.findViewById(R.id.commonToolBar);
+            commonTitleTv = rootView.findViewById(R.id.commonTitleTv);
+            if (commonToolBar != null) {
+                StatusBarUtil.immersive(ct, 0x00000000, 0.0f);
+                ct.setSupportActionBar(commonToolBar);
+                ct.getSupportActionBar().setDisplayShowTitleEnabled(false);
+                StatusBarUtil.setPaddingSmart(ct, commonToolBar);
+            }
+            commonTitleTv.setText(ct != null && ct.getTitle() != null ? ct.getTitle() : "");
+        }
+    }
+
+
+    public void setTitle(int resId) {
+        if (commonTitleTv != null) {
+            commonTitleTv.setText(resId);
+        }
+        if (ct != null && ct.getSupportActionBar() != null) {
+            ct.setTitle(resId);
+        }
+    }
+
+    public void setTitle(CharSequence resId) {
+        if (commonTitleTv != null) {
+            commonTitleTv.setText(resId);
+        }
+        if (ct != null && ct.getSupportActionBar() != null) {
+            ct.setTitle(resId);
+        }
+    }
+
+    public Toolbar getCommonToolBar() {
+        return commonToolBar;
+    }
+
+    protected abstract int inflateLayoutId();
+
+    protected abstract void onCreateView(Bundle savedInstanceState, boolean createView);
+
+}

+ 1 - 1
lib_common/src/main/java/com/uas/module/common/utils/Helper/LoginHelper.java → lib_common/src/main/java/com/uas/module/common/utils/helper/LoginHelper.java

@@ -1,4 +1,4 @@
-package com.uas.module.common.utils.Helper;
+package com.uas.module.common.utils.helper;
 
 
 import android.content.Context;

+ 12 - 0
lib_common/src/main/java/com/uas/module/common/utils/listener/OnItemClickListener.java

@@ -0,0 +1,12 @@
+package com.uas.module.common.utils.listener;
+
+import android.view.View;
+
+/**
+ * Created by Arison on 2019/5/17.
+ */
+
+public interface OnItemClickListener {
+    void onItemClick(View view);
+    void onItemLongClick(View view);
+}

+ 1 - 1
lib_common/src/main/java/com/uas/module/common/widget/LinearItemDecoration.java

@@ -15,7 +15,7 @@ public class LinearItemDecoration extends RecyclerView.ItemDecoration {
     private Paint dividerPaint;
 
     public LinearItemDecoration(Context context) {
-        dividerHeight = 2;
+        dividerHeight = 1;
         dividerPaint = new Paint();
         dividerPaint.setColor(context.getResources().getColor(R.color.item_line));
     }

BIN
lib_common/src/main/res/drawable-hdpi/common_toolbar_message_bg.png


+ 1 - 1
lib_widget/src/main/java/com/uas/module/widget/activity/UASWebActivity.java

@@ -35,7 +35,7 @@ import com.uas.module.widget.R;
  * headers:请求头
  * @author:Arison on 2019/5/5
  */
-@Route(path = "/app/uas_web")
+@Route(path = "/widget/web")
 public class UASWebActivity extends BaseActionBarActivity {
 
     @Autowired(name = "url")

BIN
lib_widget/src/main/res/drawable-xxhdpi/icon_massage_nor.png


BIN
lib_widget/src/main/res/drawable-xxhdpi/icon_massage_selected.png


+ 2 - 1
module_girls/build.gradle

@@ -14,7 +14,7 @@ android {
 
         javaCompileOptions {
             annotationProcessorOptions {
-                arguments = [ moduleName : project.getName() ]
+                arguments = [moduleName: project.getName()]
             }
         }
     }
@@ -50,4 +50,5 @@ dependencies {
     implementation fileTree(dir: 'libs', include: ['*.jar'])
     annotationProcessor deps.arouter_compiler
     implementation project(':lib_common')
+    compile 'com.android.support.constraint:constraint-layout:1.0.2'
 }

+ 5 - 1
module_girls/src/main/AndroidManifest.xml

@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.uas.module.girls">
 
@@ -9,6 +10,9 @@
             android:name=".girl.GirlActivity"
             android:screenOrientation="portrait"
             android:theme="@style/AppTheme.NoActionBar" />
+        <activity android:name=".ui.MessageNoticeActivity"
+            android:theme="@style/AppTheme.NoActionBar" >
+        </activity>
     </application>
 
-</manifest>
+</manifest>

+ 61 - 7
module_girls/src/main/java/com/uas/module/girls/MessageFragment.java

@@ -4,6 +4,7 @@ package com.uas.module.girls;
 import android.os.Bundle;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
+import android.support.v7.widget.Toolbar;
 import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -11,14 +12,17 @@ import android.view.ViewGroup;
 import android.widget.TextView;
 import android.widget.Toast;
 
+import com.alibaba.android.arouter.launcher.ARouter;
 import com.alibaba.fastjson.JSON;
 import com.blankj.utilcode.util.SPUtils;
 import com.scwang.smartrefresh.layout.api.RefreshLayout;
 import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
 import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
-import com.uas.module.common.base.fragment.EasyFragment;
+import com.uas.module.common.base.fragment.BaseToolBarFragment;
 import com.uas.module.common.model.MessageConfigBean;
 import com.uas.module.common.utils.Constants;
+import com.uas.module.common.utils.ToastUtils;
+import com.uas.module.common.utils.listener.OnItemClickListener;
 import com.uas.module.common.widget.LinearItemDecoration;
 
 import java.util.List;
@@ -28,7 +32,7 @@ import q.rorbin.badgeview.Badge;
 import q.rorbin.badgeview.QBadgeView;
 
 
-public class MessageFragment extends EasyFragment {
+public class MessageFragment extends BaseToolBarFragment implements OnItemClickListener {
 
     RecyclerView mListMessage;
     
@@ -51,13 +55,20 @@ public class MessageFragment extends EasyFragment {
 
     
     public void initView(){
+        Toolbar toolbar = getCommonToolBar();
+        if (toolbar != null) {
+            toolbar.setBackgroundResource(R.drawable.common_toolbar_message_bg);
+        }
+        setTitle(R.string.title_message);
         mListMessage=  findViewById(R.id.rv_message_list);
         mListMessage.setLayoutManager(new LinearLayoutManager(ct));
         mListMessage.addItemDecoration(new LinearItemDecoration(ct));
         String messageList= SPUtils.getInstance(Constants.spName).getString("messageList");
         List<MessageConfigBean> datas= JSON.parseArray(messageList,MessageConfigBean.class);
-      
-        mListMessage.setAdapter(new RecyclerAdapter(datas));
+        RecyclerAdapter adapter=  new RecyclerAdapter(datas);
+        adapter.setOnItemClickListener(this);
+        mListMessage.setAdapter(adapter);
+        
 
 
         RefreshLayout refreshLayout = findViewById(R.id.refreshLayout);
@@ -75,6 +86,27 @@ public class MessageFragment extends EasyFragment {
         });
     }
 
+    @Override
+    public void onItemClick(View view) {
+        RecyclerAdapter.Holder holder= (RecyclerAdapter.Holder) view.getTag();
+        if (holder.bean.getViewTypeValue()==1){
+            String url=holder.bean.getWebUrl();
+            ARouter.getInstance().build("/widget/web")
+                    .withString("url",url)
+                    .withString("title",holder.bean.getName())
+                    .navigation();
+        }else{
+            ToastUtils.showLongToast("原生组件:"+holder.bean.getAndroidWidget());
+            ARouter.getInstance().build(holder.bean.getAndroidWidget())
+                    .navigation();
+        }
+    }
+
+    @Override
+    public void onItemLongClick(View view) {
+
+    }
+
 
     class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.Holder> {
         private List<MessageConfigBean> data;
@@ -85,8 +117,24 @@ public class MessageFragment extends EasyFragment {
 
         @Override
         public Holder onCreateViewHolder(ViewGroup parent, int viewType) {
-            return new Holder(LayoutInflater.from(getActivity())
+            Holder  viewHolder=  new Holder(LayoutInflater.from(getActivity())
                     .inflate(R.layout.item_message, parent, false));
+            viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    if (mOnItemClickListener!=null)
+                    mOnItemClickListener.onItemClick(v);
+                }
+            });
+            viewHolder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
+                @Override
+                public boolean onLongClick(View v) {
+                    if (mOnItemClickListener!=null)
+                    mOnItemClickListener.onItemLongClick(v);
+                    return true;
+                }
+            });
+            return viewHolder;
         }
 
         @Override
@@ -94,6 +142,7 @@ public class MessageFragment extends EasyFragment {
             MessageConfigBean bean=data.get(position);
             holder.titleTv.setText(bean.getName());
             holder.bean=bean;
+            holder.itemView.setTag(holder);
         }
 
         @Override
@@ -115,8 +164,8 @@ public class MessageFragment extends EasyFragment {
                 headerSubTv= itemView.findViewById(R.id.headerSubTv);
                 badge = new QBadgeView(getActivity()).bindTarget(itemView.findViewById(R.id.headerImg));
                 badge.setBadgeGravity(Gravity.TOP | Gravity.END);
-                badge.setBadgeTextSize(9, true);
-                badge.setBadgePadding(2, true);
+                badge.setBadgeTextSize(11, true);
+                badge.setBadgePadding(4, true);
                 badge.setOnDragStateChangedListener(new Badge.OnDragStateChangedListener() {
                     @Override
                     public void onDragStateChanged(int dragState, Badge badge, View targetView) {
@@ -127,6 +176,11 @@ public class MessageFragment extends EasyFragment {
                 }).setBadgeNumber(1);
             }
         }
+
+        private OnItemClickListener mOnItemClickListener;
+        public void setOnItemClickListener(OnItemClickListener listener) {
+            mOnItemClickListener = listener;
+        }
     }
 
 

+ 19 - 0
module_girls/src/main/java/com/uas/module/girls/ui/MessageNoticeActivity.java

@@ -0,0 +1,19 @@
+package com.uas.module.girls.ui;
+
+import android.os.Bundle;
+
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.uas.module.common.base.activity.BaseToolBarActivity;
+import com.uas.module.girls.R;
+
+@Route(path = "/main/notice")
+public class MessageNoticeActivity extends BaseToolBarActivity {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_message_notice);
+        
+        setTitle("通知公告");
+    }
+}

+ 9 - 0
module_girls/src/main/res/layout/activity_message_notice.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout 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"
+    tools:context="com.uas.module.girls.ui.MessageNoticeActivity">
+
+</android.support.constraint.ConstraintLayout>

+ 1 - 2
module_girls/src/main/res/layout/fragment_message.xml

@@ -12,8 +12,7 @@
             android:id="@+id/rv_message_list"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
-            android:overScrollMode="never"
-            android:background="#fff" />
+            android:overScrollMode="never" />
         <com.scwang.smartrefresh.layout.footer.ClassicsFooter
             android:layout_width="match_parent"
             android:layout_height="wrap_content"/>

+ 2 - 4
module_girls/src/main/res/layout/item_message.xml

@@ -16,8 +16,8 @@
 
         <de.hdodenhof.circleimageview.CircleImageView
             android:id="@+id/headerImg"
-            android:layout_width="42dp"
-            android:layout_height="42dp"
+            android:layout_width="45dp"
+            android:layout_height="45dp"
             android:layout_gravity="center_vertical"
             android:background="@color/transparent"
             android:contentDescription="@string/app_name"
@@ -52,7 +52,6 @@
             android:layout_marginTop="2dp"
             android:ellipsize="end"
             android:lines="1"
-            android:text="会所"
             android:textColor="#333333"
             android:textSize="15sp" />
 
@@ -64,7 +63,6 @@
             android:layout_below="@id/titleTv"
             android:ellipsize="end"
             android:lines="1"
-            android:text="预约有优惠"
             android:textColor="#999999"
             android:textSize="12sp" />
     </RelativeLayout>

+ 1 - 0
module_girls/src/main/res/values/strings.xml

@@ -2,5 +2,6 @@
     <string name="girls_name">Girls组件</string>
 
     <string name="girls_activity_title">Girls</string>
+    <string name="title_message">消息</string>
 
 </resources>

+ 1 - 1
module_home/src/main/java/com/uas/module/home/ui/SettingActivity.java

@@ -6,7 +6,7 @@ import android.widget.TextView;
 
 import com.alibaba.android.arouter.facade.annotation.Route;
 import com.uas.module.common.base.activity.BaseToolBarActivity;
-import com.uas.module.common.utils.Helper.LoginHelper;
+import com.uas.module.common.utils.helper.LoginHelper;
 import com.uas.module.home.R;
 
 @Route(path = "/home/setting")

+ 1 - 1
module_main/build.gradle

@@ -50,5 +50,5 @@ dependencies {
     implementation fileTree(dir: 'libs', include: ['*.jar'])
     annotationProcessor deps.arouter_compiler
     implementation project(':lib_common')
-    implementation  project(path: ':lib_widget')
+    implementation project(':lib_widget')
 }

+ 1 - 1
module_main/src/main/java/com/uas/module/main/BottomNavigationActivity.java

@@ -20,7 +20,7 @@ import com.uas.module.common.base.BaseFragment;
 import com.uas.module.common.base.ClassUtils;
 import com.uas.module.common.base.IViewDelegate;
 import com.uas.module.common.base.ViewManager;
-import com.uas.module.common.utils.Helper.LoginHelper;
+import com.uas.module.common.utils.helper.LoginHelper;
 import com.uas.module.common.utils.ToastUtils;
 import com.uas.module.common.widget.NoScrollViewPager;