功能更新V1.0.2(6)

This commit is contained in:
denghaina 2024-08-19 15:41:49 +08:00
parent 63f514e86a
commit 67b9cee3c3
63 changed files with 2020 additions and 747 deletions

View File

@ -18,14 +18,13 @@ android {
applicationId = "com.soft.ware.lock.hd"
minSdk = 23
targetSdk = 34
versionCode = 5
versionName = "1.0.1"
versionCode = 6
versionName = "1.0.2"
setProperty(
"archivesBaseName",
"SoftWare Lock_v" + versionName + "(${versionCode})_$timestamp"
)
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
@ -123,7 +122,7 @@ dependencies {
implementation("androidx.recyclerview:recyclerview:1.1.0")
//Tramini
implementation("com.anythink.sdk:tramini-plugin-tpn:6.3.68")
//implementation("com.anythink.sdk:tramini-plugin-tpn:6.3.68")
// Debugger UI Tools
// implementation ("com.anythink.sdk:debugger-ui:1.0.7")

View File

@ -1,5 +1,6 @@
包名com.soft.ware.lock.hd
应用名SoftWare Lock
签名文件SoftWare Lock.jks
签名路径app/SoftWare Lock.jks
别名SoftWare Lockkey0
密码SoftWare Lock
密码SoftWare Lock

View File

@ -1,17 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission
android:name="android.permission.PACKAGE_USAGE_STATS"
tools:ignore="ProtectedPermissions" />
<queries>
<intent>
<action android:name="android.intent.action.MAIN" />
</intent>
</queries>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.INTERNET" />
<application
android:name=".application.SoftWareLockApplication"
@ -25,26 +28,31 @@
android:theme="@style/Theme.AppLock"
tools:targetApi="31">
<activity
android:name=".activity.KeyWordActivity"
android:screenOrientation="portrait"
android:name=".activity.SearchActivity"
android:exported="false" />
<activity
android:name=".activity.SettingActivity"
android:exported="false" />
<activity
android:name=".activity.KeyWordActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".activity.MainActivity"
android:exported="false"
android:screenOrientation="portrait">
</activity>
android:screenOrientation="portrait" />
<activity
android:name=".activity.IntoActivity"
android:screenOrientation="portrait"
android:exported="true">
android:exported="true"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name=".allmanager.MySoftWareLockService"/>
<service android:name=".allmanager.MySoftWareLockService" />
</application>
</manifest>

View File

@ -0,0 +1,86 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Privacy Policy</title>
<style>
body {
font-family: Arial, sans-serif;
line-height: 1.6;
margin: 0;
padding: 0;
padding: 20px;
}
h1, h2 {
color: #333;
}
h2 {
margin-top: 20px;
}
p {
margin: 10px 0;
}
ul {
margin: 10px 0;
padding-left: 20px;
}
</style>
</head>
<body>
<h1>Privacy Policy</h1>
<p><strong>Date:</strong> August 14, 2024</p>
<p>We provide this Privacy Policy to help you understand how we collect, use, and disclose information, including what you may provide to us or that we obtain from our products and services. We treat your privacy very seriously. Your privacy is important to us.</p>
<h2>Information Collection and Use</h2>
<p>For a better experience, while using our Service, we may require you to provide us with certain personally identifiable information, such as users' name, address, location, pictures, etc. The information that we request will be retained on your device and is not collected or retained by us in any way and used as described in this privacy policy.</p>
<p>The app does use third-party services that may collect information used to identify you.</p>
<p>Please refer to the privacy policy of the third-party service provider used by the application:</p>
<ul>
<li>Google Play Services</li>
<li>Google Analytics for Firebase</li>
<li>Firebase Crashlytics</li>
<li>Unity</li>
<li>AppLovin</li>
<li>Pangle</li>
<li>Mintegral</li>
<li>Bigo</li>
<li>Ironsource</li>
<li>Vungle</li>
</ul>
<h2>Log Data</h2>
<p>We want to inform you that whenever you use our Service, in case of an error in the app, we collect data and information (through third-party products) on your phone called Log Data. This Log Data may include information such as your device Internet Protocol (“IP”) address, device name, operating system version, the configuration of the app when utilizing our Service, the time and date of your use of the Service, and other statistics.</p>
<h2>Cookies</h2>
<p>Cookies are files with a small amount of data that are commonly used as anonymous unique identifiers. These are sent to your browser from the websites that you visit and are stored on your device's internal memory.</p>
<p>This Service does not use these “cookies” explicitly. However, the app may use third-party code and libraries that use “cookies” to collect information and improve their services. You have the option to either accept or refuse these cookies and know when a cookie is being sent to your device. If you choose to refuse our cookies, you may not be able to use some portions of this Service.</p>
<h2>Service Providers</h2>
<p>We may employ third-party companies and individuals due to the following reasons:</p>
<ul>
<li>To facilitate our Service</li>
<li>To provide the Service on our behalf</li>
<li>To perform Service-related services, or</li>
<li>To assist us in analyzing how our Service is used</li>
</ul>
<p>We want to inform users of this Service that these third parties have access to their Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use the information for any other purpose.</p>
<h2>Security</h2>
<p>We value your trust in providing us your Personal Information, thus we are striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and we cannot guarantee its absolute security.</p>
<h2>Links to Other Sites</h2>
<p>This Service may contain links to other sites. If you click on a third-party link, you will be directed to that site. Note that these external sites are not operated by us. Therefore, we strongly advise you to review the Privacy Policy of these websites. We have no control over and assume no responsibility for the content, privacy policies, or practices of any third-party sites or services.</p>
<h2>Childrens Privacy</h2>
<p>These Services do not address anyone under the age of 13. We do not knowingly collect personally identifiable information from children under 13 years of age. In the case we discover that a child under 13 has provided us with personal information, we will immediately delete this from our servers. If you are a parent or guardian and you are aware that your child has provided us with personal information, please contact us so that we will be able to take the necessary actions.</p>
<h2>Changes to This Privacy Policy</h2>
<p>We may update our Privacy Policy from time to time. Thus, you are advised to review this page periodically for any changes. We will notify you of any changes by posting the new Privacy Policy on this page.</p>
<h2>Privacy Questions</h2>
<p>We may update the Privacy Policy from time to time. When we change the policy in a material way, a notice will be posted on our website along with the updated Privacy Policy.</p>
<p>If you have any questions or concerns about our Privacy Policy or data processing, please contact us: <a href="mailto:saleemjeeta2@gmail.com">saleemjeeta2@gmail.com</a>.</p>
</body>
</html>

View File

@ -2,6 +2,7 @@ package com.example.applock.DrawView;
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.FrameLayout;
@ -61,8 +62,10 @@ public class InPutKeyView extends FrameLayout {
public void OnKeyClick(String bottomkey) {
if (my_top_key.length() >= keylength) {
my_top_key.delete(0, my_top_key.length());
Log.d("dhn","-------fin"+my_top_key.length());
}
my_top_key.append(bottomkey);
Log.d("dhn","-------fin"+my_top_key.length());
topAdapter.updateItem(my_top_key.toString());
if (my_top_key.length() == keylength) {
inputKeyListener.onInputComplete(my_top_key.toString());

View File

@ -11,9 +11,17 @@ import com.anythink.core.api.AdError;
import com.anythink.interstitial.api.ATInterstitial;
import com.example.applock.DrawView.CustomProgressBar;
import com.example.applock.R;
import com.example.applock.allmanager.AppManager;
import com.example.applock.allmanager.Datamanager;
import com.example.applock.allmanager.LockAction;
import com.example.applock.allmanager.MyWorker;
import com.example.applock.allmanager.SoftLockPermission;
import com.example.applock.application.SoftWareLockApplication;
import com.example.applock.roombase.AppDataBase;
import com.example.applock.roombase.AppEntity;
import com.example.applock.roombase.SoftWareLockRoom;
import com.example.applock.value.Adcallback;
import com.example.applock.value.MyAllValues;
import com.example.applock.value.Mytool;
import java.util.List;
@ -23,7 +31,9 @@ public class IntoActivity extends AppCompatActivity {
private List<ATInterstitial> ads;
private boolean isAlreadyShow = false;
private float i = 0;
private AppEntity entity;
private CustomProgressBar customProgressBar;
private String lockpackname = MyAllValues.softWareLockApplication.getPackageName();
@SuppressLint("MissingInflatedId")
@Override
@ -31,8 +41,8 @@ public class IntoActivity extends AppCompatActivity {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_into);
customProgressBar = findViewById(R.id.splash_pg);
ads = SoftWareLockApplication.lodAd();
customProgressBar = findViewById(R.id.splash_pg);
ads = SoftWareLockApplication.lodAd();
countDownTimer = new CountDownTimer(10100, 100) {
@Override
@ -91,16 +101,38 @@ public class IntoActivity extends AppCompatActivity {
}
public void intoActivity() {
String firstkey = Datamanager.getTopKey();
if (firstkey.isEmpty()) {
Intent intent = new Intent(IntoActivity.this, KeyWordActivity.class);
startActivity(intent);
finish();
} else {
startActivity(new Intent(IntoActivity.this, MainActivity.class));
if (SoftLockPermission.allAllowPermission(this)){
SoftWareLockRoom.RUNIO(new Runnable() {
@Override
public void run() {
entity = AppDataBase.getDatabaseInstance().getAppEntityDao().queryByPagName(lockpackname);
runOnUiThread(new Runnable() {
@Override
public void run() {
entity.setApplocked(true);
SoftWareLockRoom.RUNIO(new Runnable() {
@Override
public void run() {
AppDataBase.getDatabaseInstance().getAppEntityDao().updateData(entity);
}
});
startActivity(new Intent(IntoActivity.this, MainActivity.class));
finish();
}
});
}
});
}else {
startActivity(new Intent(IntoActivity.this, MainActivity.class));
finish();
}
}
finish();
}
@Override

View File

@ -39,19 +39,22 @@ public class KeyWordActivity extends AppCompatActivity {
private InPutKeyView inPutKeyView;
private int MyKeyPage;
private List<ATInterstitial> ads;
private int type_from;
private TextView key_top_title;
private ImageView key_page_logo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyKeyPage = getIntent().getIntExtra(MyAllValues.PASS_KEY_WORD, 0);
setContentView(R.layout.activity_key_word);
ads = SoftWareLockApplication.lodAd();
text_page = findViewById(R.id.text_page);
text_key_btn = findViewById(R.id.text_key_btn);
image_back = findViewById(R.id.image_back);
inPutKeyView = findViewById(R.id.input_view);
key_top_title = findViewById(R.id.key_top_title);
key_page_logo = findViewById(R.id.key_page_logo);
gotoKyePage();
}
@ -88,9 +91,11 @@ public class KeyWordActivity extends AppCompatActivity {
@Override
public void onClick(View v) {
Intent intent = new Intent(KeyWordActivity.this, KeyWordActivity.class);
intent.putExtra(MyAllValues.PASS_KEY_FROM,0);
intent.putExtra(MyAllValues.PASS_KEY_WORD, 1);
intent.putExtra(MyAllValues.PASS_WORD_TOP_KEY, fistkey);
startActivity(intent);
finish();
}
});
} else if (MyKeyPage == 1) {
@ -101,15 +106,28 @@ public class KeyWordActivity extends AppCompatActivity {
text_key_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (Objects.equals(setPin, fistkey)) {
Datamanager.setTopKey(fistkey);
Intent intent = new Intent(KeyWordActivity.this, MainActivity.class);
startActivity(intent);
finish();
} else {
Toast.makeText(KeyWordActivity.this, getString(R.string.set_key_file), Toast.LENGTH_SHORT).show();
inPutKeyView.clearTopKey();
text_key_btn.setVisibility(View.GONE);
type_from = getIntent().getIntExtra(MyAllValues.PASS_KEY_FROM,0);
if (type_from == 0){
if (Objects.equals(setPin, fistkey)) {
Datamanager.setTopKey(fistkey);
Intent intent = new Intent(KeyWordActivity.this, MainActivity.class);
startActivity(intent);
finish();
} else {
Toast.makeText(KeyWordActivity.this, getString(R.string.set_key_file), Toast.LENGTH_SHORT).show();
inPutKeyView.clearTopKey();
text_key_btn.setVisibility(View.GONE);
}
}else {
if (Objects.equals(setPin, fistkey)) {
Datamanager.setTopKey(fistkey);
Toast.makeText(KeyWordActivity.this, getString(R.string.reset_success), Toast.LENGTH_SHORT).show();
showAd();
} else {
Toast.makeText(KeyWordActivity.this, getString(R.string.set_key_file), Toast.LENGTH_SHORT).show();
inPutKeyView.clearTopKey();
text_key_btn.setVisibility(View.GONE);
}
}
}
@ -122,12 +140,19 @@ public class KeyWordActivity extends AppCompatActivity {
});
} else if (MyKeyPage == 2) {
image_back.setVisibility(View.VISIBLE);
text_page.setText(getString(R.string.reset_my_key));
text_key_btn.setText(getString(R.string.next));
key_top_title.setVisibility(View.VISIBLE);
text_page.setVisibility(View.GONE);
key_page_logo.setVisibility(View.VISIBLE);
text_key_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
resetPin();
Intent intent = new Intent(KeyWordActivity.this, KeyWordActivity.class);
intent.putExtra(MyAllValues.PASS_KEY_FROM,2);
intent.putExtra(MyAllValues.PASS_KEY_WORD, 1);
intent.putExtra(MyAllValues.PASS_WORD_TOP_KEY, fistkey);
startActivity(intent);
finish();
}
});
image_back.setOnClickListener(new View.OnClickListener() {
@ -177,6 +202,7 @@ public class KeyWordActivity extends AppCompatActivity {
}
});
mInterstitialAd.show(this);
finish();
}
}

View File

@ -2,129 +2,115 @@ package com.example.applock.activity;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.graphics.Typeface;
import android.graphics.PorterDuff;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.activity.EdgeToEdge;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;
import androidx.core.content.ContextCompat;
import androidx.viewpager2.widget.ViewPager2;
import androidx.work.WorkManager;
import com.example.applock.R;
import com.example.applock.allmanager.AppManager;
import com.example.applock.allmanager.LockAction;
import com.example.applock.allmanager.SoftLockPermission;
import com.example.applock.allmanager.SoftWarePerssionDialog;
import com.example.applock.lockadapter.ViewPaperAdapter;
import com.example.applock.lockadapter.FragmentAdapter;
import com.example.applock.roombase.SoftWareLockRoom;
import com.example.applock.value.MyAllValues;
import com.google.android.material.tabs.TabLayout;
import com.example.applock.allmanager.MySoftWareLockService;
import com.example.applock.listener.PermissionBtnListener;
import java.util.ArrayList;
import java.util.List;
import com.example.applock.fragment.SoftWareLockFragment;
import com.google.android.material.tabs.TabLayoutMediator;
public class MainActivity extends AppCompatActivity implements PermissionBtnListener{
private TextView textview_softlock;
private TextView reset_key;
private TextView version;
private TextView text_version;
private ViewPager viewPager;
private TabLayout tabLayout;
private EditText search_text;
private ImageView start_search;
private String search_name;
private ViewPager2 view_page_main;
private TabLayout main_tablelayout;
private String[] tabTitle;
private ImageView image_setting;
private WorkManager workManager;
private RelativeLayout reset_key_lay;
private DrawerLayout main_draw;
private SoftWarePerssionDialog dialog;
private boolean gotoit = false;
@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text_version = findViewById(R.id.text_version);
workManager = WorkManager.getInstance(this);
viewPager = findViewById(R.id.view_page_main);
main_draw = findViewById(R.id.main_draw);
tabLayout = findViewById(R.id.app_table);
view_page_main = findViewById(R.id.view_page_main);
main_tablelayout = findViewById(R.id.main_tablelayout);
image_setting = findViewById(R.id.image_set);
reset_key_lay = findViewById(R.id.reset_key_lay);
search_text = findViewById(R.id.main_search_text);
start_search = findViewById(R.id.main_start_search);
image_setting.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
main_draw.openDrawer(Gravity.RIGHT);
Intent intent = new Intent(MainActivity.this,SettingActivity.class);
startActivity(intent);
}
});
start_search.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (SoftLockPermission.isGetUsagePermission(MainActivity.this) && SoftLockPermission.isOverlays(MainActivity.this)){
search_name = search_text.getText().toString();
Intent intent =new Intent(MainActivity.this,SearchActivity.class);
intent.putExtra(MyAllValues.search_name,search_name);
startActivity(intent);
}else {
getPermission();
}
}
});
startService(new Intent(this,MySoftWareLockService.class));
initTableLayoutViewPaper();
setViewPaper();
getPermission();
reset_key_lay.setOnClickListener(new View.OnClickListener() {
}
private void setViewPaper() {
int tabIconColor = ContextCompat.getColor(MainActivity.this, R.color.table_unselect);
view_page_main.setAdapter(new FragmentAdapter(this));
TabLayoutMediator tabLayoutMediator = new TabLayoutMediator(main_tablelayout, view_page_main, new TabLayoutMediator.TabConfigurationStrategy() {
@Override
public void onClick(View v) {
gotoReset();
public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) {
switch (position) {
case 0:
tab.setIcon(R.drawable.system_src);
tab.getIcon().setColorFilter(tabIconColor, PorterDuff.Mode.SRC_IN);
tab.setText(R.string.system_text);
break;
case 1:
tab.setIcon(R.drawable.third_src);
tab.getIcon().setColorFilter(tabIconColor, PorterDuff.Mode.SRC_IN);
tab.setText(R.string.third_text);
break;
case 2:
tab.setIcon(R.drawable.locked_src);
tab.getIcon().setColorFilter(tabIconColor, PorterDuff.Mode.SRC_IN);
tab.setText(R.string.locked);
break;
}
}
});
String appVersions = AppManager.getAppVersions(this);
if (appVersions == null) {
text_version.setText("V1.0.0");
} else {
String format = String.format(getString(R.string.app_lock_version), appVersions);
text_version.setText(format);
}
tabLayoutMediator.attach();
}
private void gotoReset() {
Intent intent = new Intent(MainActivity.this, KeyWordActivity.class);
intent.putExtra(MyAllValues.PASS_KEY_WORD, 2);
startActivity(intent);
}
private void initTableLayoutViewPaper() {
tabTitle = new String[]{getString(R.string.unlocked), getString(R.string.locked)};
List<Fragment> fragmentList = new ArrayList<>();
fragmentList.add(SoftWareLockFragment.newInstancePage(false));
fragmentList.add(SoftWareLockFragment.newInstancePage(true));
ViewPaperAdapter viewPaperAdapter= new ViewPaperAdapter(getSupportFragmentManager(), fragmentList, tabTitle);
viewPager.setAdapter(viewPaperAdapter);
Log.d("-------","----tabtitle"+tabTitle);
tabLayout.setupWithViewPager(viewPager);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
SoftWareLockFragment fragment = (SoftWareLockFragment) fragmentList.get(position);
fragment.refresh();
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
private void getPermission() {
public void getPermission() {
boolean getUsagePermission = SoftLockPermission.isGetUsagePermission(this);
boolean overlays = SoftLockPermission.isOverlays(this);
if (getUsagePermission && overlays) {
// hideDialog();
} else {
if (dialog == null) {
dialog = new SoftWarePerssionDialog(this);
@ -145,7 +131,7 @@ public class MainActivity extends AppCompatActivity implements PermissionBtnList
SoftLockPermission.requestOverlays(this, MyAllValues.request_code_overlay);
}
@Override
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
@ -154,7 +140,6 @@ public class MainActivity extends AppCompatActivity implements PermissionBtnList
break;
}
}
private void hideDialog() {
if (SoftLockPermission.allAllowPermission(this)) {
if (dialog != null) {

View File

@ -0,0 +1,87 @@
package com.example.applock.activity;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.example.applock.R;
import com.example.applock.allmanager.MyWorker;
import com.example.applock.lockadapter.SearchAdapter;
import com.example.applock.roombase.AppDataBase;
import com.example.applock.roombase.AppEntity;
import com.example.applock.roombase.SoftWareLockRoom;
import com.example.applock.value.MyAllValues;
import com.example.applock.value.Mytool;
import java.util.List;
public class SearchActivity extends AppCompatActivity {
private RecyclerView recycle_search;
private EditText search_text;
private ImageView start_search;
private String put_name;
private ImageView search_back;
private String search_name;
private List<AppEntity> list;
@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search);
recycle_search = findViewById(R.id.recycle_search);
search_text = findViewById(R.id.search_text);
start_search = findViewById(R.id.start_search);
search_back = findViewById(R.id.search_back);
search_back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
getData();
start_search.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
search_name = search_text.getText().toString();
//setRecycle();
}
});
}
private void setRecycle() {
SoftWareLockRoom.RUNIO(new Runnable() {
@Override
public void run() {
list = AppDataBase.getDatabaseInstance().getAppEntityDao().QueryByInputName(search_name);
runOnUiThread(new Runnable() {
@Override
public void run() {
SearchAdapter searchAdapter = new SearchAdapter(SearchActivity.this,list);
recycle_search.setAdapter(searchAdapter);
recycle_search.setLayoutManager(new GridLayoutManager(SearchActivity.this,1));
}
});
}
});
}
private void getData() {
Intent intent = getIntent();
search_name = intent.getStringExtra(MyAllValues.search_name);
search_text.setText(search_name);
setRecycle();
}
}

View File

@ -0,0 +1,99 @@
package com.example.applock.activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import com.example.applock.R;
import com.example.applock.allmanager.AppManager;
import com.example.applock.value.MyAllValues;
public class SettingActivity extends AppCompatActivity {
private RelativeLayout reset_password;
private RelativeLayout app_share;
private RelativeLayout app_rate;
private RelativeLayout privacy_policy;
private TextView version_text;
private ImageView setting_back;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_setting);
gotofindview();
onMyClick();
}
private void gotofindview() {
setting_back = findViewById(R.id.setting_back);
reset_password = findViewById(R.id.reset_keycode);
app_share = findViewById(R.id.share_app);
app_rate = findViewById(R.id.app_rate);
privacy_policy = findViewById(R.id.privacy_policy);
version_text = findViewById(R.id.version_text);
String appVersions = AppManager.getAppVersions(this);
if (appVersions == null) {
version_text.setText("V1.0.0");
} else {
String format = String.format(getString(R.string.app_lock_version), appVersions);
version_text.setText(format);
}
}
private void onMyClick() {
setting_back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
reset_password.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(SettingActivity.this, KeyWordActivity.class);
intent.putExtra(MyAllValues.PASS_KEY_FROM,2);
intent.putExtra(MyAllValues.PASS_KEY_WORD,2);
startActivity(intent);
finish();
}
});
app_share.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("text/*");
intent.putExtra(Intent.EXTRA_TEXT,getString(R.string.app_path));
startActivity(Intent.createChooser(intent,"share"));
}
});
app_rate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String path = getString(R.string.app_path);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(path));
startActivity(intent);
}
});
privacy_policy.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String path = getString(R.string.privacy);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(path));
startActivity(intent);
}
});
}
}

