更新UI 未更新广告 1.0.1(2)

This commit is contained in:
zhouzhijia 2024-08-09 16:10:31 +08:00
parent 104cb9e63f
commit 8bfb74f7bc
26 changed files with 887 additions and 79 deletions

View File

@ -16,7 +16,12 @@
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/AppTheme" android:theme="@style/AppTheme"
tools:targetApi="31"> tools:targetApi="31">
<activity
android:name=".activity.ShowKeyboardActivity"
android:exported="false" />
<activity
android:name=".activity.WebActivity"
android:exported="false" />
<activity <activity
android:name=".activity.SplashActivity" android:name=".activity.SplashActivity"
android:exported="true"> android:exported="true">

View File

@ -0,0 +1,121 @@
<!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> June 26, 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</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

@ -29,10 +29,12 @@ public class CoolKeyboardSkin extends Application {
private static Context context; private static Context context;
public static List<Mydata> mydataList; public static List<Mydata> mydataList;
private static boolean insert; private static boolean insert;
private static boolean init;
private SharedPreferences sp; private SharedPreferences sp;
private SharedPreferences.Editor editor; private SharedPreferences.Editor editor;
private static final String PRE_NAME = "Mypre"; public static final String PRE_NAME = "Mypre";
private static final String PRE_KEY = "isinsert"; public static final String PRE_KEY = "isinsert";
public static final String PRE_KEY_INIT = "isinit";
public static List<Otherdata> alllist = new ArrayList<>(); public static List<Otherdata> alllist = new ArrayList<>();
public static List<Otherdata> lovelist = new ArrayList<>(); public static List<Otherdata> lovelist = new ArrayList<>();
public static List<Otherdata> coollist = new ArrayList<>(); public static List<Otherdata> coollist = new ArrayList<>();
@ -128,9 +130,27 @@ public class CoolKeyboardSkin extends Application {
initData(); initData();
initKey();
} }
private void initKey() {
sp = getSharedPreferences(PRE_NAME, MODE_PRIVATE);
init = sp.getBoolean(PRE_KEY, false);
if (!init) {
Mytool.runIO(new Runnable() {
@Override
public void run() {
init = true;
editor = sp.edit();
editor.putBoolean(PRE_KEY, init);
editor.apply();
}
});
}
}
private void initSdk() { private void initSdk() {
// ATSDK.integrationChecking(context); // ATSDK.integrationChecking(context);

View File

@ -1,6 +1,8 @@
package com.key.coolkeyboard.activity; package com.key.coolkeyboard.activity;
import androidx.activity.EdgeToEdge; import androidx.activity.EdgeToEdge;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets; import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat; import androidx.core.view.ViewCompat;
@ -9,23 +11,62 @@ import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager; import androidx.viewpager.widget.ViewPager;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.Dialog;
import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle; import android.os.Bundle;
import android.provider.Settings;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
import android.widget.ImageView;
import android.widget.Toast;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.DataSource;
import com.bumptech.glide.load.engine.GlideException;
import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.CustomTarget;
import com.bumptech.glide.request.target.Target;
import com.bumptech.glide.request.transition.Transition;
import com.google.android.material.tabs.TabLayout; import com.google.android.material.tabs.TabLayout;
import com.key.coolkeyboard.CoolKeyboardSkin;
import com.key.coolkeyboard.R; import com.key.coolkeyboard.R;
import com.key.coolkeyboard.adapter.PageAdapter; import com.key.coolkeyboard.adapter.PageAdapter;
import com.key.coolkeyboard.data.MydataBase;
import com.key.coolkeyboard.data.Otherdata;
import com.key.coolkeyboard.databinding.ActivityMainBinding; import com.key.coolkeyboard.databinding.ActivityMainBinding;
import com.key.coolkeyboard.fragment.LikeFragment; import com.key.coolkeyboard.fragment.LikeFragment;
import com.key.coolkeyboard.fragment.MainFragment; import com.key.coolkeyboard.fragment.MainFragment;
import com.key.coolkeyboard.tool.Mytool;
import com.key.coolkeyboard.tool.StaticValue;
import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import java.util.List;
public class MainActivity extends AppCompatActivity { public class MainActivity extends AppCompatActivity {
ActivityMainBinding binding; ActivityMainBinding binding;
private List<Fragment> list = new ArrayList<>(); private List<Fragment> list = new ArrayList<>();
private Dialog dialog;
private Dialog toastDialog;
private BroadcastReceiver broadcastReceiver;
private static final InputMethodManager methodManager = (InputMethodManager) CoolKeyboardSkin.app.getSystemService(Context.INPUT_METHOD_SERVICE);
private Otherdata otherdata;
private String unzipPath;
@SuppressLint("MissingInflatedId") @SuppressLint("MissingInflatedId")
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -40,18 +81,187 @@ public class MainActivity extends AppCompatActivity {
return insets; return insets;
}); });
;
initData(); initData();
showDg();
}
private void showDg() {
dialog = new Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.dialog);
dialog.setCancelable(true);
dialog.getWindow().setGravity(Gravity.BOTTOM);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.copyFrom(dialog.getWindow().getAttributes());
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
// dialog.setCanceledOnTouchOutside(false);
broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
updateDialogContent();
}
};
registerReceiver(broadcastReceiver, new IntentFilter(Intent.ACTION_INPUT_METHOD_CHANGED));
dialog.findViewById(R.id.step1).setOnClickListener(v -> {
Intent intent = new Intent(Settings.ACTION_INPUT_METHOD_SETTINGS);
startActivity(intent);
});
dialog.findViewById(R.id.step2).setOnClickListener(v -> methodManager.showInputMethodPicker());
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
Mytool.runIO(new Runnable() {
@Override
public void run() {
List<Otherdata> list1 = MydataBase.getInstance().myDAO().getAll();
otherdata = list1.get(137);
if (toastDialog == null) {
runOnUiThread(new Runnable() {
@Override
public void run() {
showToastDg();
}
});
}
}
});
}
});
dialog.show();
dialog.getWindow().setAttributes(lp);
updateDialogContent();
}
private void updateDialogContent() {
boolean step1 = Mytool.isStep1();
boolean step2 = Mytool.isStep2();
dialog.findViewById(R.id.step1).setSelected(step1);
dialog.findViewById(R.id.step2).setSelected(step2);
updateDialogImages();
}
private void showToastDg() {
toastDialog = new Dialog(this);
toastDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
toastDialog.setContentView(R.layout.toast_dialog);
toastDialog.setCancelable(true);
// toastDialog.getWindow().setGravity(Gravity.BOTTOM);
toastDialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.copyFrom(toastDialog.getWindow().getAttributes());
lp.width = WindowManager.LayoutParams.WRAP_CONTENT;
lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
ImageView toastImageView = toastDialog.findViewById(R.id.toast_dialog_image);
Glide.with(MainActivity.this)
.asBitmap()
.load(otherdata.getPreview())
.placeholder(R.mipmap.logo)
.into(new CustomTarget<Bitmap>() {
@Override
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
toastImageView.setImageBitmap(resource);
}
@Override
public void onLoadCleared(@Nullable Drawable placeholder) {
}
});
toastDialog.setCanceledOnTouchOutside(false);
toastDialog.findViewById(R.id.toast_dialog_apply).setOnClickListener(v -> {
downLoad();
});
toastDialog.findViewById(R.id.toast_dialog_cancel).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// if (toastDialog != null && toastDialog.isShowing()) {
toastDialog.dismiss();
// }
}
});
File cacheDir = this.getCacheDir();
unzipPath = cacheDir + "/" + otherdata.getTitle();
toastDialog.show();
toastDialog.getWindow().setAttributes(lp);
}
private void downLoad() {
if (!Mytool.isStep1() || !Mytool.isStep2()) {
// Toast.makeText(this, getString(R.string.text_hint), Toast.LENGTH_SHORT).show();
Intent intent = new Intent(this, SettingActivity.class);
startActivity(intent);
} else {
Mytool.donwnZip(this, otherdata.getZipUrl(), (successful, resource) -> {
if (successful) {
Mytool.unZip(this, unzipPath, resource, (successful1, resDirPath) -> {
if (successful1) {
StaticValue.PATH = resDirPath;
otherdata.setDownloaded(true);
Mytool.runIO(new Runnable() {
@Override
public void run() {
MydataBase.getInstance().myDAO().update(otherdata);
}
});
showKey();
} else {
Toast.makeText(MainActivity.this, getString(R.string.text_zip_failed), Toast.LENGTH_SHORT).show();
}
});
} else {
Toast.makeText(MainActivity.this, getString(R.string.text_download_failed), Toast.LENGTH_SHORT).show();
}
});
}
}
private void showKey() {
Toast.makeText(MainActivity.this, getString(R.string.set_successful), Toast.LENGTH_SHORT).show();
Intent intent = new Intent(this, ShowKeyboardActivity.class);
startActivity(intent);
}
private void hideDg() {
if (dialog != null && dialog.isShowing()) {
dialog.dismiss();
}
}
private void updateDialogImages() {
if (Mytool.isStep2()) {
dialog.findViewById(R.id.step2_image).setVisibility(View.VISIBLE);
} else {
dialog.findViewById(R.id.step2_image).setVisibility(View.GONE);
}
if (Mytool.isStep1()) {
dialog.findViewById(R.id.step1_image).setVisibility(View.VISIBLE);
} else {
dialog.findViewById(R.id.step1_image).setVisibility(View.GONE);
}
} }
private void initData() { private void initData() {
list.add(new MainFragment()); list.add(new MainFragment());
list.add(new LikeFragment()); list.add(new LikeFragment());
PageAdapter adapter = new PageAdapter(getSupportFragmentManager(), list); PageAdapter adapter = new PageAdapter(getSupportFragmentManager(), list);
binding.mainViewpager.setAdapter(adapter); binding.mainViewpager.setAdapter(adapter);
binding.mainTabLayout.setupWithViewPager(binding.mainViewpager); binding.mainTabLayout.setupWithViewPager(binding.mainViewpager);
setmainTabIcons(binding.mainTabLayout); setMainTabIcons(binding.mainTabLayout);
binding.mainViewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { binding.mainViewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override @Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
@ -68,7 +278,6 @@ public class MainActivity extends AppCompatActivity {
}); });
} }
private void setTabIcons(final int position) { private void setTabIcons(final int position) {
for (int i = 0; i < binding.mainTabLayout.getTabCount(); i++) { for (int i = 0; i < binding.mainTabLayout.getTabCount(); i++) {
final TabLayout.Tab tab = binding.mainTabLayout.getTabAt(i); final TabLayout.Tab tab = binding.mainTabLayout.getTabAt(i);
@ -87,7 +296,7 @@ public class MainActivity extends AppCompatActivity {
} }
} }
private void setmainTabIcons(TabLayout tabLayout) { private void setMainTabIcons(TabLayout tabLayout) {
for (int i = 0; i < tabLayout.getTabCount(); i++) { for (int i = 0; i < tabLayout.getTabCount(); i++) {
TabLayout.Tab tab = tabLayout.getTabAt(i); TabLayout.Tab tab = tabLayout.getTabAt(i);
if (tab != null) { if (tab != null) {
@ -105,5 +314,17 @@ public class MainActivity extends AppCompatActivity {
} }
} }
@Override
protected void onResume() {
super.onResume();
updateDialogContent();
}
@Override
protected void onDestroy() {
super.onDestroy();
if (broadcastReceiver != null) {
unregisterReceiver(broadcastReceiver);
}
}
} }

View File

@ -71,17 +71,18 @@ public class PreviewActivity extends AppCompatActivity {
private void showAd() { private void showAd() {
ATInterstitial mInterstitialAd = Mytool.onCache(ads); ATInterstitial mInterstitialAd = Mytool.onCache(ads);
if (mInterstitialAd == null) { if (mInterstitialAd == null) {
finish(); showKey();
} else { } else {
Mytool.setCallback(mInterstitialAd, new Adcallback() { Mytool.setCallback(mInterstitialAd, new Adcallback() {
@Override @Override
public void onShowFail(AdError ad) { public void onShowFail(AdError ad) {
finish(); showKey();
} }
@Override @Override
public void onAdHidden() { public void onAdHidden() {
finish(); showKey();
} }
}); });
mInterstitialAd.show(this); mInterstitialAd.show(this);
@ -89,6 +90,13 @@ public class PreviewActivity extends AppCompatActivity {
} }
private void showKey() {
Toast.makeText(PreviewActivity.this, getString(R.string.set_successful), Toast.LENGTH_SHORT).show();
Intent intent = new Intent(this, ShowKeyboardActivity.class);
startActivity(intent);
finish();
}
private void initEvent() { private void initEvent() {
binding.previewBack.setOnClickListener(new View.OnClickListener() { binding.previewBack.setOnClickListener(new View.OnClickListener() {
@ -152,8 +160,13 @@ public class PreviewActivity extends AppCompatActivity {
Mytool.unZip(this, unzipPath, resource, (successful1, resDirPath) -> { Mytool.unZip(this, unzipPath, resource, (successful1, resDirPath) -> {
if (successful1) { if (successful1) {
StaticValue.PATH = resDirPath; StaticValue.PATH = resDirPath;
Toast.makeText(PreviewActivity.this, getString(R.string.set_successful), Toast.LENGTH_SHORT).show(); otherdata.setDownloaded(true);
Mytool.runIO(new Runnable() {
@Override
public void run() {
MydataBase.getInstance().myDAO().update(otherdata);
}
});
showAd(); showAd();
} else { } else {
Toast.makeText(PreviewActivity.this, getString(R.string.text_zip_failed), Toast.LENGTH_SHORT).show(); Toast.makeText(PreviewActivity.this, getString(R.string.text_zip_failed), Toast.LENGTH_SHORT).show();
@ -182,11 +195,16 @@ public class PreviewActivity extends AppCompatActivity {
if (!existingData.isEmpty()) { if (!existingData.isEmpty()) {
otherdata = existingData.get(0); otherdata = existingData.get(0);
islike = otherdata.getIslike(); islike = otherdata.getIslike();
boolean isdown = otherdata.getDownloaded();
if (islike) { if (islike) {
binding.previewIslike.setBackgroundResource(R.drawable.icon_prelike_check); binding.previewIslike.setBackgroundResource(R.drawable.icon_prelike_check);
} else { } else {
binding.previewIslike.setBackgroundResource(R.drawable.icon_prelike_uncheck); binding.previewIslike.setBackgroundResource(R.drawable.icon_prelike_uncheck);
} }
if (isdown) {
binding.downloadText.setText(R.string.download_apply);
binding.downloadImage.setVisibility(View.GONE);
}
} }
} }
}); });
@ -199,6 +217,7 @@ public class PreviewActivity extends AppCompatActivity {
binding.previewImage.setImageBitmap(resource); binding.previewImage.setImageBitmap(resource);
binding.previewImage.setVisibility(View.VISIBLE); binding.previewImage.setVisibility(View.VISIBLE);
binding.imageProgress.setVisibility(View.GONE); binding.imageProgress.setVisibility(View.GONE);
} }
@Override @Override

View File

@ -23,6 +23,7 @@ import com.key.coolkeyboard.tool.Mytool;
public class SettingActivity extends AppCompatActivity { public class SettingActivity extends AppCompatActivity {
ActivitySettingBinding binding; ActivitySettingBinding binding;
private BroadcastReceiver broadcastReceiver;
private static final InputMethodManager methodManager = (InputMethodManager) CoolKeyboardSkin.app.getSystemService(Context.INPUT_METHOD_SERVICE); private static final InputMethodManager methodManager = (InputMethodManager) CoolKeyboardSkin.app.getSystemService(Context.INPUT_METHOD_SERVICE);
@Override @Override
@ -41,12 +42,20 @@ public class SettingActivity extends AppCompatActivity {
binding.settingTitle.setTypeface(Typeface.createFromAsset(getAssets(), "Baumans-Regular.ttf")); binding.settingTitle.setTypeface(Typeface.createFromAsset(getAssets(), "Baumans-Regular.ttf"));
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { broadcastReceiver = new BroadcastReceiver() {
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
binding.step1.setSelected(Mytool.isStep1()); boolean step1 = Mytool.isStep1();
binding.step2.setSelected(Mytool.isStep2()); boolean step2 = Mytool.isStep2();
binding.step1.setSelected(step1);
binding.step2.setSelected(step2);
intImage(); intImage();
if (step1 && step2) {
Intent settingIntent = new Intent(context, SettingActivity.class);
settingIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivity(settingIntent);
finish();
}
} }
}; };
registerReceiver(broadcastReceiver, new IntentFilter(Intent.ACTION_INPUT_METHOD_CHANGED)); registerReceiver(broadcastReceiver, new IntentFilter(Intent.ACTION_INPUT_METHOD_CHANGED));
@ -97,8 +106,23 @@ public class SettingActivity extends AppCompatActivity {
@Override @Override
protected void onResume() { protected void onResume() {
super.onResume(); super.onResume();
binding.step1.setSelected(Mytool.isStep1()); boolean step1 = Mytool.isStep1();
binding.step2.setSelected(Mytool.isStep2()); boolean step2 = Mytool.isStep2();
binding.step1.setSelected(step1);
binding.step2.setSelected(step2);
intImage(); intImage();
if (step1 && step2) {
Intent intent = new Intent(SettingActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(broadcastReceiver);
} }
} }

View File

@ -0,0 +1,58 @@
package com.key.coolkeyboard.activity;
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 android.content.Context;
import android.graphics.Typeface;
import android.os.Bundle;
import android.os.Handler;
import android.view.inputmethod.InputMethodManager;
import com.key.coolkeyboard.R;
import com.key.coolkeyboard.databinding.ActivityShowKeyboardBinding;
public class ShowKeyboardActivity extends AppCompatActivity {
ActivityShowKeyboardBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityShowKeyboardBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
EdgeToEdge.enable(this);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.activity_show), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
binding.showkeyBack.setOnClickListener(v -> finish());
binding.showkeyTitle.setTypeface(Typeface.createFromAsset(getAssets(), "Baumans-Regular.ttf"));
}
@Override
protected void onResume() {
super.onResume();
binding.showkeyEdit.requestFocus();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
}
}, 500);
}
@Override
protected void onPause() {
super.onPause();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(binding.showkeyEdit.getWindowToken(), 0);
binding.showkeyEdit.clearFocus();
}
}

View File

@ -30,7 +30,7 @@ public class SplashActivity extends AppCompatActivity {
private CountDownTimer countDownTimer; private CountDownTimer countDownTimer;
private List<ATInterstitial> ads; private List<ATInterstitial> ads;
public static boolean isAlreadyShow = false; private boolean isAlreadyShow = false;
private float i = 0; private float i = 0;
@SuppressLint("MissingInflatedId") @SuppressLint("MissingInflatedId")

View File

@ -0,0 +1,34 @@
package com.key.coolkeyboard.activity;
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 android.annotation.SuppressLint;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import com.key.coolkeyboard.R;
public class WebActivity extends AppCompatActivity {
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web);
EdgeToEdge.enable(this);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.activity_web), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
WebView webView = findViewById(R.id.web);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient());
webView.loadUrl("file:///android_asset/privacy.html");
}
}

View File

@ -19,6 +19,16 @@ public class Otherdata {
public String title; public String title;
public String zipUrl; public String zipUrl;
public Boolean islike; public Boolean islike;
public Boolean isDownloaded;
public Boolean getDownloaded() {
return isDownloaded;
}
public void setDownloaded(Boolean downloaded) {
isDownloaded = downloaded;
}
public String getPreview() { public String getPreview() {
return preview; return preview;
} }

View File

@ -27,6 +27,7 @@ import com.key.coolkeyboard.activity.MainActivity;
import com.key.coolkeyboard.activity.PreviewActivity; import com.key.coolkeyboard.activity.PreviewActivity;
import com.key.coolkeyboard.activity.SerachActivity; import com.key.coolkeyboard.activity.SerachActivity;
import com.key.coolkeyboard.activity.SettingActivity; import com.key.coolkeyboard.activity.SettingActivity;
import com.key.coolkeyboard.activity.WebActivity;
import com.key.coolkeyboard.adapter.ThumAdapter; import com.key.coolkeyboard.adapter.ThumAdapter;
import com.key.coolkeyboard.data.Otherdata; import com.key.coolkeyboard.data.Otherdata;
import com.key.coolkeyboard.databinding.FragmentMainBinding; import com.key.coolkeyboard.databinding.FragmentMainBinding;
@ -74,10 +75,12 @@ public class MainFragment extends Fragment {
} }
}); });
binding.settingCons.setOnClickListener(new View.OnClickListener() { binding.rateCons.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
Intent intent = new Intent(requireContext(), SettingActivity.class); String url = "https://play.google.com/store/apps/details?id=com.key.coolkeyboard";
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
startActivity(intent); startActivity(intent);
} }
}); });
@ -98,9 +101,7 @@ public class MainFragment extends Fragment {
binding.privacyCons.setOnClickListener(new View.OnClickListener() { binding.privacyCons.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
String url = getString(R.string.privacy_url); Intent intent = new Intent(requireContext(), WebActivity.class);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
startActivity(intent); startActivity(intent);
} }
}); });

