Browse Source

添加集成web组件

Arison 6 years ago
parent
commit
807cf0d056

+ 1 - 0
lib_common/build.gradle

@@ -75,6 +75,7 @@ dependencies {
     api deps.circleimageview
     api deps.MNProgressHUD
     api deps.badgeview
+    api deps.smartRefresh
 
     //router
     api deps.arouter_api

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

@@ -0,0 +1,44 @@
+package com.uas.module.common.widget;
+
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.graphics.Rect;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+
+import com.uas.module.common.R;
+
+
+public class LinearItemDecoration extends RecyclerView.ItemDecoration {
+    private int dividerHeight;
+    private Paint dividerPaint;
+
+    public LinearItemDecoration(Context context) {
+        dividerHeight = 2;
+        dividerPaint = new Paint();
+        dividerPaint.setColor(context.getResources().getColor(R.color.item_line));
+    }
+    
+    @Override
+    public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
+        super.onDraw(c, parent, state);
+        int childCount = parent.getChildCount();
+        int left = parent.getPaddingLeft();
+        int right = parent.getWidth() - parent.getPaddingRight();
+        for (int i = 0; i < childCount - 1; i++) {
+            View view = parent.getChildAt(i);
+            float top = view.getBottom();
+            float bottom = view.getBottom() + dividerHeight;
+            c.drawRect(left, top, right, bottom, dividerPaint);
+        }
+
+
+    }
+    
+    @Override
+    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
+        super.getItemOffsets(outRect, view, parent, state);
+        outRect.bottom = dividerHeight;
+    }
+}

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


BIN
lib_common/src/main/res/drawable-xhdpi/avatar_round.png


+ 8 - 0
lib_common/src/main/res/drawable/selector_item_white_pass.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@color/me_menu_item_press" android:state_checked="true"/>
+    <item android:drawable="@color/me_menu_item_press" android:state_pressed="true"/>
+    <item android:drawable="@color/me_menu_item_press" android:state_selected="true"/>
+
+    <item android:drawable="@color/white"/>
+</selector>

+ 2 - 0
lib_common/src/main/res/values/colors.xml

@@ -6,6 +6,8 @@
     <color name="colorAccent">#FF5252</color>
 
     <!--APP公用的一些颜色-->
+    <color name="item_line">#CCCCCC</color>
+    <color name="me_menu_item_press">#DFDEDE</color>
     <color name="common_bg">#fff7f7f7</color>
     <color name="common_text">@android:color/primary_text_light</color>
     <color name="common_hint_text">@color/gray_AD</color>

+ 0 - 42
module_girls/src/main/java/com/uas/module/girls/GirlsFragment.java

@@ -1,42 +0,0 @@
-package com.uas.module.girls;
-
-
-import android.os.Bundle;
-import android.support.v4.app.Fragment;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import com.uas.module.common.base.BaseFragment;
-
-
-/**
- * A simple {@link Fragment} subclass.
- */
-public class GirlsFragment extends BaseFragment {
-
-    /**
-     * Use this factory method to create a new instance of
-     * this fragment using the provided parameters.
-     *
-     * @return A new instance of fragment GirlsFragment.
-     */
-    public static GirlsFragment newInstance() {
-        return new GirlsFragment();
-    }
-
-
-    public GirlsFragment() {
-        // Required empty public constructor
-    }
-
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        // Inflate the layout for this fragment
-        return inflater.inflate(R.layout.fragment_girls, container, false);
-    }
-
-
-}

+ 133 - 0
module_girls/src/main/java/com/uas/module/girls/MessageFragment.java