View File

@ -38,10 +38,14 @@ public class AppManager {
}
AppEntity appEntity = new AppEntity();
appEntity.setApppackageName(appPackageName);
try {
ApplicationInfo applicationInfo = packageManager.getApplicationInfo(appPackageName,PackageManager.GET_UNINSTALLED_PACKAGES);
CharSequence applicationLabel = packageManager.getApplicationLabel(applicationInfo);//获取应用程序的名称
if ((applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0){
appEntity.setAppfrom(false);
}else {
appEntity.setAppfrom(true);
}
appEntity.setApplabel(applicationLabel.toString());
applist.add(appEntity);
} catch (PackageManager.NameNotFoundException e) {

View File

@ -66,7 +66,6 @@ public class LockAction {
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS |
WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
layParams = new WindowManager.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT, type, flag, PixelFormat.RGBA_8888);
}
public static LockAction getActionInstance(Context context) {
@ -81,8 +80,6 @@ public class LockAction {
if (lockActionViewBinding.getRoot().getWindowToken() == null) {
manager.addView(lockActionViewBinding.getRoot(), layParams);
}
}

View File

@ -0,0 +1,42 @@
package com.example.applock.allmanager
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.DialogFragment
import com.example.applock.databinding.MsgDialogBinding
class MsgDialog(private var message: String) : DialogFragment() {
private lateinit var vb: MsgDialogBinding
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
vb = MsgDialogBinding.inflate(layoutInflater)
dialog?.run {
setCanceledOnTouchOutside(true)
window?.run {
setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
}
}
vb.msg.text = message
initCLick()
return vb.root
}
private fun initCLick() {
vb.tvOk.setOnClickListener {
dismiss()
}
}
}

View File

@ -45,6 +45,7 @@ public class MyWorker extends JobIntentService {
lockAction.showLockView();
});
} else {
}
} else {
SoftWareLockRoom.onRunMain(() -> {

View File

@ -1,5 +1,6 @@
package com.example.applock.allmanager;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.Gravity;
@ -17,14 +18,15 @@ import com.example.applock.R;
import com.example.applock.activity.MainActivity;
import com.example.applock.databinding.DialogPermissionBinding;
import com.example.applock.listener.PermissionBtnListener;
import com.example.applock.value.MyAllValues;
public class SoftWarePerssionDialog extends DialogFragment {
private DialogPermissionBinding dialogPermissionBinding;
private PermissionBtnListener permissionBtnListener;
private Context mContext;
private Activity mContext;
public SoftWarePerssionDialog(Context context) {
public SoftWarePerssionDialog(Activity context) {
mContext = context;
}
@ -56,21 +58,19 @@ public class SoftWarePerssionDialog extends DialogFragment {
private void init() {
setCancelable(false);
Window window = getDialog().getWindow();
window.setBackgroundDrawableResource(R.color.nobackground);
window.getDecorView().setPadding(0, 0, 0, 0);
WindowManager.LayoutParams wlp = window.getAttributes();
wlp.gravity = Gravity.CENTER;
wlp.gravity = Gravity.BOTTOM;
wlp.width = WindowManager.LayoutParams.MATCH_PARENT;
wlp.height = WindowManager.LayoutParams.WRAP_CONTENT;
window.setAttributes(wlp);
setCancelable(true);
dialogPermissionBinding.tvUsageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!dialogPermissionBinding.tvUsageButton.isSelected()) {
permissionBtnListener.onClickUsage();
SoftLockPermission.requestUsage(mContext, MyAllValues.request_code_usage);
}
}
});
@ -79,10 +79,9 @@ public class SoftWarePerssionDialog extends DialogFragment {
@Override
public void onClick(View v) {
if (!dialogPermissionBinding.tvOverlayButton.isSelected()) {
permissionBtnListener.onClickOverlay();
SoftLockPermission.requestOverlays(mContext, MyAllValues.request_code_overlay);
}
}
});
}
}

