Browse Source

调整试用功能列表未显示全上拉仍弹窗提示

zk 1 year ago
parent
commit
97b94e6396

+ 1 - 1
app/src/main/java/com/datarecovery/master/module/about/AboutActivity.java

@@ -101,7 +101,7 @@ public class AboutActivity extends BaseActivity<ActivityAboutBinding> {
     }
     }
 
 
     private void showTrialToast() {
     private void showTrialToast() {
-        //显示 是否开启试用 -- 打包渠道 -- 归因结果 -- 归因
+        //显示 是否开启试用 -- 打包渠道 -- 归因结果 -- 归因
         StringBuilder sb = new StringBuilder();
         StringBuilder sb = new StringBuilder();
         sb.append("--");
         sb.append("--");
         sb.append(ConfigRepository.isIsOpenTrialMembership());
         sb.append(ConfigRepository.isIsOpenTrialMembership());

+ 12 - 0
app/src/main/java/com/datarecovery/master/module/audiorecover/AudioRecoverActivity.java

@@ -129,11 +129,23 @@ public class AudioRecoverActivity extends BaseActivity<ActivityAudioRecoverBindi
                     }
                     }
                 }
                 }
             });
             });
+            binding.ryAudioRecover.setOnFlingListener(new RecyclerView.OnFlingListener() {
+                @Override
+                public boolean onFling(int velocityX, int velocityY) {
+                    int firstCompletelyVisibleItemPosition = linearLayoutManager.findFirstCompletelyVisibleItemPosition();
+                    if ((firstCompletelyVisibleItemPosition == -1 && velocityY > 0) || (linearLayoutManager.findFirstCompletelyVisibleItemPosition() == 0 && linearLayoutManager.findLastCompletelyVisibleItemPosition() == linearLayoutManager.getItemCount() - 1 && velocityY > 0)) {
+                        showTrialFinishDialog();
+                        return true;
+                    }
+                    return false;
+                }
+            });
         }
         }
     }
     }
 
 
     @SuppressLint("NotifyDataSetChanged")
     @SuppressLint("NotifyDataSetChanged")
     private void initObserver() {
     private void initObserver() {
+        audioRecoverViewModel.getScrollTop().observe(this, o -> binding.ryAudioRecover.scrollToPosition(0));
         audioRecoverViewModel.getShowTrialFinishDialog().observe(this, o -> showTrialFinishDialog());
         audioRecoverViewModel.getShowTrialFinishDialog().observe(this, o -> showTrialFinishDialog());
         audioRecoverViewModel.getShowTrialExportFailDialog().observe(this, o -> showTrialExportFailDialog());
         audioRecoverViewModel.getShowTrialExportFailDialog().observe(this, o -> showTrialExportFailDialog());
         audioRecoverViewModel.getShowLoadingEvent().observe(this, this::showLoadingDialog);
         audioRecoverViewModel.getShowLoadingEvent().observe(this, this::showLoadingDialog);

+ 6 - 0
app/src/main/java/com/datarecovery/master/module/audiorecover/AudioRecoverViewModel.java

@@ -52,6 +52,7 @@ public class AudioRecoverViewModel extends BaseViewModel {
     private final MutableLiveData<List<FilesSearch.DocumentFile>> detectedVideoList = new MutableLiveData<>(new ArrayList<>());
     private final MutableLiveData<List<FilesSearch.DocumentFile>> detectedVideoList = new MutableLiveData<>(new ArrayList<>());
     private final MutableLiveData<List<FilesSearch.DocumentFile>> selectedList = new MutableLiveData<>(new ArrayList<>());
     private final MutableLiveData<List<FilesSearch.DocumentFile>> selectedList = new MutableLiveData<>(new ArrayList<>());
     private final MutableLiveData<Boolean> showTrialView = new MutableLiveData<>();
     private final MutableLiveData<Boolean> showTrialView = new MutableLiveData<>();
+    private final SingleLiveEvent<?> scrollTop = new SingleLiveEvent<>();
     private final SingleLiveEvent<?> showTrialFinishDialog = new SingleLiveEvent<>();
     private final SingleLiveEvent<?> showTrialFinishDialog = new SingleLiveEvent<>();
     private final SingleLiveEvent<?> showTrialExportFailDialog = new SingleLiveEvent<>();
     private final SingleLiveEvent<?> showTrialExportFailDialog = new SingleLiveEvent<>();
     private final SingleLiveEvent<?> showFilterPopup = new SingleLiveEvent<>();
     private final SingleLiveEvent<?> showFilterPopup = new SingleLiveEvent<>();
@@ -94,6 +95,10 @@ public class AudioRecoverViewModel extends BaseViewModel {
         EventHelper.timeEvent(EventId.hf1000527);
         EventHelper.timeEvent(EventId.hf1000527);
     }
     }
 
 
+    public LiveData<?> getScrollTop() {
+        return scrollTop;
+    }
+
     public LiveData<?> getShowTrialFinishDialog() {
     public LiveData<?> getShowTrialFinishDialog() {
         return showTrialFinishDialog;
         return showTrialFinishDialog;
     }
     }
@@ -197,6 +202,7 @@ public class AudioRecoverViewModel extends BaseViewModel {
                             videoList.add(0, documentFile);
                             videoList.add(0, documentFile);
                             detectedVideoList.setValue(videoList);
                             detectedVideoList.setValue(videoList);
                         }
                         }
+                        scrollTop.call();
                     }
                     }
 
 
                     @Override
                     @Override

