詹子聪 5 лет назад
Родитель
Сommit
4c54c68f7e

+ 12 - 0
app/src/main/java/com/itant/shibei/base/ITopActionListener.java

@@ -0,0 +1,12 @@
+package com.itant.shibei.base;
+
+/**
+ * Copyright (C), 2019-2020, Genlot
+ *
+ * @author 詹子聪
+ * @date 2020/8/2 9:19
+ * Description: 监听滚动到顶部的动作
+ */
+public interface ITopActionListener {
+    void onTopAction();
+}

+ 26 - 1
app/src/main/java/com/itant/shibei/ui/TabActivity.java

@@ -8,14 +8,18 @@ import androidx.fragment.app.Fragment;
 import androidx.viewpager.widget.ViewPager;
 
 import com.flyco.tablayout.SlidingTabLayout;
+import com.flyco.tablayout.listener.OnTabSelectListener;
 import com.google.android.material.appbar.AppBarLayout;
 import com.itant.shibei.R;
 import com.itant.shibei.base.BaseShiBeiActivity;
+import com.itant.shibei.base.ITopActionListener;
+import com.itant.shibei.manager.UserInfoManager;
 import com.itant.shibei.ui.about.AboutFragment;
 import com.itant.shibei.ui.function.FunctionFragment;
 import com.itant.shibei.ui.function.template.TemplateFragment;
 import com.itant.shibei.ui.home.GoodsFragment;
 import com.itant.shibei.ui.mine.MineActivity;
+import com.itant.shibei.ui.mine.login.LoginActivity;
 import com.itant.shibei.widget.AppbarTranslateListener;
 import com.miekir.common.adapter.TabFragmentAdapter;
 import com.miekir.common.utils.ToastTool;
@@ -51,6 +55,20 @@ public class TabActivity extends BaseShiBeiActivity implements View.OnClickListe
         stl_home.setViewPager(vp_main, titles);
         // 默认选中返利商品列表
         stl_home.setCurrentTab(1);
+        stl_home.setOnTabSelectListener(new OnTabSelectListener() {
+            @Override
+            public void onTabSelect(int position) {
+            }
+
+            @Override
+            public void onTabReselect(int position) {
+                // 重复选中Tab可以让该Tab对应的列表滚动到顶部
+                Fragment fragment = fragments.get(position);
+                if (fragment instanceof ITopActionListener) {
+                    ((ITopActionListener) fragment).onTopAction();
+                }
+            }
+        });
 
         ViewTool.setOnClickListener(this, new int[]{R.id.fl_search, R.id.fl_search_top,
                 R.id.fl_more}, this);
