From 196e96017790c4f8a55c0cac9b412b1794d88acd Mon Sep 17 00:00:00 2001 From: litingting Date: Tue, 27 Aug 2024 18:48:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=BC=B9=E7=AA=97=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle.kts | 1 - .../applockpro/activity/SearchActivity.java | 20 +++- .../tool/applockpro/adapter/AppAdapter.java | 101 +++++++----------- .../tool/applockpro/fragment/AllFragment.java | 19 +++- .../applockpro/fragment/OkDialogFragment.java | 96 +++++++++++++++++ .../applockpro/tool/OkDialogCallback.java | 9 ++ .../applockpro/tool/ShowAdDialogCallback.java | 7 ++ app/src/main/res/drawable/dialog_bg_white.xml | 8 ++ app/src/main/res/layout/activity_web.xml | 6 +- app/src/main/res/layout/dialog_ok.xml | 71 ++++++++++++ app/src/main/res/values/colors.xml | 2 +- app/src/main/res/values/strings.xml | 7 +- 12 files changed, 273 insertions(+), 74 deletions(-) create mode 100644 app/src/main/java/com/tool/applockpro/fragment/OkDialogFragment.java create mode 100644 app/src/main/java/com/tool/applockpro/tool/OkDialogCallback.java create mode 100644 app/src/main/java/com/tool/applockpro/tool/ShowAdDialogCallback.java create mode 100644 app/src/main/res/drawable/dialog_bg_white.xml create mode 100644 app/src/main/res/layout/dialog_ok.xml diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 7b65f3e..c9d507b 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -25,7 +25,6 @@ android { buildTypes { release { - isShrinkResources = true isMinifyEnabled = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), diff --git a/app/src/main/java/com/tool/applockpro/activity/SearchActivity.java b/app/src/main/java/com/tool/applockpro/activity/SearchActivity.java index 8c7484e..df0f1ee 100644 --- a/app/src/main/java/com/tool/applockpro/activity/SearchActivity.java +++ b/app/src/main/java/com/tool/applockpro/activity/SearchActivity.java @@ -23,7 +23,9 @@ import com.tool.applockpro.adapter.AppAdapter; import com.tool.applockpro.data.MyDataBase; import com.tool.applockpro.data.Mydata; import com.tool.applockpro.databinding.ActivitySearchBinding; +import com.tool.applockpro.fragment.OkDialogFragment; import com.tool.applockpro.tool.Mytools; +import com.tool.applockpro.tool.ShowAdDialogCallback; import java.util.ArrayList; import java.util.List; @@ -31,7 +33,7 @@ import java.util.List; public class SearchActivity extends AppCompatActivity { ActivitySearchBinding binding; private List searchdata = new ArrayList<>(); - + private OkDialogFragment okDialogFragment; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -92,7 +94,12 @@ public class SearchActivity extends AppCompatActivity { } else { binding.searchTips.setVisibility(View.GONE); binding.searchRv.setVisibility(View.VISIBLE); - AppAdapter appAdapter = new AppAdapter(SearchActivity.this, SearchActivity.this); + AppAdapter appAdapter = new AppAdapter(SearchActivity.this, SearchActivity.this, new ShowAdDialogCallback() { + @Override + public void onShowAdOkDialog(String msg) { + showDialog(msg); + } + }); appAdapter.update(searchdata); binding.searchRv.setAdapter(appAdapter); binding.searchRv.setLayoutManager(new LinearLayoutManager(SearchActivity.this)); @@ -105,7 +112,14 @@ public class SearchActivity extends AppCompatActivity { } hideKeyView(); } - + private void showDialog(String string) { + if (okDialogFragment == null) { + okDialogFragment = OkDialogFragment.newInstance(string); + }else { + okDialogFragment.updateContent(string); + } + okDialogFragment.show(getSupportFragmentManager(), ""); + } private void initData() { binding.searchTips.setVisibility(View.GONE); diff --git a/app/src/main/java/com/tool/applockpro/adapter/AppAdapter.java b/app/src/main/java/com/tool/applockpro/adapter/AppAdapter.java index fa8d16f..c5ab3a3 100644 --- a/app/src/main/java/com/tool/applockpro/adapter/AppAdapter.java +++ b/app/src/main/java/com/tool/applockpro/adapter/AppAdapter.java @@ -16,6 +16,7 @@ import android.widget.TextView; import android.widget.Toast; import androidx.annotation.NonNull; +import androidx.appcompat.widget.SwitchCompat; import androidx.cardview.widget.CardView; import androidx.recyclerview.widget.RecyclerView; @@ -26,9 +27,12 @@ import com.tool.applockpro.ApplockSkin; import com.tool.applockpro.R; import com.tool.applockpro.data.MyDataBase; import com.tool.applockpro.data.Mydata; +import com.tool.applockpro.fragment.OkDialogFragment; import com.tool.applockpro.tool.AdActionListener; import com.tool.applockpro.tool.Adcallback; import com.tool.applockpro.tool.Mytools; +import com.tool.applockpro.tool.OkDialogCallback; +import com.tool.applockpro.tool.ShowAdDialogCallback; import java.util.ArrayList; import java.util.List; @@ -41,13 +45,16 @@ public class AppAdapter extends RecyclerView.Adapter { private List ads; private int a = 0; + + private ShowAdDialogCallback mShowAdDialogCallback; + @SuppressLint("NotifyDataSetChanged") - public AppAdapter(Context context, Activity activity) { + public AppAdapter(Context context, Activity activity, ShowAdDialogCallback showAdDialogCallback) { ads = ApplockSkin.lodAd(); mycontext = context; mactivity = activity; packageManager = context.getPackageManager(); - + mShowAdDialogCallback = showAdDialogCallback; a = ApplockSkin.keyad; } @@ -56,6 +63,7 @@ public class AppAdapter extends RecyclerView.Adapter { notifyDataSetChanged(); } + @NonNull @Override public AppVH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { @@ -74,75 +82,19 @@ public class AppAdapter extends RecyclerView.Adapter { public void onClick(View v) { ApplockSkin.keyad++; if (ApplockSkin.keyad % 5 == 0 || ApplockSkin.keyad == 1) { + String msg = updateStatus(holder.switchCompat, mydata, false); showAd(new AdActionListener() { @Override public void onAction() { - String strLock = holder.switchCompat.isSelected() ? "unlock" : "lock"; - new AlertDialog.Builder(mycontext) - .setTitle("Tips") - .setMessage("Are you sure you want to " + strLock + " " + appname) - .setPositiveButton("Sure", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - if (holder.switchCompat.isSelected()) { - holder.switchCompat.setSelected(false); - } else { - holder.switchCompat.setSelected(true); - } - Mytools.runIO(new Runnable() { - @Override - public void run() { - mydata.setLock(holder.switchCompat.isSelected()); - MyDataBase.getINSTANCE().mydao().update(mydata); - - } - }); - String s; - if (holder.switchCompat.isSelected()) { - s = String.format(mycontext.getString(R.string.text_locked), appname); - } else { - s = String.format(mycontext.getString(R.string.text_unlocked), appname); - } - Toast.makeText(mycontext, s, Toast.LENGTH_SHORT).show(); - } - }) - .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - - } - }) - .show(); - + if (mShowAdDialogCallback != null) { + mShowAdDialogCallback.onShowAdOkDialog(msg); + } } }); } else { + updateStatus(holder.switchCompat, mydata, true); - if (holder.switchCompat.isSelected()) { - holder.switchCompat.setSelected(false); - } else { - holder.switchCompat.setSelected(true); - } - Mytools.runIO(new Runnable() { - @Override - public void run() { - mydata.setLock(holder.switchCompat.isSelected()); - MyDataBase.getINSTANCE().mydao().update(mydata); - - } - }); - String s; - if (holder.switchCompat.isSelected()) { - s = String.format(mycontext.getString(R.string.text_locked), appname); - } else { - s = String.format(mycontext.getString(R.string.text_unlocked), appname); - } - - - Toast.makeText(mycontext, s, Toast.LENGTH_SHORT).show(); } - - } }); @@ -155,6 +107,29 @@ public class AppAdapter extends RecyclerView.Adapter { } } + private String updateStatus(ImageView imageView, Mydata curData, boolean showToast) { + String s; + if (imageView.isSelected()) { + imageView.setSelected(false); + s = String.format(mycontext.getString(R.string.text_locked), curData.getAppName()); + } else { + imageView.setSelected(true); + s = String.format(mycontext.getString(R.string.text_unlocked), curData.getAppName()); + } + Mytools.runIO(new Runnable() { + @Override + public void run() { + curData.setLock(imageView.isSelected()); + MyDataBase.getINSTANCE().mydao().update(curData); + + } + }); + if (showToast) + Toast.makeText(ApplockSkin.getContext(), s, Toast.LENGTH_SHORT).show(); + + return s; + } + @Override public int getItemCount() { return mydataList.size(); diff --git a/app/src/main/java/com/tool/applockpro/fragment/AllFragment.java b/app/src/main/java/com/tool/applockpro/fragment/AllFragment.java index 24edab6..3bbc86c 100644 --- a/app/src/main/java/com/tool/applockpro/fragment/AllFragment.java +++ b/app/src/main/java/com/tool/applockpro/fragment/AllFragment.java @@ -15,6 +15,7 @@ import com.tool.applockpro.data.Mydao; import com.tool.applockpro.data.Mydata; import com.tool.applockpro.databinding.FragmentAllBinding; import com.tool.applockpro.tool.Mytools; +import com.tool.applockpro.tool.ShowAdDialogCallback; import androidx.lifecycle.Observer; import androidx.annotation.Nullable; @@ -26,13 +27,20 @@ public class AllFragment extends Fragment { private String tabargs; private AppAdapter thumAdapter; private Mydao mydao; + + private OkDialogFragment okDialogFragment; // private List list1 = new ArrayList<>(); @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { binding = FragmentAllBinding.inflate(inflater, container, false); - thumAdapter = new AppAdapter(requireContext(), requireActivity()); + thumAdapter = new AppAdapter(requireContext(), requireActivity(), new ShowAdDialogCallback() { + @Override + public void onShowAdOkDialog(String msg) { + showDialog(msg); + } + }); binding.allRv.setLayoutManager(new LinearLayoutManager(requireContext())); binding.allRv.setAdapter(thumAdapter); mydao = MyDataBase.getINSTANCE().mydao(); @@ -42,7 +50,14 @@ public class AllFragment extends Fragment { return binding.getRoot(); } - + private void showDialog(String string) { + if (okDialogFragment == null) { + okDialogFragment = OkDialogFragment.newInstance(string); + }else { + okDialogFragment.updateContent(string); + } + okDialogFragment.show(requireActivity().getSupportFragmentManager(), ""); + } public void refesh() { mydao.getAppsBySystem(false).observe(getViewLifecycleOwner(), new Observer>() { diff --git a/app/src/main/java/com/tool/applockpro/fragment/OkDialogFragment.java b/app/src/main/java/com/tool/applockpro/fragment/OkDialogFragment.java new file mode 100644 index 0000000..76f6bfa --- /dev/null +++ b/app/src/main/java/com/tool/applockpro/fragment/OkDialogFragment.java @@ -0,0 +1,96 @@ +package com.tool.applockpro.fragment; + + +import android.app.Dialog; +import android.os.Bundle; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.Window; +import android.view.WindowManager; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.DialogFragment; + +import com.tool.applockpro.R; +import com.tool.applockpro.databinding.DialogOkBinding; + + +public class OkDialogFragment extends DialogFragment { + + + private DialogOkBinding vb; + + + private String msgStr; + + + public OkDialogFragment(String msg) { + msgStr = msg; + } + + @Override + public void onDestroy() { + super.onDestroy(); + + } + + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + vb = DialogOkBinding.inflate(inflater, container, false); + init(); + return vb.getRoot(); + } + + public void updateContent(String msg) { + msgStr = msg; + if (msgStr != null && !msgStr.isEmpty()) { + if (vb != null) { + vb.textContent.setText(msgStr); + } + } + } + + private void init() { + + Dialog dialog = getDialog(); + setCancelable(true); + if (dialog != null) { + Window window = dialog.getWindow(); + if (window != null) { + window.setBackgroundDrawableResource(R.color.transparent); + window.getDecorView().setPadding(0, 0, 0, 0); + + WindowManager.LayoutParams attributes = window.getAttributes(); + attributes.gravity = Gravity.CENTER; + attributes.width = WindowManager.LayoutParams.MATCH_PARENT; + attributes.height = WindowManager.LayoutParams.WRAP_CONTENT; + window.setAttributes(attributes); + } + } + vb.textContent.setText(msgStr); + + vb.btnOk.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dismiss(); + } + }); + + } + + public void closeDialog() { + dismiss(); + } + + + public static OkDialogFragment newInstance(String msg) { + + OkDialogFragment okDialogFragment = new OkDialogFragment(msg); + return okDialogFragment; + } +} diff --git a/app/src/main/java/com/tool/applockpro/tool/OkDialogCallback.java b/app/src/main/java/com/tool/applockpro/tool/OkDialogCallback.java new file mode 100644 index 0000000..2f9ddfb --- /dev/null +++ b/app/src/main/java/com/tool/applockpro/tool/OkDialogCallback.java @@ -0,0 +1,9 @@ +package com.tool.applockpro.tool; + + +import com.anythink.core.api.AdError; + +public interface OkDialogCallback { + + void onClickOk( ); +} diff --git a/app/src/main/java/com/tool/applockpro/tool/ShowAdDialogCallback.java b/app/src/main/java/com/tool/applockpro/tool/ShowAdDialogCallback.java new file mode 100644 index 0000000..5481a04 --- /dev/null +++ b/app/src/main/java/com/tool/applockpro/tool/ShowAdDialogCallback.java @@ -0,0 +1,7 @@ +package com.tool.applockpro.tool; + + +public interface ShowAdDialogCallback { + + void onShowAdOkDialog(String msg); +} diff --git a/app/src/main/res/drawable/dialog_bg_white.xml b/app/src/main/res/drawable/dialog_bg_white.xml new file mode 100644 index 0000000..27ebed9 --- /dev/null +++ b/app/src/main/res/drawable/dialog_bg_white.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_web.xml b/app/src/main/res/layout/activity_web.xml index 7ec648c..6bf001b 100644 --- a/app/src/main/res/layout/activity_web.xml +++ b/app/src/main/res/layout/activity_web.xml @@ -1,5 +1,5 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_ok.xml b/app/src/main/res/layout/dialog_ok.xml new file mode 100644 index 0000000..8e679ce --- /dev/null +++ b/app/src/main/res/layout/dialog_ok.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index f47c722..6bf62e5 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -18,5 +18,5 @@ #33FFFFFF #3A3938 #80FFFFFF - + #00000000 \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fc18867..072b96b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5,8 +5,8 @@ Step 2 Change password Privacy Policy - locked: %s - Unlocked: %s + locked %s Success + Unlocked %s Success Continue At present, there is nothing\n application are locked Set Passcode @@ -26,4 +26,7 @@ Version Here is a Lock App Please re-enter the 4-digit \n password you just created + Are you sure you want to %s %S + Cancel + Ok \ No newline at end of file