@@ -0,0 +1,133 @@
+package com.uas.module.girls;
+
+
+import android.os.Bundle;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+import android.widget.Toast;
+
+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.model.MessageConfigBean;
+import com.uas.module.common.utils.Constants;
+import com.uas.module.common.widget.LinearItemDecoration;
+
+import java.util.List;
+
+import de.hdodenhof.circleimageview.CircleImageView;
+import q.rorbin.badgeview.Badge;
+import q.rorbin.badgeview.QBadgeView;
+
+
+public class MessageFragment extends EasyFragment {
+
+    RecyclerView mListMessage;
+    
+    public static MessageFragment newInstance() {
+        return new MessageFragment();
+    }
+
+    
+    @Override
+    protected int inflateLayoutId() {
+        return R.layout.fragment_message;
+    }
+
+    @Override
+    protected void onCreateView(Bundle savedInstanceState, boolean createView) {
+          if (createView){
+              initView();
+          }
+    }
+
+    
+    public void initView(){
+        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));
+
+
+        RefreshLayout refreshLayout = findViewById(R.id.refreshLayout);
+        refreshLayout.setOnRefreshListener(new OnRefreshListener() {
+            @Override
+            public void onRefresh(RefreshLayout refreshlayout) {
+                refreshlayout.finishRefresh(2000/*,false*/);//传入false表示刷新失败
+            }
+        });
+        refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
+            @Override
+            public void onLoadMore(RefreshLayout refreshlayout) {
+                refreshlayout.finishLoadMore(2000/*,false*/);//传入false表示加载失败
+            }
+        });
+    }
+
+
+    class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.Holder> {
+        private List<MessageConfigBean> data;
+
+        public RecyclerAdapter(List<MessageConfigBean> datas) {
+            data = datas;
+        }
+
+        @Override
+        public Holder onCreateViewHolder(ViewGroup parent, int viewType) {
+            return new Holder(LayoutInflater.from(getActivity())
+                    .inflate(R.layout.item_message, parent, false));
+        }
+
+        @Override
+        public void onBindViewHolder(Holder holder, int position) {
+            MessageConfigBean bean=data.get(position);
+            holder.titleTv.setText(bean.getName());
+            holder.bean=bean;
+        }
+
+        @Override
+        public int getItemCount() {
+            return data.size();
+        }
+
+        class Holder extends RecyclerView.ViewHolder {
+            Badge badge;
+            CircleImageView headerImg;
+            TextView  titleTv;
+            TextView  headerSubTv;
+            MessageConfigBean bean;
+            
+            public Holder(View itemView) {
+                super(itemView);
+                headerImg=itemView.findViewById(R.id.headerImg);
+                titleTv= itemView.findViewById(R.id.titleTv);
+                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.setOnDragStateChangedListener(new Badge.OnDragStateChangedListener() {
+                    @Override
+                    public void onDragStateChanged(int dragState, Badge badge, View targetView) {
+                        if (dragState == STATE_SUCCEED) {
+                            Toast.makeText(getActivity(), String.valueOf(getAdapterPosition()), Toast.LENGTH_SHORT).show();
+                        }
+                    }
+                }).setBadgeNumber(1);
+            }
+        }
+    }
+
+
+}

+ 1 - 1
module_girls/src/main/java/com/uas/module/girls/MyViewDelegate.java