View File

@ -32,6 +32,8 @@ public class SoftWareLockApplication extends Application {
public static List<ATInterstitial> ads;
public static SoftWareLockApplication app;
private static Context context;
public static int userOption =0;
public static int userOption2 =0;
@Override
public void onCreate() {

View File

@ -0,0 +1,60 @@
package com.example.applock.fragment;
import android.annotation.SuppressLint;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.example.applock.R;
import com.example.applock.lockadapter.LockedAdapter;
import com.example.applock.lockadapter.ThirdAdapter;
import com.example.applock.roombase.AppDataBase;
import com.example.applock.roombase.AppEntity;
import com.example.applock.roombase.SoftWareLockRoom;
import java.util.List;
public class LockedFragment extends Fragment {
private RecyclerView recyclerView_locked;
private boolean locked = true;
private List<AppEntity> list;
@SuppressLint("MissingInflatedId")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_locked, container, false);
recyclerView_locked = view.findViewById(R.id.recyclerView_locked);
setRecycleLocked();
return view;
}
private void setRecycleLocked() {
SoftWareLockRoom.RUNIO(new Runnable() {
@Override
public void run() {
list = AppDataBase.getDatabaseInstance().getAppEntityDao().queryApp(locked);
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
LockedAdapter lockedAdapter = new LockedAdapter(getActivity(),list);
recyclerView_locked.setAdapter(lockedAdapter);
recyclerView_locked.setLayoutManager(new GridLayoutManager(getActivity(),1));
}
});
}
});
}
@Override
public void onResume() {
super.onResume();
setRecycleLocked();
}
}

View File

@ -1,92 +0,0 @@
package com.example.applock.fragment;
import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Bundle;
import androidx.annotation.LongDef;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleEventObserver;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.example.applock.R;
import com.example.applock.allmanager.SuccessDialog;
import com.example.applock.listener.LockListener;
import com.example.applock.listener.SwitchListener;
import com.example.applock.lockadapter.SoftWareAdapter;
import com.example.applock.value.MyAllValues;
import com.example.applock.viewmodel.SoftWareLockVM;
import org.jetbrains.annotations.NotNull;
public class SoftWareLockFragment extends Fragment {
private SoftWareLockVM mViewModel;
private RecyclerView recyclerView;
private SoftWareAdapter softAdapter;
private boolean isLocked;
private SuccessDialog successDialog;
public static SoftWareLockFragment newInstancePage(boolean locked) {
SoftWareLockFragment softWareLockFragment = new SoftWareLockFragment();
Bundle bundle = new Bundle();
bundle.putBoolean(MyAllValues.FRAGMENT_TYPE,locked);
softWareLockFragment.setArguments(bundle);
return softWareLockFragment;
}
@SuppressLint("MissingInflatedId")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_soft_ware_lock, container, false);
recyclerView = view.findViewById(R.id.recyclerView_apps);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mViewModel = new ViewModelProvider(this).get(SoftWareLockVM.class);
Bundle arguments = getArguments();
if (arguments != null)
isLocked = getArguments().getBoolean(MyAllValues.FRAGMENT_TYPE);
mViewModel.UpDataAppLock(isLocked);
initAppRecycle();
mViewModel.getMutableLiveDataApp().observe(requireActivity(), list -> {
softAdapter.setEntityApps(list);
});
}
public void refresh() {
mViewModel.UpDataAppLock(isLocked);
}
private void initAppRecycle() {
softAdapter = new SoftWareAdapter(requireActivity(), isLocked);
softAdapter.setLockListener(new LockListener() {
@Override
public void onSwitch(String msg) {
successDialog = new SuccessDialog(requireContext(),msg);
successDialog.show(getChildFragmentManager(), "");
}
});
recyclerView.setLayoutManager(new LinearLayoutManager(requireContext()));
recyclerView.setAdapter(softAdapter);
}
}

View File

@ -0,0 +1,65 @@
package com.example.applock.fragment;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.graphics.Typeface;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.example.applock.R;
import com.example.applock.allmanager.MyWorker;
import com.example.applock.lockadapter.SystemAdapter;
import com.example.applock.roombase.AppDataBase;
import com.example.applock.roombase.AppEntity;
import com.example.applock.roombase.SoftWareLockRoom;
import com.example.applock.value.Mytool;
import java.util.List;
public class SystemFragment extends Fragment {
private RecyclerView recyclerView_apps;
private List<AppEntity> list;
private boolean system = true;
@SuppressLint("MissingInflatedId")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_system, container, false);
recyclerView_apps = view.findViewById(R.id.recyclerView_apps);
setRecycleSystem();
return view;
}
private void setRecycleSystem() {
SoftWareLockRoom.RUNIO(new Runnable() {
@Override
public void run() {
list = AppDataBase.getDatabaseInstance().getAppEntityDao().queryApplfrom(system);
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
SystemAdapter systemAdapter = new SystemAdapter(getActivity(),list);
recyclerView_apps.setAdapter(systemAdapter);
recyclerView_apps.setLayoutManager(new GridLayoutManager(getActivity(),1));
}
});
}
});
}
@Override
public void onResume() {
super.onResume();
setRecycleSystem();
}
}

View File

@ -0,0 +1,61 @@
package com.example.applock.fragment;
import android.annotation.SuppressLint;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.example.applock.R;
import com.example.applock.lockadapter.SystemAdapter;
import com.example.applock.lockadapter.ThirdAdapter;
import com.example.applock.roombase.AppDataBase;
import com.example.applock.roombase.AppEntity;
import com.example.applock.roombase.SoftWareLockRoom;
import java.util.List;
public class ThirdFragment extends Fragment {
private RecyclerView recyclerView_third;
private boolean third = false;
private List<AppEntity> list;
@SuppressLint("MissingInflatedId")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_third, container, false);
recyclerView_third = view.findViewById(R.id.recyclerView_third);
setRecycleThird();
return view;
}
private void setRecycleThird() {
SoftWareLockRoom.RUNIO(new Runnable() {
@Override
public void run() {
list = AppDataBase.getDatabaseInstance().getAppEntityDao().queryApplfrom(third);
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
ThirdAdapter thirdAdapter = new ThirdAdapter(getActivity(),list);
recyclerView_third.setAdapter(thirdAdapter);
recyclerView_third.setLayoutManager(new GridLayoutManager(getActivity(),1));
}
});
}
});
}
@Override
public void onResume() {
super.onResume();
setRecycleThird();
}
}

View File

@ -0,0 +1,34 @@
package com.example.applock.lockadapter;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.viewpager2.adapter.FragmentStateAdapter;
import com.example.applock.fragment.LockedFragment;
import com.example.applock.fragment.SystemFragment;
import com.example.applock.fragment.ThirdFragment;
public class FragmentAdapter extends FragmentStateAdapter {
public FragmentAdapter(@NonNull FragmentActivity fragmentActivity) {
super(fragmentActivity);
}
@NonNull
@Override
public Fragment createFragment(int position) {
switch (position){
case 0:
return new SystemFragment();
case 1:
return new ThirdFragment();
default:
return new LockedFragment();
}
}
@Override
public int getItemCount() {
return 3;
}
}

View File

@ -0,0 +1,87 @@
package com.example.applock.lockadapter;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.graphics.drawable.Drawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.FragmentActivity;
import androidx.recyclerview.widget.RecyclerView;
import com.example.applock.R;
import com.example.applock.allmanager.AppManager;
import com.example.applock.databinding.ItemAppBinding;
import com.example.applock.databinding.LockedAppBinding;
import com.example.applock.roombase.AppDataBase;
import com.example.applock.roombase.AppEntity;
import com.example.applock.roombase.SoftWareLockRoom;
import java.util.List;
public class LockedAdapter extends RecyclerView.Adapter<LockedAdapter.LockedVH> {
private FragmentActivity mycon;
private List<AppEntity> mylist;
private boolean lockedapp = true;
public LockedAdapter(FragmentActivity context,List<AppEntity> entities){
mylist = entities;
mycon = context;
}
@NonNull
@Override
public LockedVH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LockedAppBinding lockedAppBinding = LockedAppBinding.inflate(LayoutInflater.from(mycon),parent,false);
return new LockedVH(lockedAppBinding);
}
@Override
public void onBindViewHolder(@NonNull LockedVH holder, int position) {
AppEntity entityApp = mylist.get(position);
String label = entityApp.getApplabel();
holder.lockedbinding.lockedLabel.setText(label);
Drawable icon = AppManager.getIcon(mycon, entityApp.getApppackageName());
if (icon != null) {
holder.lockedbinding.lockedLogo.setImageDrawable(icon);
}
holder.lockedbinding.lockedLocked.setBackgroundResource(R.drawable.lock);
holder.lockedbinding.lockedLocked.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (lockedapp){
holder.lockedbinding.lockedLocked.setBackgroundResource(R.drawable.unlock);
lockedapp = false;
entityApp.setApplocked(false);
Toast.makeText(mycon,mycon.getText(R.string.unlock_success),Toast.LENGTH_SHORT).show();
}else {
holder.lockedbinding.lockedLocked.setBackgroundResource(R.drawable.lock);
lockedapp = true;
entityApp.setApplocked(true);
Toast.makeText(mycon,mycon.getText(R.string.lock_success),Toast.LENGTH_SHORT).show();
}
SoftWareLockRoom.RUNIO(new Runnable() {
@Override
public void run() {
AppDataBase.getDatabaseInstance().getAppEntityDao().updateData(entityApp);
}
});
}
});
}
@Override
public int getItemCount() {
return mylist.size();
}
public class LockedVH extends RecyclerView.ViewHolder {
private LockedAppBinding lockedbinding;
public LockedVH(@NonNull LockedAppBinding itemView) {
super(itemView.getRoot());
lockedbinding = itemView;
}
}
}