View File

@ -312,6 +312,7 @@ public class Mytool {
for (int i = 0; i < classArray.length(); i++) { for (int i = 0; i < classArray.length(); i++) {
JSONObject item = classArray.getJSONObject(i); JSONObject item = classArray.getJSONObject(i);
Otherdata otherdata = new Otherdata(); Otherdata otherdata = new Otherdata();
otherdata.setDownloaded(false);
otherdata.setIslike(false); otherdata.setIslike(false);
otherdata.setClassName(myData.getName()); otherdata.setClassName(myData.getName());
otherdata.setPreview(item.getString("preview")); otherdata.setPreview(item.getString("preview"));

View File

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

View File

@ -0,0 +1,14 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:strokeWidth="1"
android:pathData="M12,0.5L12,0.5A11.5,11.5 0,0 1,23.5 12L23.5,12A11.5,11.5 0,0 1,12 23.5L12,23.5A11.5,11.5 0,0 1,0.5 12L0.5,12A11.5,11.5 0,0 1,12 0.5z"
android:fillColor="#00000000"
android:strokeColor="#ffffff"/>
<path
android:pathData="M16.496,8.511C16.774,8.233 16.774,7.782 16.496,7.504C16.218,7.225 15.767,7.225 15.489,7.504L12,10.993L8.511,7.504C8.233,7.225 7.782,7.225 7.504,7.504C7.225,7.782 7.225,8.233 7.504,8.511L10.993,12L7.504,15.489C7.225,15.767 7.225,16.218 7.504,16.496C7.782,16.774 8.233,16.774 8.511,16.496L12,13.007L15.489,16.496C15.767,16.774 16.218,16.774 16.496,16.496C16.774,16.218 16.774,15.767 16.496,15.489L13.007,12L16.496,8.511Z"
android:fillColor="#ffffff"/>
</vector>

View File

@ -0,0 +1,12 @@
<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="M8,5h9v9h-9z"
android:fillColor="#7C7E83"/>
<path
android:pathData="M12,12.475L13.9,13.625C14.083,13.742 14.267,13.738 14.45,13.613C14.633,13.488 14.7,13.317 14.65,13.1L14.15,10.925L15.85,9.45C16.017,9.3 16.067,9.121 16,8.913C15.933,8.705 15.783,8.592 15.55,8.575L13.325,8.4L12.45,6.35C12.367,6.15 12.217,6.05 12,6.05C11.783,6.05 11.633,6.15 11.55,6.35L10.675,8.4L8.45,8.575C8.217,8.592 8.067,8.704 8,8.913C7.933,9.122 7.983,9.301 8.15,9.45L9.85,10.925L9.35,13.1C9.3,13.317 9.367,13.488 9.55,13.613C9.733,13.738 9.917,13.742 10.1,13.625L12,12.475ZM6,18L3.7,20.3C3.383,20.617 3.021,20.688 2.612,20.513C2.203,20.338 1.999,20.026 2,19.575V4C2,3.45 2.196,2.979 2.588,2.588C2.98,2.197 3.451,2.001 4,2H20C20.55,2 21.021,2.196 21.413,2.588C21.805,2.98 22.001,3.451 22,4V16C22,16.55 21.804,17.021 21.413,17.413C21.022,17.805 20.551,18.001 20,18H6Z"
android:fillColor="#ffffff"/>
</vector>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/showkey_edit_hint_color" />
<corners android:radius="8dp" />
<stroke
android:width="2dp"
android:color="@color/color_main_setting" />
</shape>

View File

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

View File

@ -71,7 +71,7 @@
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/step1" android:id="@+id/step1"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="54dp"
android:layout_marginStart="24dp" android:layout_marginStart="24dp"
android:layout_marginTop="50dp" android:layout_marginTop="50dp"
android:layout_marginEnd="24dp" android:layout_marginEnd="24dp"
@ -108,7 +108,7 @@
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/step2" android:id="@+id/step2"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="54dp"
android:layout_marginStart="24dp" android:layout_marginStart="24dp"
android:layout_marginTop="24dp" android:layout_marginTop="24dp"
android:layout_marginEnd="24dp" android:layout_marginEnd="24dp"

View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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/activity_show"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black"
tools:context=".activity.ShowKeyboardActivity">
<TextView
android:id="@+id/showkey_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="14dp"
android:text="@string/showkey_title"
android:textColor="@color/white"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/showkey_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:background="@drawable/bg_main_setting"
android:padding="8dp"
app:layout_constraintBottom_toBottomOf="@id/showkey_title"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/showkey_title">
<ImageView
android:layout_width="18dp"
android:layout_height="18dp"
android:src="@drawable/icon_back"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<EditText
android:id="@+id/showkey_edit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:background="@drawable/showkeyboard_edit"
android:hint="@string/showkey_hint_text"
android:maxLines="1"
android:padding="16dp"
android:textColorHint="@color/showkey_edit_text_color"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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/activity_web"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity.WebActivity">
<WebView
android:id="@+id/web"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,110 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/dialog_bg">
<ImageView
android:id="@+id/setting_image"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_marginTop="20dp"
android:src="@mipmap/setting_hint_image"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/setting_hint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:gravity="center"
android:text="@string/setting_hint"
android:textColor="@color/white"
android:textSize="29sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/setting_image" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/step1"
android:layout_width="match_parent"
android:layout_height="54dp"
android:layout_marginStart="24dp"
android:layout_marginTop="50dp"
android:layout_marginEnd="24dp"
android:background="@drawable/step_selector"
android:paddingStart="12dp"
android:paddingTop="10dp"
android:paddingEnd="12dp"
android:paddingBottom="10dp"
app:layout_constraintTop_toBottomOf="@id/setting_hint">
<ImageView
android:id="@+id/step1_image"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginStart="12dp"
android:background="@drawable/icon_check"
app:layout_constraintBottom_toBottomOf="@id/step1_text"
app:layout_constraintStart_toEndOf="@id/step1_text"
app:layout_constraintTop_toTopOf="@id/step1_text" />
<TextView
android:id="@+id/step1_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/step1"
android:textColor="@color/white"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/step2"
android:layout_width="match_parent"
android:layout_height="54dp"
android:layout_marginStart="24dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="24dp"
android:layout_marginBottom="60dp"
android:background="@drawable/step_selector"
android:paddingStart="12dp"
android:paddingTop="10dp"
android:paddingEnd="12dp"
android:paddingBottom="10dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/step1">
<ImageView
android:id="@+id/step2_image"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginStart="12dp"
android:background="@drawable/icon_check"
app:layout_constraintBottom_toBottomOf="@id/step2_text"
app:layout_constraintStart_toEndOf="@id/step2_text"
app:layout_constraintTop_toTopOf="@id/step2_text" />
<TextView
android:id="@+id/step2_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/step2"
android:textColor="@color/white"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -6,8 +6,8 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/black" android:background="@color/black"
tools:openDrawer="start" tools:context=".fragment.MainFragment"
tools:context=".fragment.MainFragment"> tools:openDrawer="start">
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
@ -57,12 +57,12 @@
android:layout_marginTop="24dp" android:layout_marginTop="24dp"
android:layout_marginEnd="16dp" android:layout_marginEnd="16dp"
android:background="@drawable/search_edit" android:background="@drawable/search_edit"
android:focusable="true"
android:focusableInTouchMode="true"
android:paddingStart="20dp" android:paddingStart="20dp"
android:paddingTop="10dp" android:paddingTop="10dp"
android:paddingEnd="20dp" android:paddingEnd="20dp"
android:paddingBottom="10dp" android:paddingBottom="10dp"
android:focusable="true"
android:focusableInTouchMode="true"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/main_title"> app:layout_constraintTop_toBottomOf="@id/main_title">
@ -174,9 +174,9 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_gravity="start" android:layout_gravity="start"
android:background="@color/black"
android:clickable="true" android:clickable="true"
android:focusable="true" android:focusable="true"
android:background="@color/black"
android:paddingStart="16dp" android:paddingStart="16dp"
android:paddingEnd="16dp"> android:paddingEnd="16dp">
@ -190,49 +190,12 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/setting_cons"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
app:layout_constraintTop_toBottomOf="@id/setting_title">
<ImageView
android:id="@+id/setting"
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@drawable/icon_setting"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:text="@string/setting_text"
android:textColor="@color/white"
android:textSize="19sp"
app:layout_constraintBottom_toBottomOf="@id/setting"
app:layout_constraintStart_toEndOf="@id/setting"
app:layout_constraintTop_toTopOf="@id/setting" />
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:background="@drawable/icon_viewall"
app:layout_constraintBottom_toBottomOf="@id/setting"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/setting" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/share_cons" android:id="@+id/share_cons"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="32dp" android:layout_marginTop="30dp"
app:layout_constraintTop_toBottomOf="@id/setting_cons"> app:layout_constraintTop_toBottomOf="@id/setting_title">
<ImageView <ImageView
android:id="@+id/share" android:id="@+id/share"
@ -299,17 +262,53 @@
app:layout_constraintTop_toTopOf="@id/privacy" /> app:layout_constraintTop_toTopOf="@id/privacy" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<TextView <androidx.constraintlayout.widget.ConstraintLayout
android:layout_marginBottom="20dp" android:id="@+id/rate_cons"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="30dp"
app:layout_constraintTop_toBottomOf="@id/privacy_cons">
<ImageView
android:id="@+id/rate"
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@drawable/icon_rate"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:text="@string/rate_text"
android:textColor="@color/white"
android:textSize="19sp"
app:layout_constraintBottom_toBottomOf="@id/rate"
app:layout_constraintStart_toEndOf="@id/rate"
app:layout_constraintTop_toTopOf="@id/rate" />
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:background="@drawable/icon_viewall"
app:layout_constraintBottom_toBottomOf="@id/rate"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/rate" />
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
android:id="@+id/version"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:text="@string/versionnumver_text" android:text="@string/versionnumver_text"
android:textColor="@color/version" android:textColor="@color/version"
android:textSize="17sp" android:textSize="17sp"
android:id="@+id/version"/> app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/toast_dialog_cons"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@mipmap/toast_image_bg"
android:padding="24dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/toast_dialog_image"
android:layout_width="270dp"
android:layout_height="200dp"
android:layout_marginTop="50dp"
android:layout_marginBottom="20dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/toast_dialog_apply"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="-25dp"
android:background="@drawable/toast_dialog_apply_bg"
android:paddingStart="40dp"
android:paddingTop="12dp"
android:paddingEnd="40dp"
android:paddingBottom="12dp"
android:text="@string/toast_apply_text"
android:textColor="@color/white"
android:textSize="16sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/toast_dialog_cons" />
<ImageView
android:id="@+id/toast_dialog_cancel"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginTop="50dp"
android:background="@drawable/icon_delete"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/toast_dialog_cons" />
</androidx.constraintlayout.widget.ConstraintLayout>

Binary file not shown.

After

Width:  |  Height:  |  Size: 280 KiB

View File

@ -8,4 +8,6 @@
<color name="color_main_setting">#F24180</color> <color name="color_main_setting">#F24180</color>
<color name="step_check">#CFCFCF</color> <color name="step_check">#CFCFCF</color>
<color name="version">#9D9D9D</color> <color name="version">#9D9D9D</color>
<color name="showkey_edit_hint_color">#F7F4FF</color>
<color name="showkey_edit_text_color">#F4B1C9</color>
</resources> </resources>

View File

@ -5,6 +5,7 @@
<string name="favorite_title">My Favorite</string> <string name="favorite_title">My Favorite</string>
<string name="setting_title">Settings</string> <string name="setting_title">Settings</string>
<string name="setting_text">System authorization</string> <string name="setting_text">System authorization</string>
<string name="rate_text">Rate</string>
<string name="share_text">Share</string> <string name="share_text">Share</string>
<string name="prevacy_text">Privacy Policy</string> <string name="prevacy_text">Privacy Policy</string>
<string name="version_text">Version number</string> <string name="version_text">Version number</string>
@ -24,13 +25,17 @@
<string name="text_zip_failed">Zip failed</string> <string name="text_zip_failed">Zip failed</string>
<string name="share_title">Here is a Cool Keyboard</string> <string name="share_title">Here is a Cool Keyboard</string>
<string name="nolike_tips">No favorites added yet</string> <string name="nolike_tips">No favorites added yet</string>
<string name="setting_hint">Activate PassionCool \n Keyboard To enable \n MORE functions!</string> <string name="setting_hint">Keyboard \n requires permission to use</string>
<string name="step1">Step 1:Select</string> <string name="step1">Step 1:Select</string>
<string name="step2">Step 2:Enabled</string> <string name="step2">Step 2:Enabled</string>
<string name="text_hint">For normal use, please enter the setting to complete the setting steps.</string> <string name="text_hint">For normal use, please enter the setting to complete the setting steps.</string>
<string name="main_banner_title">Start using Wallpaper Keyboard !</string> <string name="main_banner_title">Start using Wallpaper Keyboard !</string>
<string name="versionnumver_text">Version 1.0.0</string> <string name="versionnumver_text">Version 1.0.1</string>
<!-- TODO: Remove or change this placeholder text --> <!-- TODO: Remove or change this placeholder text -->
<string name="hello_blank_fragment">Hello blank fragment</string> <string name="hello_blank_fragment">Hello blank fragment</string>
<string name="privacy_url">https://sites.google.com/view/cool-keyboard---theme-skin</string> <string name="privacy_url">https://sites.google.com/view/cool-keyboard---theme-skin</string>
<string name="showkey_hint_text">Enter text to see the effect</string>
<string name="showkey_title">Applied results</string>
<string name="download_apply">Apply</string>
<string name="toast_apply_text">Apply Now</string>
</resources> </resources>