+ 12 - 2
app/src/main/java/com/datarecovery/master/module/filerecover/FileRecoverViewModel.java

@@ -53,6 +53,7 @@ public class FileRecoverViewModel extends BaseViewModel {
     private final List<MutableLiveData<Boolean>> checkList = new ArrayList<>();
     private final List<MutableLiveData<Boolean>> checkList = new ArrayList<>();
     private final MutableLiveData<List<FilesSearch.DocumentFile>> detectedWordList = new MutableLiveData<>(new ArrayList<>());
     private final MutableLiveData<List<FilesSearch.DocumentFile>> detectedWordList = new MutableLiveData<>(new ArrayList<>());
     private final MutableLiveData<List<FilesSearch.DocumentFile>> detectedExcelList = new MutableLiveData<>(new ArrayList<>());
     private final MutableLiveData<List<FilesSearch.DocumentFile>> detectedExcelList = new MutableLiveData<>(new ArrayList<>());
+    private final SingleLiveEvent<?> scrollTop = new SingleLiveEvent<>();
     private final MutableLiveData<List<FilesSearch.DocumentFile>> detectedPPTList = new MutableLiveData<>(new ArrayList<>());
     private final MutableLiveData<List<FilesSearch.DocumentFile>> detectedPPTList = new MutableLiveData<>(new ArrayList<>());
     private final MutableLiveData<List<FilesSearch.DocumentFile>> detectedPDFList = new MutableLiveData<>(new ArrayList<>());
     private final MutableLiveData<List<FilesSearch.DocumentFile>> detectedPDFList = new MutableLiveData<>(new ArrayList<>());
     private final MutableLiveData<List<FilesSearch.DocumentFile>> selectedList = new MutableLiveData<>(new ArrayList<>());
     private final MutableLiveData<List<FilesSearch.DocumentFile>> selectedList = new MutableLiveData<>(new ArrayList<>());
@@ -84,6 +85,10 @@ public class FileRecoverViewModel extends BaseViewModel {
         EventHelper.timeEvent(EventId.hf1000523);
         EventHelper.timeEvent(EventId.hf1000523);
     }
     }
 
 
+    public LiveData<?> getScrollTop() {
+        return scrollTop;
+    }
+
     public LiveData<?> getShowTrialFinishDialog() {
     public LiveData<?> getShowTrialFinishDialog() {
         return showTrialFinishDialog;
         return showTrialFinishDialog;
     }
     }