@@ -12,7 +12,7 @@ public class MyViewDelegate implements IViewDelegate {
 
     @Override
     public BaseFragment getFragment(String name) {
-        return GirlsFragment.newInstance();
+        return MessageFragment.newInstance();
     }
 
     @Override

+ 0 - 12
module_girls/src/main/res/layout/fragment_girls.xml

@@ -1,12 +0,0 @@
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <!-- TODO: Update blank fragment layout -->
-    <TextView
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:gravity="center"
-        android:text=" 我是来自Girls组件的Fragment " />
-
-</FrameLayout>

+ 21 - 0
module_girls/src/main/res/layout/fragment_message.xml

@@ -0,0 +1,21 @@
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+    <com.scwang.smartrefresh.layout.SmartRefreshLayout
+        android:id="@+id/refreshLayout"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+        <com.scwang.smartrefresh.layout.header.ClassicsHeader
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"/>
+        <android.support.v7.widget.RecyclerView
+            android:id="@+id/rv_message_list"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:overScrollMode="never"
+            android:background="#fff" />
+        <com.scwang.smartrefresh.layout.footer.ClassicsFooter
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"/>
+    </com.scwang.smartrefresh.layout.SmartRefreshLayout>
+</FrameLayout>

+ 72 - 0
module_girls/src/main/res/layout/item_message.xml

@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="60.0dip"
+    android:background="@drawable/selector_item_white_pass"
+    android:descendantFocusability="blocksDescendants"
+    android:minHeight="60.0dip"
+    android:paddingLeft="10dp"
+    android:paddingRight="15dp">
+
+    <FrameLayout
+        android:id="@+id/headerFl"
+        android:layout_width="53dp"
+        android:layout_height="match_parent"
+        android:layout_centerVertical="true">
+
+        <de.hdodenhof.circleimageview.CircleImageView
+            android:id="@+id/headerImg"
+            android:layout_width="42dp"
+            android:layout_height="42dp"
+            android:layout_gravity="center_vertical"
+            android:background="@color/transparent"
+            android:contentDescription="@string/app_name"
+            android:padding="1dp"
+            android:src="@drawable/avatar_round" />
+
+
+    </FrameLayout>
+
+    <RelativeLayout
+        android:id="@+id/headerContactRl"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_centerVertical="true"
+        android:layout_toRightOf="@id/headerFl"
+        android:gravity="center_vertical">
+
+
+        <TextView
+            android:id="@+id/timeTv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentRight="true"
+            android:textColor="#999999"
+            android:textSize="10sp"
+            android:visibility="visible" />
+
+        <TextView
+            android:id="@+id/titleTv"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="2dp"
+            android:ellipsize="end"
+            android:lines="1"
+            android:text="会所"
+            android:textColor="#333333"
+            android:textSize="15sp" />
+
+
+        <TextView
+            android:id="@+id/headerSubTv"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_below="@id/titleTv"
+            android:ellipsize="end"
+            android:lines="1"
+            android:text="预约有优惠"
+            android:textColor="#999999"
+            android:textSize="12sp" />
+    </RelativeLayout>
+
+</RelativeLayout>

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

@@ -15,7 +15,6 @@ import android.view.View;
 
 import com.alibaba.android.arouter.facade.annotation.Route;
 import com.alibaba.android.arouter.launcher.ARouter;
-import com.blankj.utilcode.util.LogUtils;
 import com.uas.module.common.base.BaseActivity;
 import com.uas.module.common.base.BaseFragment;
 import com.uas.module.common.base.ClassUtils;
@@ -131,13 +130,13 @@ public class BottomNavigationActivity extends BaseActivity {
     private void initViewPager() {
         //自动寻找的方式,目前还无法掌握Fragment加载顺序
        // mFragments = ViewManager.getInstance().getAllFragment();//这几个Fragment是主动添加到ViewManager中的
-        BaseFragment newsFragment = getNewsFragment();//主动寻找
-        BaseFragment girlsFragment = getGirlsFragment();//主动寻找
-        BaseFragment mineFragment = getMineFragment();//主动寻找
-        LogUtils.d("newsFragment:"+newsFragment+" g:"+girlsFragment+" m:"+mineFragment);
+//        BaseFragment newsFragment = getNewsFragment();//主动寻找
+//        BaseFragment girlsFragment = getGirlsFragment();//主动寻找
+//        BaseFragment mineFragment = getMineFragment();//主动寻找
+//        LogUtils.d("newsFragment:"+newsFragment+" g:"+girlsFragment+" m:"+mineFragment);
         mFragments=new ArrayList<>();
        // mFragments.add(newsFragment);
-        mFragments.add(getGirlsFragment());
+        mFragments.add(getMessageFragment());
         mFragments.add(getNewsFragment());
         mFragments.add(getMineFragment());
         mPager = findViewById(R.id.container_pager);
@@ -173,7 +172,7 @@ public class BottomNavigationActivity extends BaseActivity {
     }
 
     //消息Fragment组件
-    private BaseFragment getGirlsFragment() {
+    private BaseFragment getMessageFragment() {
         BaseFragment newsFragment = null;
         List<IViewDelegate> viewDelegates = ClassUtils.getObjectsWithInterface(this, IViewDelegate.class, "com.uas.module.girls");
         if (viewDelegates != null && !viewDelegates.isEmpty()) {

+ 3 - 1
versions.gradle

@@ -41,7 +41,7 @@ versions.themvp="1.0.6"
 versions.grpc_api="1.0.0-SNAPSHOT"
 versions.fastjson="1.2.57"
 versions.agentweb="4.0.3-alpha@aar"
-
+versions.smartRefresh="1.1.0-alpha-25"
 
 
 def deps = [:]
@@ -122,6 +122,8 @@ deps.arouter_compiler = "com.alibaba:arouter-compiler:$versions.arouter_compiler
 
 deps.themvp="com.kymjs.core:themvp:$versions.themvp"
 deps.grpc="com.usoftchina.uu:android-grpc-api:$versions.grpc_api"
+deps.smartRefresh="com.scwang.smartrefresh:SmartRefreshLayout:$versions.smartRefresh"
+