@@ -76,10 +94,17 @@ public class TabActivity extends BaseShiBeiActivity implements View.OnClickListe
     public void onClick(View v) {
         switch (v.getId()) {
             case R.id.fl_more:
-                startActivity(new Intent(this, MineActivity.class));
+                // 点击更多
+                if (!UserInfoManager.getInstance().isLogin()) {
+                    startActivity(new Intent(this, MineActivity.class));
+                } else {
+                    Intent intent = new Intent(this, LoginActivity.class);
+                    startActivity(intent);
+                }
                 break;
             case R.id.fl_search_top:
             case R.id.fl_search:
+                // 点击搜索
                 ToastTool.showShort("search");
                 break;
 

+ 9 - 2
app/src/main/java/com/itant/shibei/ui/function/template/TemplateFragment.java

@@ -8,6 +8,7 @@ import androidx.recyclerview.widget.RecyclerView;
 
 import com.itant.library.recyclerview.CommonAdapter;
 import com.itant.shibei.R;
+import com.itant.shibei.base.ITopActionListener;
 import com.itant.shibei.bean.TemplateBean;
 import com.itant.shibei.ui.function.FunctionFragment;
 import com.itant.shibei.widget.DividerItemDecoration;
@@ -20,10 +21,11 @@ import java.util.List;
 /**
  * 模板Fragment
  */
-public class TemplateFragment extends BaseMVPFragment implements ITemplateView {
+public class TemplateFragment extends BaseMVPFragment implements ITemplateView, ITopActionListener {
     private int mTemplateType = FunctionFragment.TEMPLATE_TYPE_BONUS;
     private List<TemplateBean> mTemplateBeanList = new ArrayList<>();
     private CommonAdapter<TemplateBean> mAdapter;
+    private RecyclerView rv_template;
 
     @InjectPresenter
     TemplatePresenter mPresenter;
@@ -41,7 +43,7 @@ public class TemplateFragment extends BaseMVPFragment implements ITemplateView {
     public void onCreateViewFinished(@Nullable Bundle savedInstanceState) {
         super.onCreateViewFinished(savedInstanceState);
 
-        RecyclerView rv_template = rootView.findViewById(R.id.rv_template);
+        rv_template = rootView.findViewById(R.id.rv_template);
         // 必须要设置LayoutManager,否则RecyclerView不知道要使用什么布局,从而在界面上不显示
         LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false);
         rv_template.setLayoutManager(layoutManager);
@@ -61,4 +63,9 @@ public class TemplateFragment extends BaseMVPFragment implements ITemplateView {
         mTemplateBeanList.addAll(templateBeanList);
         mAdapter.notifyDataSetChanged();
     }
+
+    @Override
+    public void onTopAction() {
+        rv_template.smoothScrollToPosition(0);
+    }
 }

+ 7 - 1
app/src/main/java/com/itant/shibei/ui/home/GoodsFragment.java

@@ -9,6 +9,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
 
 import com.itant.shibei.R;
+import com.itant.shibei.base.ITopActionListener;
 import com.itant.shibei.bean.GoodsBean;
 import com.itant.shibei.widget.DividerItemDecoration;
 import com.miekir.mvp.presenter.InjectPresenter;
@@ -24,7 +25,7 @@ import java.util.List;
  * @date 2020/7/5 22:07
  * Description: 商品列表Fragment
  */
-public class GoodsFragment extends BaseMVPFragment implements IGoodsView {
+public class GoodsFragment extends BaseMVPFragment implements IGoodsView, ITopActionListener {
     private static final int PAGE_START = 0;
 
     @InjectPresenter
@@ -82,4 +83,9 @@ public class GoodsFragment extends BaseMVPFragment implements IGoodsView {
         }
 
     }
+
+    @Override
+    public void onTopAction() {
+        rv_goods.smoothScrollToPosition(0);
+    }
 }

+ 22 - 0
app/src/main/res/drawable/selector_btn_exit.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_pressed="true">
+        <shape android:shape="rectangle">
+            <corners android:radius="@dimen/margin_ss"/>
+            <solid android:color="@color/red"/>
+        </shape>
+    </item>
+
+    <!--<item android:state_enabled="false">
+        <shape android:shape="rectangle">
+            <corners android:radius="@dimen/margin_ss"/>
+            <solid android:color="@color/green_logo"/>
+        </shape>
+    </item>-->
+    <item>
+        <shape android:shape="rectangle">
+            <corners android:radius="@dimen/margin_ss"/>
+            <solid android:color="@color/red_text"/>
+        </shape>
+    </item>
+</selector>

+ 23 - 2
app/src/main/res/layout/activity_mine.xml

@@ -5,7 +5,7 @@
     android:fillViewport="true"
     android:fitsSystemWindows="true"
     android:orientation="vertical"
-    android:background="@color/colorPrimary">
+    android:background="@color/white">
 
     <include layout="@layout/view_toolbar"/>
 
@@ -37,7 +37,6 @@
         <LinearLayout
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_marginStart="@dimen/margin_ss"
             android:orientation="vertical">
 
             <TextView
@@ -124,4 +123,26 @@
         <include layout="@layout/view_divider_common" />
 
     </LinearLayout>
+
+    <View
+        android:layout_width="wrap_content"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:background="@color/colorPrimary"/>
+
+    <android.widget.Button
+        android:id="@+id/btn_exit_login"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:minHeight="0dp"
+        android:layout_marginBottom="@dimen/margin_default"
+        android:layout_marginStart="@dimen/margin_default"
+        android:layout_marginEnd="@dimen/margin_default"
+        android:paddingTop="@dimen/padding_full_width"
+        android:paddingBottom="@dimen/padding_full_width"
+        android:text="退出当前账号"
+        android:textColor="@color/white"
+        android:textStyle="bold"
+        android:background="@drawable/selector_btn_exit"
+        style="?android:attr/borderlessButtonStyle"/>
 </LinearLayout>

+ 10 - 0
app/src/main/res/layout/fragment_home_goods.xml

@@ -2,6 +2,7 @@
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:focusable="true"
     android:focusableInTouchMode="true"
     android:descendantFocusability="blocksDescendants">
@@ -28,4 +29,13 @@
         android:tint="@color/gray_text_hint"
         android:visibility="gone"/>
 
+
+    <com.google.android.material.floatingactionbutton.FloatingActionButton
+        android:id="@+id/fab"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="bottom|end"
+        android:layout_margin="@dimen/fab_margin"
+        app:srcCompat="@android:drawable/ic_dialog_info"
+        android:visibility="gone"/>
 </FrameLayout>

+ 1 - 0
app/src/main/res/values/colors.xml

@@ -66,6 +66,7 @@
     <color name="yellow_dark">#EC971F</color>
 
     <color name="red">#D9534F</color>
+    <color name="red_text">#F24235</color>
     <color name="red_dark">#C9302C</color>
 
     <color name="red_2">#ff8573</color>