@@ -200,6 +205,7 @@ public class FileRecoverViewModel extends BaseViewModel {
                             list.add(0, item);
                             list.add(0, item);
                             liveData.setValue(list);
                             liveData.setValue(list);
                         }
                         }
+                        scrollTop.call();
                     }
                     }
 
 
                     @Override
                     @Override
@@ -363,10 +369,14 @@ public class FileRecoverViewModel extends BaseViewModel {
         MemberActivity.start(ActivityUtil.getTopActivity(), MemberType.APP_FILE_RECOVER);
         MemberActivity.start(ActivityUtil.getTopActivity(), MemberType.APP_FILE_RECOVER);
     }
     }
 
 
-    public void scrollPosition(int firstCompletePosition, int lastCompletelyItemPosition, int itemCount) {
-        if (lastCompletelyItemPosition == itemCount - 1 && firstCompletePosition > 0 && !BoxingUtil.boxing(showScanDialogEvent.getValue())) {
+    public void scrollPosition(int lastCompletelyItemPosition, int itemCount) {
+        if (lastCompletelyItemPosition == itemCount - 1 && scanDisposable != null && !BoxingUtil.boxing(showScanDialogEvent.getValue())) {
             showTrialFinishDialog.call();
             showTrialFinishDialog.call();
             EventHelper.report(EventId.hf1001119, Maps.asMap(EventId.EVENT_ID, ReportUtil.getReportId(MemberType.APP_FILE_RECOVER)));
             EventHelper.report(EventId.hf1001119, Maps.asMap(EventId.EVENT_ID, ReportUtil.getReportId(MemberType.APP_FILE_RECOVER)));
         }
         }
     }
     }
+
+    public void showTrialFinishDialog() {
+        showTrialFinishDialog.call();
+    }
 }
 }

+ 12 - 2
app/src/main/java/com/datarecovery/master/module/filerecover/fragment/FileRecoverFragment.java

@@ -62,9 +62,18 @@ public class FileRecoverFragment extends BaseFragment<FragmentFileRecoverListBin
             binding.rvFileRecoverList.addOnScrollListener(new RecyclerView.OnScrollListener() {
             binding.rvFileRecoverList.addOnScrollListener(new RecyclerView.OnScrollListener() {
                 @Override
                 @Override
                 public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
                 public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
-                    if (fileRecoverViewModel.isTrial()) {
-                        fileRecoverViewModel.scrollPosition(linearLayoutManager.findFirstCompletelyVisibleItemPosition(), linearLayoutManager.findLastCompletelyVisibleItemPosition(), linearLayoutManager.getItemCount());
+                    fileRecoverViewModel.scrollPosition(linearLayoutManager.findLastCompletelyVisibleItemPosition(), linearLayoutManager.getItemCount());
+                }
+            });
+            binding.rvFileRecoverList.setOnFlingListener(new RecyclerView.OnFlingListener() {
+                @Override
+                public boolean onFling(int velocityX, int velocityY) {
+                    int firstCompletelyVisibleItemPosition = linearLayoutManager.findFirstCompletelyVisibleItemPosition();
+                    if ((firstCompletelyVisibleItemPosition == -1 && velocityY > 0) || (linearLayoutManager.findFirstCompletelyVisibleItemPosition() == 0 && linearLayoutManager.findLastCompletelyVisibleItemPosition() == linearLayoutManager.getItemCount() - 1 && velocityY > 0)) {
+                        fileRecoverViewModel.showTrialFinishDialog();
+                        return true;
                     }
                     }
+                    return false;
                 }
                 }
             });
             });
         }
         }
@@ -84,6 +93,7 @@ public class FileRecoverFragment extends BaseFragment<FragmentFileRecoverListBin
         if (detectedList != null) {
         if (detectedList != null) {
             detectedList.observe(getViewLifecycleOwner(), list -> fileRecoverAdapter.submit(list));
             detectedList.observe(getViewLifecycleOwner(), list -> fileRecoverAdapter.submit(list));
         }
         }