View File

@ -0,0 +1,91 @@
package com.example.applock.lockadapter;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.drawable.Drawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.recyclerview.widget.RecyclerView;
import com.example.applock.R;
import com.example.applock.allmanager.AppManager;
import com.example.applock.databinding.RecycleSearchViewBinding;
import com.example.applock.listener.LockListener;
import com.example.applock.roombase.AppDataBase;
import com.example.applock.roombase.AppEntity;
import com.example.applock.roombase.SoftWareLockRoom;
import java.util.List;
public class SearchAdapter extends RecyclerView.Adapter<SearchAdapter.SearchVH> {
private RecycleSearchViewBinding recycleSearchViewBinding;
private Context mycon;
private List<AppEntity> entityList;
private boolean searchlock;
public SearchAdapter(Context context, List<AppEntity> appEntities){
mycon = context;
entityList = appEntities;
}
@NonNull
@Override
public SearchVH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
recycleSearchViewBinding = RecycleSearchViewBinding.inflate(LayoutInflater.from(mycon),parent,false);
return new SearchVH(recycleSearchViewBinding);
}
@Override
public void onBindViewHolder(@NonNull SearchVH holder, @SuppressLint("RecyclerView") int position) {
AppEntity entityApp = entityList.get(position);
String label = entityApp.getApplabel();
holder.searchViewBinding.rearchAppLabel.setText(label);
Drawable icon = AppManager.getIcon(mycon, entityApp.getApppackageName());
if (icon != null) {
holder.searchViewBinding.rearchAppLogo.setImageDrawable(icon);
}
searchlock = entityApp.isApplocked();
if (searchlock){
holder.searchViewBinding.rearchAppLock.setSelected(true);
}else {
holder.searchViewBinding.rearchAppLock.setSelected(false);
}
holder.searchViewBinding.rearchAppLock.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
holder.searchViewBinding.rearchAppLock.setSelected(! holder.searchViewBinding.rearchAppLock.isSelected());
boolean select = holder.searchViewBinding.rearchAppLock.isSelected();
if (!select) {
entityApp.setApplocked(false);
Toast.makeText(mycon,"unlocked success",Toast.LENGTH_SHORT).show();
} else {
entityApp.setApplocked(true);
Toast.makeText(mycon,"locked success",Toast.LENGTH_SHORT).show();
}
SoftWareLockRoom.RUNIO(new Runnable() {
@Override
public void run() {
AppDataBase.getDatabaseInstance().getAppEntityDao().updateData(entityApp);
}
});
}
});
}
@Override
public int getItemCount() {
return entityList.size();
}
public class SearchVH extends RecyclerView.ViewHolder {
private RecycleSearchViewBinding searchViewBinding;
public SearchVH(RecycleSearchViewBinding recycleSearchViewBinding) {
super(recycleSearchViewBinding.getRoot());
searchViewBinding = recycleSearchViewBinding;
}
}
}

View File

@ -1,198 +0,0 @@
package com.example.applock.lockadapter;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.graphics.drawable.Drawable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.recyclerview.widget.RecyclerView;
import com.anythink.core.api.AdError;
import com.anythink.interstitial.api.ATInterstitial;
import com.example.applock.activity.KeyWordActivity;
import com.example.applock.allmanager.AppManager;
import com.example.applock.allmanager.Datamanager;
import com.example.applock.application.SoftWareLockApplication;
import com.example.applock.databinding.ItemAppBinding;
import com.example.applock.listener.InputKeyListener;
import com.example.applock.listener.LockListener;
import com.example.applock.listener.SwitchListener;
import com.example.applock.roombase.AppEntity;
import com.example.applock.roombase.SoftWareLockRoom;
import java.util.ArrayList;
import java.util.List;
import com.example.applock.R;
import com.example.applock.value.Adcallback;
import com.example.applock.value.Mytool;
public class SoftWareAdapter extends RecyclerView.Adapter<SoftWareAdapter.SoftWareViewHolder> {
private List<AppEntity> entityApp1 = new ArrayList<>();
private Activity mCon;
private boolean mLockList;
private boolean lock;
private LockListener lockListener;
private SwitchListener switchListener;
public static SharedPreferences keysp;
public static SharedPreferences.Editor keyeditor;
private int keyid;
private List<ATInterstitial> ads;
public SoftWareAdapter(Activity context, boolean lock) {
this.mCon = context;
this.mLockList = lock;
keysp = mCon.getSharedPreferences("key", Context.MODE_PRIVATE);
ads = SoftWareLockApplication.lodAd();
}
public void setLockListener(LockListener lockListener) {
this.lockListener = lockListener;
}
public void setSwitchListener(SwitchListener switchListener) {
this.switchListener = switchListener;
}
@NonNull
@Override
public SoftWareViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
ItemAppBinding itemAppBinding = ItemAppBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false);
return new SoftWareViewHolder(itemAppBinding);
}
@Override
public void onBindViewHolder(@NonNull SoftWareViewHolder holder, @SuppressLint("RecyclerView") int position) {
AppEntity entityApp = entityApp1.get(position);
String label = entityApp.getApplabel();
holder.itemAppBinding.appLabel.setText(label);
Drawable icon = AppManager.getIcon(mCon, entityApp.getApppackageName());
if (icon != null) {
holder.itemAppBinding.appLogo.setImageDrawable(icon);
}
holder.itemAppBinding.appLocked.setSelected(entityApp.isApplocked());
holder.itemAppBinding.appLocked.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
keyid = getkey();
keyid++;
keyeditor = keysp.edit();
if (keyid % 5 == 0) {
keyeditor.putInt("key", keyid);
keyeditor.apply();
ATInterstitial mInterstitialAd = Mytool.onCache(ads);
if (mInterstitialAd == null) {
initEvent(label, entityApp, position, holder.itemAppBinding.appLocked);
} else {
Mytool.setCallback(mInterstitialAd, new Adcallback() {
@Override
public void onShowFail(AdError ad) {
initEvent(label, entityApp, position, holder.itemAppBinding.appLocked);
}
@Override
public void onAdHidden() {
initEvent(label, entityApp, position, holder.itemAppBinding.appLocked);
}
});
mInterstitialAd.show(mCon);
}
} else {
keyeditor.putInt("key", keyid);
keyeditor.apply();
initEvent(label, entityApp, position, holder.itemAppBinding.appLocked);
}
}
});
}
private void initEvent(String label, AppEntity entityApp, int position, View view) {
Datamanager.setOpCount();
AlertDialog alertDialog2 = new AlertDialog.Builder(mCon)
.setTitle("Prompt")
.setMessage("Are you sure " + label + "?")
.setIcon(R.mipmap.intologo)
.setPositiveButton("Sure", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
boolean selected = view.isSelected();
view.setSelected(!selected);
boolean selectedNew = view.isSelected();
entityApp.setApplocked(selectedNew);
SoftWareLockRoom.updateRoom(entityApp);
String name2;
if (selectedNew) {
if (!mLockList) {
entityApp1.remove(entityApp);
notifyItemRemoved(position);
} else {
}
name2 = String.format(mCon.getString(R.string.lock_app), label);
setbacklistener(name2);
} else {
name2 = String.format(mCon.getString(R.string.unlock_app), label);
setbacklistener(name2);
if (mLockList) {
entityApp1.remove(entityApp);
notifyItemRemoved(position);
}
}
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
//holder.itemAppBinding.appLocked.setSelected(!selected);
}
})
.create();
alertDialog2.show();
}
public static int getkey() {
return keysp.getInt("key", 0);
}
private void setbacklistener(String softname) {
if (lockListener != null) {
lockListener.onSwitch(softname);
}
}
@Override
public int getItemCount() {
return entityApp1.size();
}
public void setEntityApps(List<AppEntity> apps) {
entityApp1 = apps;
notifyDataSetChanged();
}
static class SoftWareViewHolder extends RecyclerView.ViewHolder {
private ItemAppBinding itemAppBinding;
public SoftWareViewHolder(@NonNull ItemAppBinding itemView) {
super(itemView.getRoot());
itemAppBinding = itemView;
}
}
}

View File

@ -0,0 +1,168 @@
package com.example.applock.lockadapter;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.graphics.drawable.Drawable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.FragmentActivity;
import androidx.recyclerview.widget.RecyclerView;
import com.anythink.core.api.AdError;
import com.anythink.interstitial.api.ATInterstitial;
import com.example.applock.R;
import com.example.applock.allmanager.AppManager;
import com.example.applock.allmanager.MsgDialog;
import com.example.applock.allmanager.MyWorker;
import com.example.applock.allmanager.SoftLockPermission;
import com.example.applock.allmanager.SoftWarePerssionDialog;
import com.example.applock.application.SoftWareLockApplication;
import com.example.applock.databinding.ItemAppBinding;
import com.example.applock.listener.LockListener;
import com.example.applock.roombase.AppDataBase;
import com.example.applock.roombase.AppEntity;
import com.example.applock.roombase.SoftWareLockRoom;
import com.example.applock.value.Adcallback;
import com.example.applock.value.MyAllValues;
import com.example.applock.value.Mytool;
import com.pgl.ssdk.S;
import java.util.List;
import java.util.Objects;
public class SystemAdapter extends RecyclerView.Adapter<SystemAdapter.SystemVH> {
private FragmentActivity mycon;
public static SharedPreferences.Editor keyeditor;
private List<ATInterstitial> ads;
private List<AppEntity> mylist;
private LockListener lockListener;
private SoftWarePerssionDialog dialog;
private boolean mLockList;
private MsgDialog msgDialog;
public SystemAdapter(FragmentActivity context, List<AppEntity> entities){
mycon = context;
mylist = entities;
ads = SoftWareLockApplication.lodAd();
}
public void setLockListener(LockListener lockListener) {
this.lockListener = lockListener;
}
@NonNull
@Override
public SystemVH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
ItemAppBinding itemAppBinding = ItemAppBinding.inflate(LayoutInflater.from(mycon),parent,false);
return new SystemVH(itemAppBinding);
}
@Override
public void onBindViewHolder(@NonNull SystemVH holder, int position) {
AppEntity entityApp = mylist.get(position);
String label = entityApp.getApplabel();
holder.appBinding.appLabel.setText(label);
Drawable icon = AppManager.getIcon(mycon, entityApp.getApppackageName());
if (icon != null) {
holder.appBinding.appLogo.setImageDrawable(icon);
}
mLockList = entityApp.isApplocked();
if (mLockList){
holder.appBinding.appLocked.setSelected(true);
}else {
holder.appBinding.appLocked.setSelected(false);
}
holder.appBinding.appLocked.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (SoftLockPermission.allAllowPermission(mycon)){
holder.appBinding.appLocked.setSelected(!holder.appBinding.appLocked.isSelected());
if (SoftWareLockApplication.userOption % 5 == 0) {
ATInterstitial mInterstitialAd = Mytool.onCache(ads);
if (mInterstitialAd == null) {
Log.d("dhn111","-----mInterstitialAd=null---------------");
onAction(entityApp, holder.appBinding.appLocked,true);
// TODO: 2024/8/16
} else {
Mytool.setCallback(mInterstitialAd, new Adcallback() {
@Override
public void onShowFail(AdError ad) {
Log.d("dhn111","-----onShowFail---------------");
onAction(entityApp, holder.appBinding.appLocked,true);
}
@Override
public void onAdHidden() {
Log.d("dhn111","-----onAdHidden---------------");
onAction(entityApp, holder.appBinding.appLocked,true);
}
});
mInterstitialAd.show(mycon);
}
} else {
Log.d("dhn111","-----不显示广告---------------");
onAction(entityApp, holder.appBinding.appLocked,false);
}
SoftWareLockApplication.userOption++;
}else {
getDialogsuccess();
}
}
});
}
private void onAction(AppEntity entity,ImageView imageView,boolean showDailog){
String msg = "";
boolean selected = imageView.isSelected();
if (!selected) {
entity.setApplocked(false);
msg = entity.getApplabel() + "unlocked success";
} else {
entity.setApplocked(true);
msg = entity.getApplabel() + "locked success";
}
if(showDailog){
msgDialog = new MsgDialog(msg);
msgDialog.show(mycon.getSupportFragmentManager(), "");
}
SoftWareLockRoom.RUNIO(new Runnable() {
@Override
public void run() {
AppDataBase.getDatabaseInstance().getAppEntityDao().updateData(entity);
}
});
}
private void getDialogsuccess() {
boolean isSelect = SoftLockPermission.isGetUsagePermission(mycon);
boolean isEnable = SoftLockPermission.isOverlays(mycon);
if (isSelect && isEnable) {
//goApply();
} else {
if (dialog == null) {
dialog = new SoftWarePerssionDialog(mycon);
}
dialog.show(mycon.getSupportFragmentManager(), "");
}
}
@Override
public int getItemCount() {
return mylist.size();
}
public class SystemVH extends RecyclerView.ViewHolder {
private ItemAppBinding appBinding;
public SystemVH(@NonNull ItemAppBinding itemView) {
super(itemView.getRoot());
appBinding = itemView;
}
}
}

