소스 검색

解决刚开始没数据到有数据就调用adapter的insert导致闪退的问题;
妹纸界面滑动时半透明

詹子聪 6 년 전
부모
커밋
70fd62febc

+ 2 - 3
app/src/main/java/com/miekir/eden/base/SwipeBackActivity.java

@@ -1,5 +1,6 @@
 package com.miekir.eden.base;
 
+import android.app.Activity;
 import android.graphics.Color;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -7,14 +8,12 @@ import android.view.ViewGroup;
 import android.widget.ImageView;
 import android.widget.RelativeLayout;
 
-import androidx.appcompat.app.AppCompatActivity;
-
 import com.miekir.eden.widget.SwipeBackLayout;
 
 /**
  * Created by Eric on 15/3/3.
  */
-public class SwipeBackActivity extends AppCompatActivity implements SwipeBackLayout.SwipeBackListener {
+public class SwipeBackActivity extends Activity implements SwipeBackLayout.SwipeBackListener {
 
     private static final SwipeBackLayout.DragEdge DEFAULT_DRAG_EDGE = SwipeBackLayout.DragEdge.LEFT;
 

+ 1 - 3
app/src/main/java/com/miekir/eden/ui/home/coupon/TemplateFragment.java

@@ -158,16 +158,14 @@ public class TemplateFragment extends BaseMVPFragment implements ITemplateView<S
             return;
         }
 
-        boolean hasClear = false;
         if (mCurrentPage == PAGE_START) {
             mCouponBeanList.clear();
-            hasClear = true;
         }
 
         if (couponBeanList != null) {
             int start = mCouponBeanList.size();
             mCouponBeanList.addAll(couponBeanList);
-            if (!hasClear) {
+            if (mCurrentPage > PAGE_START) {
                 mAdapter.notifyItemRangeChanged(start, couponBeanList.size());
             } else {
                 mAdapter.notifyDataSetChanged();

+ 1 - 3
app/src/main/java/com/miekir/eden/ui/home/goods/GoodsFragment.java

@@ -181,10 +181,8 @@ public class GoodsFragment extends BaseMVPFragment implements IGoodsView, ITopAc
             return;
         }
 
-        boolean hasClear = false;
         if (mCurrentPage == PAGE_START) {
             mGoodsList.clear();
-            hasClear = true;
             // 如果是下拉刷新获取的第0页数据,item不要自动滚动一段距离
             // 或者用这个mLayoutManager.scrollToPositionWithOffset(0, 0);
             if (mIsRefresh) {
@@ -196,7 +194,7 @@ public class GoodsFragment extends BaseMVPFragment implements IGoodsView, ITopAc
         if (goodsList != null) {
             int start = mGoodsList.size();
             mGoodsList.addAll(goodsList);
-            if (!hasClear) {
+            if (mCurrentPage > PAGE_START) {
                 mAdapter.notifyItemRangeInserted(start, goodsList.size());
             } else {
                 mAdapter.notifyDataSetChanged();

+ 22 - 0
app/src/main/java/com/miekir/eden/ui/home/goods/detail/MeizhiDetailActivity.java

@@ -1,7 +1,12 @@
 package com.miekir.eden.ui.home.goods.detail;
 
+import android.graphics.Color;
+import android.os.Build;
 import android.os.Bundle;
 import android.text.TextUtils;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
 
 import com.bumptech.glide.Glide;
 import com.bumptech.glide.load.engine.DiskCacheStrategy;
@@ -23,6 +28,7 @@ public class MeizhiDetailActivity extends SwipeBackActivity {
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
+        setStatusBarTransparent();
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_meizhi_detail);
 
@@ -45,4 +51,20 @@ public class MeizhiDetailActivity extends SwipeBackActivity {
                     .into(pv_meizhi);
         }
     }
+
+    /**
+     * 设置透明状态栏
+     */
+    private void setStatusBarTransparent(){
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
+            Window window = getWindow();
+            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
+            window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
+                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
+            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+            window.setStatusBarColor(Color.TRANSPARENT);
+        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){
+            getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
+        }
+    }
 }

+ 9 - 2
app/src/main/java/com/miekir/eden/ui/mine/fav/MyFavActivity.java

@@ -59,7 +59,7 @@ public class MyFavActivity extends BaseBeiActivity implements IMyFavView {
         mAdapter.setEmptyView(R.layout.view_empty, rv_search_result);
 
         // 加载更多
-        rv_search_result.addOnScrollListener(new OnRcvScrollListener(){
+        rv_search_result.addOnScrollListener(new OnRcvScrollListener() {
             // 滑动时不要去加载图片
             //RecyclerView.SCROLL_STATE_IDLE //空闲状态
             //RecyclerView.SCROLL_STATE_FLING //滚动状态
@@ -100,6 +100,7 @@ public class MyFavActivity extends BaseBeiActivity implements IMyFavView {
 
     /**
      * 获取商品结果
+     *
      * @param success
      * @param message
      * @param goodsList
@@ -114,10 +115,16 @@ public class MyFavActivity extends BaseBeiActivity implements IMyFavView {
             return;
         }
 
+
         if (goodsList != null) {
             int start = mGoodsList.size();
             mGoodsList.addAll(goodsList);
-            mAdapter.notifyItemRangeInserted(start, goodsList.size());
+            if (mCurrentPage > PAGE_START) {
+                // 刚开始数据为0时不能使用notifyItemRangeInserted
+                mAdapter.notifyItemRangeInserted(start, goodsList.size());
+            } else {
+                mAdapter.notifyDataSetChanged();
+            }
         }
 
         // 请求到数据了,页数自增

+ 4 - 6
app/src/main/res/layout/activity_meizhi_detail.xml

@@ -1,20 +1,18 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="@color/black"
-    android:orientation="vertical">
-
+    android:fitsSystemWindows="true">
     <ImageButton
         android:id="@+id/iv_back"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginStart="6dp"
-        android:layout_gravity="center_vertical"
         android:padding="10dp"
         android:tint="@color/white"
         android:src="?attr/homeAsUpIndicator"
-        android:background="?attr/selectableItemBackgroundBorderless" />
+        android:background="?attr/selectableItemBackgroundBorderless"/>
 
     <uk.co.senab.photoview.PhotoView
         android:id="@+id/pv_meizhi"
@@ -22,4 +20,4 @@
         android:layout_height="match_parent"
         android:src="@mipmap/logo_gray"
         android:scaleType="centerInside"/>
-</LinearLayout>
+</FrameLayout>

+ 5 - 3
app/src/main/res/values/styles.xml

@@ -17,8 +17,6 @@
         <!--<item name="android:statusBarColor">@color/gray_status_bar</item>
         <item name="android:windowLightStatusBar" tools:targetApi="23">true</item>-->
 
-
-
         <!--<item name="android:windowIsTranslucent">true</item>-->
         <!--用下面这个属性代替windowIsTranslucent,否则在8.0上配合portrait属性会导致闪退-->
         <item name="android:windowDisablePreview">true</item>
@@ -84,7 +82,7 @@
         <item name="android:windowBackground">@color/colorPrimaryDark</item>
     </style>
 
-    <style name="AppTheme.MeizhiDetail">
+    <style name="AppTheme.MeizhiDetail" parent="Theme.AppCompat.Light.NoActionBar">
         <item name="colorPrimary">#000000</item>
         <item name="colorPrimaryDark">#000000</item>
         <item name="android:windowBackground">@android:color/transparent</item>
@@ -94,5 +92,9 @@
         <item name="android:textColorSecondary">#ffffff</item>
         <!--标题字体大小-->
         <!--<item name="android:textSize">16sp</item>-->
+
+        <item name="android:windowIsTranslucent">true</item>
+        <!--用下面这个属性代替windowIsTranslucent,否则在8.0上配合portrait属性会导致闪退-->
+        <!--<item name="android:windowDisablePreview">true</item>-->
     </style>
 </resources>