+        fileRecoverViewModel.getScrollTop().observe(getViewLifecycleOwner(), o -> binding.rvFileRecoverList.scrollToPosition(0));
     }
     }
 
 
     @Override
     @Override

+ 18 - 2
app/src/main/java/com/datarecovery/master/module/imgrecover/ImageRecoverActivity.java

@@ -8,9 +8,12 @@ import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.Intent;
 import android.content.IntentSender;
 import android.content.IntentSender;
 import android.net.Uri;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Bundle;
 import android.provider.MediaStore;
 import android.provider.MediaStore;
 import android.view.KeyEvent;
 import android.view.KeyEvent;
+import android.view.MotionEvent;
+import android.view.View;
 
 
 import androidx.activity.result.ActivityResult;
 import androidx.activity.result.ActivityResult;
 import androidx.activity.result.IntentSenderRequest;
 import androidx.activity.result.IntentSenderRequest;
@@ -180,7 +183,7 @@ public class ImageRecoverActivity extends BaseActivity<ActivityImageRecoverBindi
                 int firstVisibleItem = gridLayoutManager.findFirstVisibleItemPosition();
                 int firstVisibleItem = gridLayoutManager.findFirstVisibleItemPosition();
                 int lastVisibleItem = gridLayoutManager.findLastVisibleItemPosition();
                 int lastVisibleItem = gridLayoutManager.findLastVisibleItemPosition();
                 if (imageRecoverViewModel.isTrial()) {
                 if (imageRecoverViewModel.isTrial()) {
-                    imageRecoverViewModel.scrollPosition(gridLayoutManager.findFirstCompletelyVisibleItemPosition(), gridLayoutManager.findLastCompletelyVisibleItemPosition(), gridLayoutManager.getItemCount());
+                    imageRecoverViewModel.scrollPosition(gridLayoutManager.findLastCompletelyVisibleItemPosition(), gridLayoutManager.getItemCount());
                 }
                 }
                 int photoPosition = getPhotoPosition();
                 int photoPosition = getPhotoPosition();
                 int wxPosition = getWxPosition();
                 int wxPosition = getWxPosition();
@@ -197,7 +200,19 @@ public class ImageRecoverActivity extends BaseActivity<ActivityImageRecoverBindi
                 }
                 }
             }
             }
         };
         };