View File

@ -0,0 +1,161 @@
package com.example.applock.lockadapter;
import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.graphics.drawable.Drawable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.FragmentActivity;
import androidx.recyclerview.widget.RecyclerView;
import com.anythink.core.api.AdError;
import com.anythink.interstitial.api.ATInterstitial;
import com.example.applock.R;
import com.example.applock.allmanager.AppManager;
import com.example.applock.allmanager.MsgDialog;
import com.example.applock.allmanager.SoftLockPermission;
import com.example.applock.allmanager.SoftWarePerssionDialog;
import com.example.applock.application.SoftWareLockApplication;
import com.example.applock.databinding.ItemAppBinding;
import com.example.applock.listener.LockListener;
import com.example.applock.roombase.AppDataBase;
import com.example.applock.roombase.AppEntity;
import com.example.applock.roombase.SoftWareLockRoom;
import com.example.applock.value.Adcallback;
import com.example.applock.value.MyAllValues;
import com.example.applock.value.Mytool;
import java.util.List;
import java.util.Objects;
public class ThirdAdapter extends RecyclerView.Adapter<ThirdAdapter.ThirdVH> {
private FragmentActivity mycon;
private List<ATInterstitial> ads;
private List<AppEntity> mylist;
private MsgDialog msgDialog;
private SoftWarePerssionDialog dialog;
private boolean thirdlock;
public ThirdAdapter(FragmentActivity context,List<AppEntity> entities){
mylist = entities;
mycon = context;
ads = SoftWareLockApplication.lodAd();
}
@NonNull
@Override
public ThirdVH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
ItemAppBinding itemAppBinding = ItemAppBinding.inflate(LayoutInflater.from(mycon),parent,false);
return new ThirdVH(itemAppBinding);
}
@Override
public void onBindViewHolder(@NonNull ThirdVH holder, int position) {
AppEntity entityApp = mylist.get(position);
String label = entityApp.getApplabel();
holder.appBinding.appLabel.setText(label);
Drawable icon = AppManager.getIcon(mycon, entityApp.getApppackageName());
if (icon != null) {
holder.appBinding.appLogo.setImageDrawable(icon);
}
thirdlock = entityApp.isApplocked();
if (thirdlock){
holder.appBinding.appLocked.setSelected(true);
}else {
holder.appBinding.appLocked.setSelected(false);
}
holder.appBinding.appLocked.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (SoftLockPermission.allAllowPermission(mycon)){
holder.appBinding.appLocked.setSelected(!holder.appBinding.appLocked.isSelected());
if (SoftWareLockApplication.userOption2 % 5 == 0) {
ATInterstitial mInterstitialAd = Mytool.onCache(ads);
if (mInterstitialAd == null) {
Log.d("dhn111","-----mInterstitialAd=null---------------");
onAction(entityApp, holder.appBinding.appLocked,true);
// TODO: 2024/8/16
} else {
Mytool.setCallback(mInterstitialAd, new Adcallback() {
@Override
public void onShowFail(AdError ad) {
Log.d("dhn111","-----onShowFail---------------");
onAction(entityApp, holder.appBinding.appLocked,true);
}
@Override
public void onAdHidden() {
Log.d("dhn111","-----onAdHidden---------------");
onAction(entityApp, holder.appBinding.appLocked,true);
}
});
mInterstitialAd.show(mycon);
}
} else {
Log.d("dhn111","-----不显示广告---------------");
onAction(entityApp, holder.appBinding.appLocked,false);
}
SoftWareLockApplication.userOption2++;
}else {
getDialogsuccess();
}
}
});
}
private void onAction(AppEntity entity, ImageView imageView, boolean showDailog){
String msg = "";
boolean selected = imageView.isSelected();
if (!selected) {
entity.setApplocked(false);
msg = entity.getApplabel() + "unlocked success";
} else {
entity.setApplocked(true);
msg = entity.getApplabel() + "locked success";
}
if(showDailog){
msgDialog = new MsgDialog(msg);
msgDialog.show(mycon.getSupportFragmentManager(), "");
}
SoftWareLockRoom.RUNIO(new Runnable() {
@Override
public void run() {
AppDataBase.getDatabaseInstance().getAppEntityDao().updateData(entity);
}
});
}
private void getDialogsuccess() {
boolean isSelect = SoftLockPermission.isGetUsagePermission(mycon);
boolean isEnable = SoftLockPermission.isOverlays(mycon);
//Log.d("----eable","eable"+isEnable);
if (isSelect && isEnable) {
//goApply();
} else {
if (dialog == null) {
dialog = new SoftWarePerssionDialog(mycon);
}
dialog.show(mycon.getSupportFragmentManager(), "");
}
}
@Override
public int getItemCount() {
return mylist.size();
}
public class ThirdVH extends RecyclerView.ViewHolder {
private ItemAppBinding appBinding;
public ThirdVH(@NonNull ItemAppBinding itemView) {
super(itemView.getRoot());
appBinding = itemView;
}
}
}

View File