-        binding.ryImageRecover.addOnScrollListener(onScrollListener);
+        if (imageRecoverViewModel.isTrial()) {
+            binding.ryImageRecover.setOnFlingListener(new RecyclerView.OnFlingListener() {
+                @Override
+                public boolean onFling(int velocityX, int velocityY) {
+                    if (gridLayoutManager.findFirstCompletelyVisibleItemPosition() == 0 && gridLayoutManager.findLastCompletelyVisibleItemPosition() == gridLayoutManager.getItemCount() - 1 && velocityY > 0) {
+                        showTrialFinishDialog();
+                        return true;
+                    }
+                    return false;
+                }
+            });
+            binding.ryImageRecover.addOnScrollListener(onScrollListener);
+        }
     }
     }
 
 
     public int getPhotoPosition() {
     public int getPhotoPosition() {
@@ -296,6 +311,7 @@ public class ImageRecoverActivity extends BaseActivity<ActivityImageRecoverBindi
 
 
     @SuppressLint("NotifyDataSetChanged")
     @SuppressLint("NotifyDataSetChanged")
     private void initObserver() {
     private void initObserver() {
+        imageRecoverViewModel.getScrollTop().observe(this, o -> binding.ryImageRecover.scrollToPosition(0));
         imageRecoverViewModel.getShowTrialFinishDialog().observe(this, o -> showTrialFinishDialog());
         imageRecoverViewModel.getShowTrialFinishDialog().observe(this, o -> showTrialFinishDialog());
         imageRecoverViewModel.getShowTrialExportFailDialog().observe(this, o -> showTrialExportFailDialog());
         imageRecoverViewModel.getShowTrialExportFailDialog().observe(this, o -> showTrialExportFailDialog());
         imageRecoverViewModel.getDeleteUriListSdk11().observe(this, list -> {
         imageRecoverViewModel.getDeleteUriListSdk11().observe(this, list -> {

+ 8 - 2
app/src/main/java/com/datarecovery/master/module/imgrecover/ImageRecoverViewModel.java

@@ -80,6 +80,7 @@ public class ImageRecoverViewModel extends BaseViewModel {
     private final SingleLiveEvent<?> showClearDialog = new SingleLiveEvent<>();
     private final SingleLiveEvent<?> showClearDialog = new SingleLiveEvent<>();
     private final SingleLiveEvent<Boolean> showScanDialogEvent = new SingleLiveEvent<>();
     private final SingleLiveEvent<Boolean> showScanDialogEvent = new SingleLiveEvent<>();
     private final SingleLiveEvent<Boolean> showLoadingEvent = new SingleLiveEvent<>();
     private final SingleLiveEvent<Boolean> showLoadingEvent = new SingleLiveEvent<>();
+    private final SingleLiveEvent<?> scrollTop = new SingleLiveEvent<>();
     private final SingleLiveEvent<?> notifyList = new SingleLiveEvent<>();
     private final SingleLiveEvent<?> notifyList = new SingleLiveEvent<>();
     private final MutableLiveData<String> barTitle = new MutableLiveData<>();
     private final MutableLiveData<String> barTitle = new MutableLiveData<>();
     private final MutableLiveData<Boolean> checkAll = new MutableLiveData<>(false);
     private final MutableLiveData<Boolean> checkAll = new MutableLiveData<>(false);
@@ -106,6 +107,10 @@ public class ImageRecoverViewModel extends BaseViewModel {
         initLiveData();
         initLiveData();
     }
     }
 
 
+    public LiveData<?> getScrollTop() {
+        return scrollTop;
+    }
+
     public LiveData<?> getShowTrialFinishDialog() {
     public LiveData<?> getShowTrialFinishDialog() {
         return showTrialFinishDialog;
         return showTrialFinishDialog;
     }
     }
@@ -297,6 +302,7 @@ public class ImageRecoverViewModel extends BaseViewModel {
                             list.add(0, imageFile);
                             list.add(0, imageFile);
                             liveData.setValue(list);
                             liveData.setValue(list);
                         }
                         }
+                        scrollTop.call();
                     }
                     }
 
 
                     @Override
                     @Override
@@ -638,8 +644,8 @@ public class ImageRecoverViewModel extends BaseViewModel {
         MemberActivity.start(ActivityUtil.getTopActivity(), type);
         MemberActivity.start(ActivityUtil.getTopActivity(), type);
     }
     }
 
 
-    public void scrollPosition(int firstCompletePosition, int lastCompletelyItemPosition, int itemCount) {
-        if (lastCompletelyItemPosition == itemCount - 1 && firstCompletePosition > 0 && !BoxingUtil.boxing(showScanDialogEvent.getValue())) {
+    public void scrollPosition(int lastCompletelyItemPosition, int itemCount) {
+        if (lastCompletelyItemPosition == itemCount - 1 && scanDisposable != null && !BoxingUtil.boxing(showScanDialogEvent.getValue())) {
             showTrialFinishDialog.call();
             showTrialFinishDialog.call();
             EventHelper.report(EventId.hf1001119, Maps.asMap(EventId.EVENT_ID, ReportUtil.getReportId(type)));
             EventHelper.report(EventId.hf1001119, Maps.asMap(EventId.EVENT_ID, ReportUtil.getReportId(type)));
         }
         }

+ 11 - 0
app/src/main/java/com/datarecovery/master/module/videorecover/VideoRecoverActivity.java

@@ -163,6 +163,17 @@ public class VideoRecoverActivity extends BaseActivity<ActivityVideoRecoverBindi
                     }
                     }
                 }
                 }
             });
             });
+            binding.ryVideoRecover.setOnFlingListener(new RecyclerView.OnFlingListener() {
+                @Override
+                public boolean onFling(int velocityX, int velocityY) {
+                    int firstCompletelyVisibleItemPosition = gridLayoutManager.findFirstCompletelyVisibleItemPosition();
+                    if ((firstCompletelyVisibleItemPosition == -1 && velocityY > 0) || (gridLayoutManager.findFirstCompletelyVisibleItemPosition() == 0 && gridLayoutManager.findLastCompletelyVisibleItemPosition() == gridLayoutManager.getItemCount() - 1 && velocityY > 0)) {
+                        showTrialFinishDialog();
+                        return true;
+                    }
+                    return false;
+                }
+            });
         }
         }
     }
     }
 
 

+ 1 - 1
app/src/main/res/layout/activity_preview.xml

@@ -77,7 +77,7 @@
                     android:id="@+id/watermark_view"
                     android:id="@+id/watermark_view"
                     android:layout_width="match_parent"
                     android:layout_width="match_parent"
                     android:layout_height="match_parent"
                     android:layout_height="match_parent"
-                    app:watermark_color="@color/white40"
+                    app:watermark_color="#6d6d6d"
                     app:watermark_text="@string/export_without_watermark"
                     app:watermark_text="@string/export_without_watermark"
                     isGone="@{!previewViewModel.isTrial}"
                     isGone="@{!previewViewModel.isTrial}"
                     app:watermark_textSize="14sp" />
                     app:watermark_textSize="14sp" />

+ 1 - 1
app/src/main/res/layout/item_preview_img.xml

@@ -16,7 +16,7 @@
         android:id="@+id/watermark_view"
         android:id="@+id/watermark_view"
         android:layout_width="match_parent"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:layout_height="match_parent"
-        app:watermark_color="@color/white40"
+        app:watermark_color="#6d6d6d"
         app:watermark_text="@string/export_without_watermark"
         app:watermark_text="@string/export_without_watermark"
         app:watermark_textSize="14sp">
         app:watermark_textSize="14sp">
 
 

+ 1 - 1
app/src/main/res/values/strings.xml

@@ -174,7 +174,7 @@
     <string name="wx_recover_tutorial_content">1.准备一台电脑,一根数据线,一部需要修复数据的手机。\n2.点击\"复制教程链接\"按钮,复制教程链接到电脑浏览器上。\n3.按教程把手机微信文件上传到电脑。\n4.输入以下订单号和验证码登录PC端数据修复工具,按照教程完成微信数据修复。</string>
     <string name="wx_recover_tutorial_content">1.准备一台电脑,一根数据线,一部需要修复数据的手机。\n2.点击\"复制教程链接\"按钮,复制教程链接到电脑浏览器上。\n3.按教程把手机微信文件上传到电脑。\n4.输入以下订单号和验证码登录PC端数据修复工具,按照教程完成微信数据修复。</string>
     <string name="wx_recover_copy_link">复制教程链接</string>
     <string name="wx_recover_copy_link">复制教程链接</string>
     <string name="copy_success">复制成功</string>
     <string name="copy_success">复制成功</string>
-    <string name="no_login">账号未登录</string>
+    <string name="no_login">请先登录</string>
     <string name="member_clear_buy">立即购买</string>
     <string name="member_clear_buy">立即购买</string>
     <string name="img_clear_sure_title">您确定清除吗?</string>
     <string name="img_clear_sure_title">您确定清除吗?</string>
     <string name="img_clear_sure_content">清除后,图片将彻底消失</string>
     <string name="img_clear_sure_content">清除后,图片将彻底消失</string>