@ -22,6 +22,7 @@ public class TopAdapter extends RecyclerView.Adapter<TopAdapter.TopViewHolder> {
public void onBindViewHolder(@NonNull TopViewHolder holder, int position) {
if(position ==0){
holder.topKeyViewBinding.topView.setVisibility(View.GONE);
holder.topKeyViewBinding.topImageKey.setVisibility(View.VISIBLE);
}else {
holder.topKeyViewBinding.topView.setVisibility(View.VISIBLE);
holder.topKeyViewBinding.topImageKey.setVisibility(View.VISIBLE);

View File

@ -1,38 +0,0 @@
package com.example.applock.lockadapter;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import java.util.List;
public class ViewPaperAdapter extends FragmentPagerAdapter {
private List<Fragment> fmlist;
private String[] tabtitle;
public ViewPaperAdapter(FragmentManager supportFragmentManager, List<Fragment> fragmentList, String[] tabTitle) {
super(supportFragmentManager);
fmlist = fragmentList;
tabtitle = tabTitle;
}
@NonNull
@Override
public Fragment getItem(int position) {
return fmlist.get(position);
}
@Override
public int getCount() {
return fmlist.size();
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return tabtitle[position];
}
}

View File

@ -16,6 +16,7 @@ public class AppEntity {
private String applabel;
private boolean applocked;
private boolean appfrom;
public int getAppid() {
return appid;
@ -48,4 +49,12 @@ public class AppEntity {
public void setApplocked(boolean applocked) {
this.applocked = applocked;
}
public boolean isAppfrom() {
return appfrom;
}
public void setAppfrom(boolean appfrom) {
this.appfrom = appfrom;
}
}

View File

@ -12,7 +12,8 @@ public interface AppEntityDao {
@Query("select * from app_table_name where apppackageName=:apppackageName")
AppEntity queryByPagName(String apppackageName);
@Query("SELECT * FROM app_table_name WHERE apppackageName LIKE '%' || :apppackageName || '%' ")
List<AppEntity> QueryByInputName(String apppackageName);
@Update
void updateData(AppEntity entityApp);
@ -22,4 +23,6 @@ public interface AppEntityDao {
@Query("select * from app_table_name where applocked=:isLock")
List<AppEntity> queryApp(boolean isLock);
@Query("select * from app_table_name where appfrom=:appfrom")
List<AppEntity> queryApplfrom(boolean appfrom);
}

View File

@ -37,6 +37,9 @@ public class SoftWareLockRoom {
}
});
}
public static void RUNIO(Runnable runnable){
getMyUIServicePool().execute(runnable);
}
public static void insertRoom(Set<AppEntity> list) {
getMyUIServicePool().execute(new Runnable() {
@Override

View File

@ -13,6 +13,8 @@ public class MyAllValues {
public static String SP_KEY_COUNT = "sp_key_count";
public static final String APP_TABLE_NAME = "app_table_name";
public static String PASS_KEY_WORD = "pass_key_word";
public static String PASS_KEY_FROM = "pass_key_FROM";
public static String search_name = "search_name";
public static String PASS_WORD_TOP_KEY ="pass_word_top_key";
public static String FRAGMENT_TYPE = "fragment_type";
public static final int request_code_usage = 1;

View File

@ -66,6 +66,7 @@ public class Mytool {
}
public static ATInterstitial onCache(List<ATInterstitial> list) {
/*Collections.shuffle() 是 Java 中的一个方法用于随机打乱指定列表中的元素1*/
Collections.shuffle(list);
for (ATInterstitial ad : list) {
if (ad.isAdReady()) {
@ -95,7 +96,7 @@ public class Mytool {
}
});
ad.load();
// ad.load();
}
}
return adArrayList;

View File

@ -23,7 +23,5 @@ public class SoftWareLockVM extends ViewModel {
mutableLiveDataApp.setValue(list);
}
});
}
}

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/text" />
<corners android:radius="9dp" />
</shape>

View File

@ -0,0 +1,18 @@
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="343dp"
android:height="326dp"
android:viewportWidth="343"
android:viewportHeight="326"
>
<group>
<clip-path
android:pathData="M22 0H321C333.15 0 343 9.84974 343 22V304C343 316.15 333.15 326 321 326H22C9.84974 326 0 316.15 0 304V22C0 9.84974 9.84974 0 22 0Z"
/>
<path
android:pathData="M0 0V326H343V0"
android:fillColor="#ECF2FF"
/>
</group>
</vector>

View File

@ -4,6 +4,6 @@
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:fillColor="#FFffffff"
android:fillColor="#8F909A"
android:pathData="M431.5,1024c-12.8,0 -25.6,-4.9 -35.3,-14.6 -19.5,-19.5 -19.5,-51.2 0,-70.7l426.7,-426.7L396.2,85.3c-19.5,-19.5 -19.5,-51.2 0,-70.7 19.5,-19.5 51.2,-19.5 70.7,0L928.9,476.7c19.5,19.5 19.5,51.2 0,70.7l-462,462c-9.8,9.8 -22.6,14.6 -35.3,14.6z"/>
</vector>

View File

@ -0,0 +1,18 @@
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="343dp"
android:height="68dp"
android:viewportWidth="343"
android:viewportHeight="68"
>
<group>
<clip-path
android:pathData="M22 0H321C333.15 0 343 9.84974 343 22V46C343 58.1503 333.15 68 321 68H22C9.84974 68 0 58.1503 0 46V22C0 9.84974 9.84974 0 22 0Z"
/>
<path
android:pathData="M0 0V68H343V0"
android:fillColor="#ECF2FF"
/>
</group>
</vector>

View File

@ -1,12 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="64dp"
android:height="64dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M768,416h-32v-96c0,-59.6 -23.4,-115.8 -65.8,-158.2S571.6,96 512,96s-115.8,23.4 -158.2,65.8S288,260.4 288,320v96h-32c-70.4,0 -128,57.6 -128,128v256c0,70.4 57.6,128 128,128h512c70.4,0 128,-57.6 128,-128L896,544c0,-70.4 -57.6,-128 -128,-128zM352,320c0,-42.5 16.7,-82.6 47,-113s70.4,-47 113,-47 82.6,16.7 113,47 47,70.4 47,113v96L352,416v-96zM832,800c0,17 -6.7,33 -18.9,45.1S785,864 768,864L256,864c-17,0 -33,-6.7 -45.1,-18.9S192,817 192,800L192,544c0,-17 6.7,-33 18.9,-45.1S239,480 256,480h512c17,0 33,6.7 45.1,18.9S832,527 832,544v256z"
android:fillColor="@color/text"/>
<path
android:pathData="M512,576c-26.5,0 -48,21.5 -48,48 0,14.2 6.2,27 16,35.8V736c0,17.6 14.4,32 32,32s32,-14.4 32,-32v-76.2c9.8,-8.8 16,-21.6 16,-35.8 0,-26.5 -21.5,-48 -48,-48z"
android:fillColor="@color/text"/>
android:pathData="M9.366,10.06H6.672V6.917C6.672,6.233 6.808,5.595 7.078,5.004C7.349,4.412 7.723,3.892 8.201,3.443C8.678,2.994 9.241,2.641 9.89,2.385C10.538,2.128 11.247,2 12.017,2C12.701,2 13.36,2.128 13.994,2.385C14.629,2.641 15.191,2.994 15.683,3.443C16.175,3.892 16.567,4.412 16.859,5.004C17.151,5.595 17.297,6.233 17.297,6.917V10.06H14.71V7.516C14.71,6.618 14.461,5.923 13.962,5.431C13.464,4.94 12.786,4.694 11.931,4.694C11.162,4.694 10.542,4.94 10.071,5.431C9.601,5.923 9.366,6.618 9.366,7.516V10.06ZM18.58,11.342C18.965,11.342 19.296,11.481 19.574,11.759C19.852,12.037 19.991,12.368 19.991,12.753V19.381C19.991,19.765 19.923,20.125 19.788,20.46C19.653,20.795 19.467,21.087 19.232,21.337C18.997,21.586 18.719,21.782 18.398,21.925C18.078,22.067 17.725,22.138 17.34,22.138H6.544C6.159,22.138 5.81,22.067 5.496,21.925C5.183,21.782 4.916,21.593 4.695,21.358C4.474,21.123 4.303,20.848 4.182,20.535C4.061,20.221 4,19.886 4,19.53V12.753C4,12.368 4.135,12.037 4.406,11.759C4.677,11.481 5.005,11.342 5.39,11.342H6.672H9.366H14.71H17.297H18.58Z"
android:fillColor="#4584FF"/>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="18dp"
android:height="22dp"
android:viewportWidth="18"
android:viewportHeight="22">
<path
android:pathData="M8.131,20.979C8.672,21.3 9.328,21.3 9.87,20.979C12.012,19.707 17.371,16.024 17.371,11V5.061C17.371,4.227 16.854,3.481 16.074,3.188L9.702,0.799C9.25,0.629 8.751,0.629 8.298,0.799L1.927,3.188C1.146,3.481 0.629,4.227 0.629,5.061V11C0.629,16.024 5.988,19.707 8.131,20.979Z"
android:fillColor="#C4D8FF"/>
</vector>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/white" />
<corners android:radius="9dp" />
</shape>

View File

@ -0,0 +1,18 @@
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="335dp"
android:height="40dp"
android:viewportWidth="335"
android:viewportHeight="40"
>
<group>
<clip-path
android:pathData="M20 0H315C326.046 0 335 8.95431 335 20C335 31.0457 326.046 40 315 40H20C8.95431 40 0 31.0457 0 20C0 8.95431 8.95431 0 20 0Z"
/>
<path
android:pathData="M0 0V40H335V0"
android:fillColor="#F5F5F5"
/>
</group>
</vector>

View File

@ -0,0 +1,26 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M10.5,19C15.194,19 19,15.194 19,10.5C19,5.806 15.194,2 10.5,2C5.806,2 2,5.806 2,10.5C2,15.194 5.806,19 10.5,19Z"
android:strokeLineJoin="round"
android:strokeWidth="2"
android:fillColor="#00000000"
android:strokeColor="#1F252E"/>
<path
android:pathData="M13.329,7.172C12.605,6.448 11.605,6 10.5,6C9.396,6 8.396,6.448 7.672,7.172"
android:strokeLineJoin="round"
android:strokeWidth="2"
android:fillColor="#00000000"
android:strokeColor="#1F252E"
android:strokeLineCap="round"/>
<path
android:pathData="M16.611,16.611L20.854,20.854"
android:strokeLineJoin="round"
android:strokeWidth="2"
android:fillColor="#00000000"
android:strokeColor="#1F252E"
android:strokeLineCap="round"/>
</vector>

View File

@ -0,0 +1,18 @@
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="343dp"
android:height="56dp"
android:viewportWidth="343"
android:viewportHeight="56"
>
<group>
<clip-path
android:pathData="M12 0H331C337.627 0 343 5.37258 343 12V44C343 50.6274 337.627 56 331 56H12C5.37258 56 0 50.6274 0 44V12C0 5.37258 5.37258 0 12 0Z"
/>
<path
android:pathData="M0 0V56H343V0"
android:fillColor="#ECF2FF"
/>
</group>
</vector>

View File

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="25dp"
android:height="24dp"
android:viewportWidth="25"
android:viewportHeight="24">
<path
android:pathData="M19.786,15.961C19.727,15.636 19.767,15.302 19.9,15C20.027,14.704 20.237,14.452 20.506,14.274C20.774,14.097 21.088,14.001 21.41,14H21.5C22.03,14 22.539,13.789 22.914,13.414C23.289,13.039 23.5,12.53 23.5,12C23.5,11.47 23.289,10.961 22.914,10.586C22.539,10.211 22.03,10 21.5,10H21.33C21.008,9.999 20.694,9.903 20.426,9.726C20.157,9.548 19.947,9.296 19.82,9V8.92C19.687,8.618 19.647,8.284 19.706,7.959C19.765,7.635 19.92,7.336 20.15,7.1L20.21,7.04C20.396,6.854 20.544,6.634 20.644,6.391C20.745,6.148 20.797,5.888 20.797,5.625C20.797,5.362 20.745,5.102 20.644,4.859C20.544,4.616 20.396,4.396 20.21,4.21C20.024,4.024 19.804,3.877 19.561,3.776C19.318,3.675 19.058,3.623 18.795,3.623C18.532,3.623 18.272,3.675 18.029,3.776C17.786,3.877 17.566,4.024 17.38,4.21L17.32,4.27C17.084,4.501 16.785,4.655 16.461,4.714C16.136,4.773 15.802,4.733 15.5,4.6C15.204,4.473 14.952,4.263 14.774,3.994C14.597,3.726 14.501,3.412 14.5,3.09V3C14.5,2.47 14.289,1.961 13.914,1.586C13.539,1.211 13.03,1 12.5,1C11.97,1 11.461,1.211 11.086,1.586C10.711,1.961 10.5,2.47 10.5,3V3.17C10.499,3.492 10.403,3.806 10.226,4.074C10.048,4.343 9.796,4.553 9.5,4.68H9.42C9.118,4.813 8.784,4.853 8.459,4.794C8.135,4.735 7.836,4.581 7.6,4.35L7.54,4.29C7.354,4.104 7.134,3.957 6.891,3.856C6.648,3.755 6.388,3.703 6.125,3.703C5.862,3.703 5.602,3.755 5.359,3.856C5.116,3.957 4.896,4.104 4.71,4.29C4.524,4.476 4.377,4.696 4.276,4.939C4.175,5.182 4.123,5.442 4.123,5.705C4.123,5.968 4.175,6.228 4.276,6.471C4.377,6.714 4.524,6.934 4.71,7.12L4.77,7.18C5.001,7.416 5.155,7.715 5.214,8.039C5.273,8.364 5.233,8.698 5.1,9C4.986,9.311 4.781,9.58 4.511,9.773C4.242,9.965 3.921,10.072 3.59,10.08H3.5C2.97,10.08 2.461,10.291 2.086,10.666C1.711,11.041 1.5,11.55 1.5,12.08C1.5,12.61 1.711,13.119 2.086,13.494C2.461,13.869 2.97,14.08 3.5,14.08H3.67C3.992,14.081 4.306,14.177 4.574,14.354C4.843,14.532 5.053,14.784 5.18,15.08C5.313,15.382 5.353,15.716 5.294,16.041C5.235,16.365 5.081,16.664 4.85,16.9L4.79,16.96C4.604,17.146 4.457,17.366 4.356,17.609C4.255,17.852 4.203,18.112 4.203,18.375C4.203,18.638 4.255,18.898 4.356,19.141C4.457,19.384 4.604,19.604 4.79,19.79C4.976,19.976 5.196,20.124 5.439,20.224C5.682,20.325 5.942,20.377 6.205,20.377C6.468,20.377 6.728,20.325 6.971,20.224C7.214,20.124 7.434,19.976 7.62,19.79L7.68,19.73C7.916,19.5 8.215,19.345 8.539,19.286C8.864,19.227 9.198,19.267 9.5,19.4C9.811,19.514 10.08,19.719 10.273,19.989C10.465,20.258 10.572,20.579 10.58,20.91V21C10.58,21.53 10.791,22.039 11.166,22.414C11.541,22.789 12.05,23 12.58,23C13.11,23 13.619,22.789 13.994,22.414C14.369,22.039 14.58,21.53 14.58,21V20.83C14.581,20.508 14.677,20.194 14.854,19.926C15.032,19.657 15.284,19.447 15.58,19.32C15.882,19.187 16.216,19.147 16.541,19.206C16.865,19.265 17.164,19.42 17.4,19.65L17.46,19.71C17.646,19.896 17.866,20.044 18.109,20.144C18.352,20.245 18.612,20.297 18.875,20.297C19.138,20.297 19.398,20.245 19.641,20.144C19.884,20.044 20.104,19.896 20.29,19.71C20.476,19.524 20.624,19.304 20.724,19.061C20.825,18.818 20.877,18.558 20.877,18.295C20.877,18.032 20.825,17.772 20.724,17.529C20.624,17.286 20.476,17.066 20.29,16.88L20.23,16.82C20,16.584 19.845,16.285 19.786,15.961ZM15.5,12C15.5,13.657 14.157,15 12.5,15C10.843,15 9.5,13.657 9.5,12C9.5,10.343 10.843,9 12.5,9C14.157,9 15.5,10.343 15.5,12Z"
android:fillColor="#ffffff"
android:fillType="evenOdd"/>
</vector>

View File

@ -0,0 +1,18 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="19dp"
android:height="19dp"
android:viewportWidth="19"
android:viewportHeight="19">
<path
android:pathData="M6.467,0H1C0.448,0 0,0.448 0,1V6.467C0,7.019 0.448,7.467 1,7.467H6.467C7.019,7.467 7.467,7.019 7.467,6.467V1C7.467,0.448 7.019,0 6.467,0Z"
android:fillColor="#C4D8FF"/>
<path
android:pathData="M17.2,0H11.733C11.181,0 10.733,0.448 10.733,1V6.467C10.733,7.019 11.181,7.467 11.733,7.467H17.2C17.752,7.467 18.2,7.019 18.2,6.467V1C18.2,0.448 17.752,0 17.2,0Z"
android:fillColor="#C4D8FF"/>
<path
android:pathData="M17.2,10.733H11.733C11.181,10.733 10.733,11.181 10.733,11.733V17.2C10.733,17.752 11.181,18.2 11.733,18.2H17.2C17.752,18.2 18.2,17.752 18.2,17.2V11.733C18.2,11.181 17.752,10.733 17.2,10.733Z"
android:fillColor="#C4D8FF"/>
<path
android:pathData="M6.467,10.733H1C0.448,10.733 0,11.181 0,11.733V17.2C0,17.752 0.448,18.2 1,18.2H6.467C7.019,18.2 7.467,17.752 7.467,17.2V11.733C7.467,11.181 7.019,10.733 6.467,10.733Z"
android:fillColor="#C4D8FF"/>
</vector>

View File

@ -1,12 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="64dp"
android:height="64dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M768,416L352,416v-96c0,-42.5 16.7,-82.6 47,-113s70.4,-47 113,-47c37.9,0 74.7,13.6 103.6,38.4 28.7,24.5 47.9,58.2 54.1,95 3,17.4 19.5,29.2 36.9,26.2s29.2,-19.5 26.2,-36.9c-8.7,-51.5 -35.6,-98.7 -75.7,-132.9C616.7,115.1 565.1,96 512,96c-59.6,0 -115.8,23.4 -158.2,65.8S288,260.4 288,320v96h-32c-70.4,0 -128,57.6 -128,128v256c0,70.4 57.6,128 128,128h512c70.4,0 128,-57.6 128,-128L896,544c0,-70.4 -57.6,-128 -128,-128zM832,800c0,17 -6.7,33 -18.9,45.1S785,864 768,864L256,864c-17,0 -33,-6.7 -45.1,-18.9S192,817 192,800L192,544c0,-17 6.7,-33 18.9,-45.1S239,480 256,480h512c17,0 33,6.7 45.1,18.9S832,527 832,544v256z"
android:fillColor="#DCDCDC"/>
<path
android:pathData="M512,576c-26.5,0 -48,21.5 -48,48 0,14.2 6.2,27 16,35.8V736c0,17.6 14.4,32 32,32s32,-14.4 32,-32v-76.2c9.8,-8.8 16,-21.6 16,-35.8 0,-26.5 -21.5,-48 -48,-48z"
android:fillColor="#DCDCDC"/>
android:pathData="M16.981,2C17.661,2 18.316,2.128 18.946,2.383C19.577,2.638 20.136,2.988 20.625,3.434C21.114,3.881 21.507,4.401 21.805,4.996C22.102,5.591 22.251,6.229 22.251,6.909V10.054H19.68V7.504C19.68,6.611 19.428,5.917 18.925,5.421C18.422,4.926 17.746,4.678 16.896,4.678C16.131,4.678 15.514,4.926 15.047,5.421C14.579,5.917 14.346,6.611 14.346,7.504V10.097H11.668V6.909C11.668,6.229 11.803,5.591 12.072,4.996C12.341,4.401 12.713,3.881 13.187,3.434C13.662,2.988 14.222,2.638 14.866,2.383C15.511,2.128 16.216,2 16.981,2ZM16.938,16.493V18.321V19.319C16.938,19.702 16.871,20.063 16.736,20.403C16.602,20.743 16.417,21.034 16.184,21.275C15.95,21.515 15.674,21.707 15.355,21.848C15.036,21.99 14.686,22.061 14.303,22.061H3.55C3.168,22.061 2.82,21.994 2.509,21.859C2.197,21.724 1.928,21.54 1.701,21.306C1.475,21.073 1.301,20.8 1.181,20.488C1.06,20.177 1,19.844 1,19.49V12.732C1,12.335 1.138,12.002 1.414,11.733C1.691,11.464 2.013,11.329 2.381,11.329H15.536C15.932,11.329 16.265,11.464 16.534,11.733C16.804,12.002 16.938,12.335 16.938,12.732V16.493Z"
android:fillColor="#C4D8FF"/>
</vector>

View File

@ -18,7 +18,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name"
android:textSize="40sp"
android:textSize="34sp"
android:layout_below="@id/lock_logo"
android:layout_centerHorizontal="true"
android:textStyle="italic"

View File

@ -1,43 +1,66 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity.KeyWordActivity">
<ImageView
android:id="@+id/image_back"
android:layout_width="43dp"
android:layout_height="43dp"
android:src="@drawable/image_back"
android:padding="10dp"
android:layout_marginTop="10dp"
android:layout_marginStart="10dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<RelativeLayout
android:id="@+id/key_top"
android:layout_width="match_parent"
android:layout_height="60dp">
<ImageView
android:id="@+id/image_back"
android:layout_width="43dp"
android:layout_height="43dp"
android:src="@drawable/image_back"
android:padding="10dp"
android:layout_marginTop="10dp"
android:layout_marginStart="10dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/key_top_title"
android:layout_width="match_parent"
android:layout_height="43dp"
android:layout_toEndOf="@+id/image_back"
android:gravity="center"
android:visibility="gone"
android:textStyle="bold"
android:layout_centerVertical="true"
android:textSize="25sp"
android:text="@string/reset_key"
android:layout_marginStart="10dp"
/>
</RelativeLayout>
<ImageView
android:id="@+id/key_page_logo"
android:layout_width="83dp"
android:layout_height="83dp"
android:layout_marginTop="70dp"
android:layout_marginTop="20dp"
android:src="@mipmap/logo"
android:layout_below="@+id/key_top"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:layout_centerHorizontal="true"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/text_page"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="33dp"
android:layout_marginTop="16dp"
android:text="@string/set_key"
android:textColor="@color/black"
android:textSize="30sp"
android:layout_below="@+id/key_page_logo"
android:layout_centerHorizontal="true"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/key_page_logo" />
<com.example.applock.DrawView.InPutKeyView
android:id="@+id/input_view"
android:layout_below="@+id/text_page"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
@ -57,7 +80,4 @@
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/input_view" />
</androidx.constraintlayout.widget.ConstraintLayout>
</RelativeLayout>

View File

@ -1,141 +1,102 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_draw"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity.MainActivity">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
<RelativeLayout
android:id="@+id/top_lay"
android:layout_width="match_parent"
android:layout_height="70dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/imageView"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_gravity="center_vertical"
android:layout_marginStart="10dp"
app:srcCompat="@mipmap/logo" />
android:paddingRight="20dp">
<TextView
android:id="@+id/textview_softlock"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="9dp"
android:layout_gravity="center_vertical"
android:layout_centerVertical="true"
android:text="@string/app_name"
android:textColor="@color/text"
android:textColor="@color/black"
android:textSize="23sp"
android:layout_marginStart="16dp"
android:textStyle="bold|italic" />
<ImageView
android:id="@+id/image_set"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
app:srcCompat="@mipmap/setting" />
</LinearLayout>
<androidx.viewpager.widget.ViewPager
</RelativeLayout>
<RelativeLayout
android:id="@+id/search_layout"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_centerHorizontal="true"
android:layout_below="@+id/top_lay"
android:layout_marginStart="20dp"
android:layout_marginEnd="20dp"
android:layout_marginBottom="20dp"
android:background="@drawable/search_bg">
<EditText
android:id="@+id/main_search_text"
android:layout_width="250dp"
android:layout_marginStart="25dp"
android:background="@color/edit_text_bg"
android:layout_height="40dp"/>
<ImageView
android:id="@+id/main_start_search"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_alignParentEnd="true"
android:background="@drawable/search_image"
android:layout_centerVertical="true"
android:layout_marginEnd="20dp"/>
</RelativeLayout>
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/view_page_main"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/top_lay"
android:layout_above="@id/table"
android:layout_height="match_parent"
android:layout_below="@id/search_layout"
android:layout_above="@id/table_fram"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:id="@+id/table"
<FrameLayout
android:id="@+id/table_fram"
android:layout_width="340dp"
android:layout_alignParentBottom="true"
android:orientation="vertical">
<com.google.android.material.tabs.TabLayout
android:id="@+id/app_table"
android:layout_width="260dp"
android:layout_height="40dp"
android:layout_gravity="center"
app:tabSelectedTextColor="@color/white"
app:tabTextColor="@color/little_black"
android:background="@drawable/table_bg"
app:tabIndicatorHeight="0dp" />
</LinearLayout>
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="right"
android:background="@color/white">
<ImageView
android:id="@+id/right_logo"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_centerHorizontal="true"
android:layout_marginTop="50dp"
android:src="@mipmap/logo"/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/right_logo"
android:layout_marginTop="50dp">
<RelativeLayout
android:id="@+id/reset_key_lay"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@drawable/menu_background"
android:orientation="horizontal">
<TextView
android:id="@+id/reset_key"
android:layout_width="wrap_content"
android:layout_height="120dp">
<com.google.android.material.tabs.TabLayout
android:id="@+id/main_tablelayout"
android:layout_width="340dp"
android:layout_gravity="center_horizontal"
app:tabSelectedTextColor="@color/white"
app:tabIndicatorColor="@color/white"
android:paddingBottom="5dp"
android:background="@drawable/table_bg"
android:layout_height="70dp">
<com.google.android.material.tabs.TabItem
android:layout_width="37dp"
android:icon="@drawable/system_src"
android:text="@string/system_text"
android:layout_height="wrap_content">
</com.google.android.material.tabs.TabItem>
<com.google.android.material.tabs.TabItem
android:layout_width="37dp"
android:icon="@drawable/third_src"
android:text="@string/third_text"
android:layout_height="wrap_content" />
<com.google.android.material.tabs.TabItem
android:icon="@drawable/locked_src"
android:layout_height="wrap_content"
android:text="@string/re_key"
android:layout_centerVertical="true"
android:layout_marginStart="20dp"
android:textColor="@color/white"
android:textSize="20sp"
android:layout_gravity="center"/>
<ImageView
android:id="@+id/version_key"
android:layout_width="30dp"
android:layout_height="25dp"
android:layout_centerVertical="true"
android:layout_alignParentEnd="true"
android:src="@drawable/go_reset"/>
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_below="@id/reset_key_lay"
android:background="@drawable/menu_background"
android:layout_marginTop="60dp"
android:orientation="horizontal">
<TextView
android:id="@+id/version"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_version"
android:layout_centerVertical="true"
android:layout_marginStart="20dp"
android:textColor="@color/white"
android:textSize="20sp"
android:layout_gravity="center"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:textColor="@color/white"
android:layout_centerHorizontal="true"
android:textSize="18sp"
android:id="@+id/text_version"/>
</RelativeLayout>
</RelativeLayout>
android:text="@string/locked"
android:layout_width="37dp" />
</com.google.android.material.tabs.TabLayout>
</FrameLayout>
</RelativeLayout>
</androidx.drawerlayout.widget.DrawerLayout>
</RelativeLayout>

View File

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity.SearchActivity">
<ImageView
android:id="@+id/search_back"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginTop="37dp"
android:layout_marginStart="20dp"
android:background="@drawable/image_back"/>
<RelativeLayout
android:id="@+id/search_top"
android:layout_marginTop="20dp"
android:background="@drawable/search_bg"
android:layout_width="335dp"
android:layout_below="@id/search_back"
android:layout_centerHorizontal="true"
android:layout_height="40dp">
<EditText
android:id="@+id/search_text"
android:layout_width="250dp"
android:layout_marginStart="25dp"
android:background="@color/edit_text_bg"
android:layout_height="68dp"/>
<ImageView
android:id="@+id/start_search"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_alignParentEnd="true"
android:background="@drawable/search_image"
android:layout_centerVertical="true"
android:layout_marginEnd="10dp"/>
</RelativeLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycle_search"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/search_top"
android:layout_marginTop="20dp"/>
</RelativeLayout>

View File

@ -0,0 +1,144 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity.SettingActivity">
<RelativeLayout
android:id="@+id/setting_top"
android:layout_width="343dp"
android:layout_marginTop="20dp"
android:layout_centerHorizontal="true"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/setting_back"
android:layout_width="43dp"
android:layout_height="43dp"
android:src="@drawable/image_back"
android:layout_marginTop="10dp"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_centerVertical="true"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/setting_title"
android:layout_width="match_parent"
android:layout_height="43dp"
android:layout_toRightOf="@+id/setting_back"
android:layout_centerVertical="true"
android:gravity="center"
android:textSize="25sp"
android:textStyle="bold"
android:text="@string/setting"
/>
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_below="@+id/setting_top"
android:paddingLeft="30dp"
android:paddingRight="30dp"
android:layout_height="match_parent">
<RelativeLayout
android:id="@+id/reset_keycode"
android:layout_width="343dp"
android:layout_height="56dp"
android:layout_marginTop="16dp"
android:background="@drawable/setting_view_bg"
android:padding="16dp"
android:layout_centerHorizontal="true">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/change_password"
android:textSize="17sp" />
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:background="@drawable/go_reset"
android:layout_alignParentEnd="true"/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/share_app"
android:layout_below="@+id/reset_keycode"
android:layout_width="343dp"
android:layout_height="56dp"
android:layout_marginTop="16dp"
android:background="@drawable/setting_view_bg"
android:padding="16dp"
android:layout_centerHorizontal="true">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_share"
android:textSize="17sp" />
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:background="@drawable/go_reset"
android:layout_alignParentEnd="true"/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/app_rate"
android:layout_below="@+id/share_app"
android:layout_width="343dp"
android:layout_height="56dp"
android:layout_marginTop="16dp"
android:background="@drawable/setting_view_bg"
android:padding="16dp"
android:layout_centerHorizontal="true">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_rate"
android:textSize="17sp" />
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:background="@drawable/go_reset"
android:layout_alignParentEnd="true"/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/privacy_policy"
android:layout_below="@+id/app_rate"
android:layout_width="343dp"
android:layout_height="56dp"
android:layout_marginTop="16dp"
android:background="@drawable/setting_view_bg"
android:padding="16dp"
android:layout_centerHorizontal="true">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Privacy_Policy"
android:textSize="17sp" />
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:background="@drawable/go_reset"
android:layout_alignParentEnd="true"/>
</RelativeLayout>
<RelativeLayout
android:layout_below="@+id/privacy_policy"
android:layout_width="343dp"
android:layout_height="56dp"
android:layout_marginTop="16dp"
android:background="@drawable/setting_view_bg"
android:padding="16dp"
android:layout_centerHorizontal="true">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_version"
android:textSize="17sp" />
<TextView
android:id="@+id/version_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="17sp"
android:layout_alignParentEnd="true" />
</RelativeLayout>
</RelativeLayout>
</RelativeLayout>

View File

@ -1,122 +1,134 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:context=".activity.MainActivity">
android:layout_width="328dp"
app:cardCornerRadius="24dp"
android:layout_gravity="center_horizontal"
tools:context=".activity.MainActivity"
android:background="@color/dialog_bg"
android:layout_height="wrap_content">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginEnd="20dp"
android:background="@drawable/bg_permiasion_dialog"
android:padding="20dp">
<ImageView
android:layout_width="64dp"
android:layout_height="64dp"
android:id="@+id/logo"
android:layout_centerHorizontal="true"
android:src="@mipmap/logo"/>
<TextView
android:id="@+id/title"
android:layout_width="200dp"
android:id="@+id/title1"
android:layout_width="230dp"
android:layout_height="wrap_content"
android:layout_below="@id/logo"
android:layout_marginTop="24dp"
android:layout_centerHorizontal="true"
android:text="@string/permission_required"
android:textColor="@color/black"
android:textStyle="bold"
android:textSize="20sp" />
<LinearLayout
android:id="@+id/top"
android:layout_width="match_parent"
<TextView
android:id="@+id/title2"
android:layout_width="230dp"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_centerHorizontal="true"
android:layout_below="@+id/title"
android:layout_marginTop="30dp">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@mipmap/show"
android:layout_gravity="center"/>
android:layout_below="@+id/title1"
android:text="@string/permission_text"
android:textStyle="bold"
android:textSize="20sp"
android:layout_centerHorizontal="true"/>
<androidx.cardview.widget.CardView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_below="@+id/title2"
android:layout_marginTop="30dp"
app:cardCornerRadius="24dp">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/tv_usage_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/show"
android:textColor="@color/black"
android:textSize="20sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="@string/show_detail"/>
<TextView
android:id="@+id/tv_overlay_button"
android:layout_width="150dp"
android:layout_height="40dp"
android:paddingStart="8dp"
android:layout_marginTop="10dp"
android:paddingEnd="8dp"
android:background="@drawable/selector_permssion"
android:gravity="center"
android:text="@string/permit"
android:textSize="16dp"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/bottom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_centerHorizontal="true"
android:layout_below="@+id/top"
android:layout_marginTop="30dp">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@mipmap/detect"
android:layout_gravity="center"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<TextView
android:id="@+id/tv_overlay_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/detect"
android:textColor="@color/black"
android:background="@color/dialog_bg"
android:paddingRight="16dp"
android:paddingLeft="16dp"
android:orientation="vertical">
<LinearLayout
android:id="@+id/bottom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="20dp">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@mipmap/detect"
android:layout_gravity="center"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<TextView
android:id="@+id/tv_overlay_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/detect"
android:textColor="@color/black"
android:textSize="20sp" />
<TextView
android:layout_width="wrap_content"
android:textSize="20sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="@string/detect_detail"/>
<TextView
android:id="@+id/tv_usage_button"
android:layout_width="150dp"
android:layout_height="40dp"
android:paddingStart="8dp"
android:layout_marginTop="10dp"
android:paddingEnd="8dp"
android:gravity="center"
android:textSize="16dp"
android:background="@drawable/selector_permssion"
android:text="@string/permit" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/top"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="@string/detect_detail"/>
<TextView
android:id="@+id/tv_usage_button"
android:layout_width="150dp"
android:layout_height="40dp"
android:paddingStart="8dp"
android:layout_marginTop="10dp"
android:paddingEnd="8dp"
android:gravity="center"
android:textSize="16dp"
android:background="@drawable/selector_permssion"
android:text="@string/permit" />
android:orientation="horizontal"
android:layout_marginBottom="20dp"
android:layout_marginTop="20dp">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@mipmap/show"
android:layout_gravity="center"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/tv_usage_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/show"
android:textColor="@color/black"
android:textSize="20sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="@string/show_detail"/>
<TextView
android:id="@+id/tv_overlay_button"
android:layout_width="150dp"
android:layout_height="40dp"
android:paddingStart="8dp"
android:layout_marginTop="10dp"
android:paddingEnd="8dp"
android:background="@drawable/selector_permssion"
android:gravity="center"
android:text="@string/permit"
android:textSize="16dp"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
</RelativeLayout>
</FrameLayout>
</androidx.cardview.widget.CardView>

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".fragment.LockedFragment">
<!-- TODO: Update blank fragment layout -->
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView_locked"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".fragment.SystemFragment">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView_apps"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>

View File

@ -3,10 +3,12 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".fragment.SoftWareLockFragment">
tools:context=".fragment.ThirdFragment">
<!-- TODO: Update blank fragment layout -->
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView_apps"
android:id="@+id/recyclerView_third"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>

View File

@ -1,41 +1,40 @@
<?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="65dp"
android:paddingStart="28dp"
android:paddingEnd="28dp">
<ImageView
android:id="@+id/app_logo"
android:layout_width="38dp"
android:layout_height="38dp"
android:layout_centerVertical="true" />
<TextView
android:id="@+id/app_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="28dp"
android:layout_toEndOf="@id/app_logo"
android:text="@string/overlay"
android:textColor="@color/black"
android:textSize="15sp" />
<ImageView
android:id="@+id/app_locked"
android:layout_width="27dp"
android:layout_height="27dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginEnd="16dp"
android:src="@drawable/selector_app_lock" />
<View
android:paddingRight="16dp"
android:paddingLeft="16dp"
android:layout_marginTop="12dp"
android:layout_height="68dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_alignParentBottom="true"
android:background="@color/white" />
android:background="@drawable/item_app_bg"
android:paddingLeft="12dp"
android:paddingRight="12dp"
android:layout_height="68dp">
<ImageView
android:id="@+id/app_logo"
android:layout_width="38dp"
android:layout_height="38dp"
android:layout_centerVertical="true" />
<TextView
android:id="@+id/app_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="28dp"
android:layout_toEndOf="@id/app_logo"
android:text="@string/overlay"
android:textColor="@color/black"
android:textSize="15sp" />
<ImageView
android:id="@+id/app_locked"
android:layout_width="27dp"
android:layout_height="27dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginEnd="16dp"
android:focusableInTouchMode="false"
android:src="@drawable/selector_app_lock" />
</RelativeLayout>
</RelativeLayout>

View File

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:paddingRight="16dp"
android:paddingLeft="16dp"
android:layout_marginTop="12dp"
android:layout_height="68dp">
<RelativeLayout
android:layout_width="match_parent"
android:background="@drawable/item_app_bg"
android:paddingLeft="12dp"
android:paddingRight="12dp"
android:layout_height="68dp">
<ImageView
android:id="@+id/locked_logo"
android:layout_width="38dp"
android:layout_height="38dp"
android:layout_centerVertical="true" />
<TextView
android:id="@+id/locked_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="28dp"
android:layout_toEndOf="@id/locked_logo"
android:text="@string/overlay"
android:textColor="@color/black"
android:textSize="15sp" />
<ImageView
android:id="@+id/locked_locked"
android:layout_width="27dp"
android:layout_height="27dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginEnd="16dp"
android:focusableInTouchMode="false"
android:background="@drawable/unlock" />
</RelativeLayout>
</RelativeLayout>

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="27dp"
android:layout_marginEnd="27dp"
android:gravity="center"
android:background="@drawable/msg_dialog_bg"
android:orientation="vertical"
android:padding="10dp">
<TextView
android:id="@+id/msg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="@string/app_name"
android:gravity="center"
android:textColor="@color/black"
android:textSize="17sp" />
<TextView
android:id="@+id/tv_ok"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginTop="29dp"
android:background="@drawable/btn_bg"
android:gravity="center"
android:padding="12dp"
android:text="@string/ok"
android:textColor="@color/white"
android:textSize="16sp" />
</LinearLayout>
</FrameLayout>

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:paddingRight="16dp"
android:paddingLeft="16dp"
android:layout_marginTop="12dp"
android:layout_height="68dp">
<RelativeLayout
android:layout_width="match_parent"
android:background="@drawable/item_app_bg"
android:paddingLeft="12dp"
android:paddingRight="12dp"
android:layout_height="68dp">
<ImageView
android:id="@+id/rearch_app_logo"
android:layout_width="38dp"
android:layout_height="38dp"
android:layout_centerVertical="true" />
<TextView
android:id="@+id/rearch_app_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="28dp"
android:layout_toEndOf="@id/rearch_app_logo"
android:textColor="@color/black"
android:textSize="15sp" />
<ImageView
android:id="@+id/rearch_app_lock"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginEnd="16dp"
android:src="@drawable/selector_app_lock" />
</RelativeLayout>
</RelativeLayout>

View File

@ -11,6 +11,4 @@
android:layout_height="wrap_content"
android:id="@+id/top_image_key"
android:src="@drawable/top_image_key"/>
</LinearLayout>

View File

@ -6,4 +6,8 @@
<color name="text">#4584FF</color>
<color name="lock_main">#77A1F3</color>
<color name="nobackground">#00000000</color>
<color name="dialog_bg">#ECF2FF</color>
<color name="edit_text_bg">#F5F5F5</color>
<color name="table_unselect">#C4D8FF</color>
<color name="table_bg">#4584FF</color>
</resources>

View File

@ -12,7 +12,8 @@
<string name="app_lock_version">V%s</string>
<!-- TODO: Remove or change this placeholder text -->
<string name="hello_blank_fragment">Hello blank fragment</string>
<string name="permission_required">Permissions. For normal use App Lock, please grant the following</string>
<string name="permission_required">Permissions</string>
<string name="permission_text">For normal use App Lock, please grant the following</string>
<string name="show">Show Over Other Apps</string>
<string name="show_detail">Allow lock screen to show over other apps.</string>
<string name="detect_detail">Permit to detect which app is launched bygranting access to usage statistics</string>
@ -21,7 +22,6 @@
<string name="lock_app">The %s is Locked</string>
<string name="unlock_app">The %s is Unlocked</string>
<string name="not_key">Sorry,The password is not right!</string>
<string name="reset_my_key">reset your key</string>
<string name="save">Save</string>
<string name="ok">OK</string>
<string name="no">NO</string>
@ -29,4 +29,16 @@
<string name="locked">Locked</string>
<string name="reset_success">Reset successful</string>
<string name="unlocked">Unlocked</string>
<string name="reset_key">Reset password</string>
<string name="change_password">Change Password</string>
<string name="setting">Setting</string>
<string name="Privacy_Policy">Privacy Policy</string>
<string name="app_rate">Rate Us</string>
<string name="app_path">https://play.google.com/store/apps/details?id=com.soft.ware.lock.hd</string>
<string name="app_share">Share App</string>
<string name="privacy">https://miniwallpaper.bitbucket.io/privacy.html</string>
<string name="system_text">System</string>
<string name="third_text">Third</string>
<string name="lock_success">Lock Successful</string>
<string name="unlock_success">Unlock Successful</string>
</resources>