更新UI 1.0.9(10)
This commit is contained in:
parent
d3007e5d5f
commit
e014e76911
3
.gitignore
vendored
3
.gitignore
vendored
@ -14,3 +14,6 @@ app/release/keyboardskins_V1.0.3(4)_07_16_14_17-release.apk
|
||||
app/release/output-metadata.json
|
||||
app/release/keyboardskins_V1.0.6(7)_07_19_15_01-release.apk
|
||||
app/release/keyboardskins_V1.0.6(7)_07_19_15_03-release.aab
|
||||
app/release/keyboardskins_V1.0.8(9)_08_13_16_45-release.apk
|
||||
app/release/keyboardskins_V11.0.8(9)_08_15_15_51-release.apk
|
||||
app/release/keyboardskins_V11.0.9(10)_08_15_17_14-release.aab
|
||||
|
||||
@ -6,24 +6,24 @@ plugins {
|
||||
id("org.jetbrains.kotlin.android")
|
||||
id("com.google.gms.google-services")
|
||||
id("com.google.firebase.crashlytics")
|
||||
|
||||
id("kotlin-kapt")
|
||||
}
|
||||
|
||||
|
||||
val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date())
|
||||
android {
|
||||
namespace = "com.exquisite.demo08"
|
||||
namespace = "com.exquisite"
|
||||
compileSdk = 34
|
||||
|
||||
defaultConfig {
|
||||
applicationId = "com.key.keyboardskins"
|
||||
minSdk = 23
|
||||
targetSdk = 34
|
||||
versionCode = 9
|
||||
versionName = "1.0.8"
|
||||
versionCode = 10
|
||||
versionName = "1.0.9"
|
||||
setProperty(
|
||||
"archivesBaseName",
|
||||
"keyboardskins_V" + versionName + "(${versionCode})_$timestamp"
|
||||
"keyboardskins_V1" + versionName + "(${versionCode})_$timestamp"
|
||||
)
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
@ -39,8 +39,11 @@ android {
|
||||
}
|
||||
}
|
||||
compileOptions {
|
||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||
targetCompatibility = JavaVersion.VERSION_1_8
|
||||
sourceCompatibility = JavaVersion.VERSION_17
|
||||
targetCompatibility = JavaVersion.VERSION_17
|
||||
}
|
||||
buildFeatures{
|
||||
viewBinding = true
|
||||
}
|
||||
}
|
||||
|
||||
@ -57,6 +60,12 @@ dependencies {
|
||||
implementation("com.github.bumptech.glide:glide:4.16.0")
|
||||
implementation("com.github.omicronapps:7-Zip-JBinding-4Android:Release-16.02-2.02")
|
||||
|
||||
val room_version = "2.6.1"
|
||||
implementation("androidx.room:room-runtime:$room_version")
|
||||
annotationProcessor("androidx.room:room-compiler:$room_version")
|
||||
kapt("androidx.room:room-compiler:$room_version")
|
||||
|
||||
|
||||
implementation(platform("com.google.firebase:firebase-bom:33.1.2"))
|
||||
implementation("com.google.firebase:firebase-analytics-ktx")
|
||||
implementation("com.google.firebase:firebase-crashlytics-ktx")
|
||||
@ -104,11 +113,11 @@ 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")
|
||||
//-----------------------------TopOn 聚合
|
||||
|
||||
// Debugger UI Tools
|
||||
implementation("com.anythink.sdk:debugger-ui:1.0.7")
|
||||
// implementation("com.anythink.sdk:debugger-ui:1.0.7")
|
||||
|
||||
|
||||
}
|
||||
@ -15,6 +15,12 @@
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/AppTheme"
|
||||
tools:targetApi="31">
|
||||
<activity
|
||||
android:name="com.exquisite.activity.ShowKeyboardActivity"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name="com.exquisite.activity.WebActivity"
|
||||
android:exported="false" />
|
||||
|
||||
<meta-data
|
||||
android:name="com.facebook.sdk.ApplicationId"
|
||||
|
||||
@ -814,7 +814,9 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{"className": "festival","list": [
|
||||
{
|
||||
"className": "festival",
|
||||
"list": [
|
||||
{
|
||||
"preview": "https://resource-sg-public.lux-ad.com/keyboard/d3ce935f39cfa4bf877370e7166523e0.webp",
|
||||
"thumb": "https://resource-sg-public.lux-ad.com/keyboard/f9b79cbc3b678e9a7e63d334ea66fc7c.jpg",
|
||||
|
||||
121
app/src/main/assets/privacy.html
Normal file
121
app/src/main/assets/privacy.html
Normal 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> August 15, 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>Children’s 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:PopRenajm@gmail.com">PopRenajm@gmail.com</a>.</p>
|
||||
</body>
|
||||
</html>
|
||||
@ -1,30 +1,21 @@
|
||||
package com.exquisite;
|
||||
|
||||
import static android.content.ContentValues.TAG;
|
||||
|
||||
import android.app.Application;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.util.Log;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||
|
||||
|
||||
import com.anythink.core.api.ATSDK;
|
||||
import com.anythink.core.api.NetTrafficeCallback;
|
||||
import com.anythink.debug.api.ATDebuggerUITest;
|
||||
import com.anythink.interstitial.api.ATInterstitial;
|
||||
import com.exquisite.data.Mydata;
|
||||
import com.exquisite.mintegral.MBrManager;
|
||||
import com.exquisite.data.MydataBase;
|
||||
import com.exquisite.tools.Mytools;
|
||||
import com.mbridge.msdk.MBridgeSDK;
|
||||
import com.mbridge.msdk.out.MBridgeSDKFactory;
|
||||
import com.mbridge.msdk.out.SDKInitStatusListener;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class KeyboardSkin extends Application {
|
||||
public static KeyboardSkin app;
|
||||
@ -34,13 +25,68 @@ public class KeyboardSkin extends Application {
|
||||
private static final String TOP_KEY = "a95ed90a717c7bcff42cd908db3f05664";
|
||||
private static final String TOP_DEBUG = "8a341b6aa5cc3fa453d7741f01a534c1d5dd766a";
|
||||
public static List<ATInterstitial> ads;
|
||||
public static final String VERSION_NAME = "1.0.0";
|
||||
public static final String DB_Name = "keyboard_database";
|
||||
public static final String Table_Name = "keyboard_table";
|
||||
public static final int DB_Version = 1;
|
||||
private static boolean insert;
|
||||
private SharedPreferences sp;
|
||||
private SharedPreferences.Editor editor;
|
||||
public static final String PRE_NAME = "Mypre";
|
||||
public static final String PRE_KEY = "isinsert";
|
||||
public static final String PRE_KEY_INIT = "isinit";
|
||||
public static final String TAG = "zzj";
|
||||
public static List<Mydata> alllist = new ArrayList<>();
|
||||
public static List<Mydata> lovelist = new ArrayList<>();
|
||||
public static List<Mydata> coollist = new ArrayList<>();
|
||||
public static List<Mydata> cutelist = new ArrayList<>();
|
||||
public static List<Mydata> neonlist = new ArrayList<>();
|
||||
public static List<Mydata> festivallist = new ArrayList<>();
|
||||
public static List<Mydata> gravitylist = new ArrayList<>();
|
||||
public static List<Mydata> aestheticlist = new ArrayList<>();
|
||||
public static List<Mydata> superlist = new ArrayList<>();
|
||||
|
||||
public static List<Mydata> getLovelist() {
|
||||
return lovelist;
|
||||
}
|
||||
|
||||
public static List<Mydata> getCoollist() {
|
||||
return coollist;
|
||||
}
|
||||
|
||||
public static List<Mydata> getCutelist() {
|
||||
return cutelist;
|
||||
}
|
||||
|
||||
public static List<Mydata> getNeonlist() {
|
||||
return neonlist;
|
||||
}
|
||||
|
||||
public static List<Mydata> getFestivallist() {
|
||||
return festivallist;
|
||||
}
|
||||
|
||||
public static List<Mydata> getGravitylist() {
|
||||
return gravitylist;
|
||||
}
|
||||
|
||||
public static List<Mydata> getAestheticlist() {
|
||||
return aestheticlist;
|
||||
}
|
||||
|
||||
public static List<Mydata> getSuperlist() {
|
||||
return superlist;
|
||||
}
|
||||
|
||||
public static int a;
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
context = getApplicationContext();
|
||||
app = this;
|
||||
|
||||
a = 0;
|
||||
// Log.e("zzj","---a app is---"+a);
|
||||
ATSDK.checkIsEuTraffic(this, new NetTrafficeCallback() {
|
||||
|
||||
@Override
|
||||
@ -59,9 +105,44 @@ public class KeyboardSkin extends Application {
|
||||
});
|
||||
|
||||
initSdk();
|
||||
myDataArrayList = Mytools.parseJsonToList("keyboard.json");
|
||||
sp = getSharedPreferences(PRE_NAME, MODE_PRIVATE);
|
||||
insert = sp.getBoolean(PRE_KEY, false);
|
||||
if (!insert) {
|
||||
|
||||
List<Mydata> myData = Mytools.parseJsonToList("keyboard.json");
|
||||
myDataArrayList = myData;
|
||||
Mytools.runIO(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
insert = true;
|
||||
MydataBase.getInstance().myDAO().insertAll(myDataArrayList);
|
||||
editor = sp.edit();
|
||||
editor.putBoolean(PRE_KEY, insert);
|
||||
editor.apply();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
initData();
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void initData() {
|
||||
Mytools.runIO(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
alllist = MydataBase.getInstance().myDAO().getAlldata();
|
||||
lovelist = MydataBase.getInstance().myDAO().getotherlist("love");
|
||||
coollist = MydataBase.getInstance().myDAO().getotherlist("cool");
|
||||
cutelist = MydataBase.getInstance().myDAO().getotherlist("cute");
|
||||
neonlist = MydataBase.getInstance().myDAO().getotherlist("neon");
|
||||
festivallist = MydataBase.getInstance().myDAO().getotherlist("festival");
|
||||
gravitylist = MydataBase.getInstance().myDAO().getotherlist("gravity");
|
||||
aestheticlist = MydataBase.getInstance().myDAO().getotherlist("aesthetic");
|
||||
superlist = MydataBase.getInstance().myDAO().getotherlist("super theme");
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void initSdk() {
|
||||
|
||||
@ -10,7 +10,6 @@ import androidx.fragment.app.FragmentTransaction;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
@ -20,11 +19,8 @@ import com.anythink.interstitial.api.ATInterstitial;
|
||||
import com.exquisite.KeyboardSkin;
|
||||
import com.exquisite.callback.Adcallback;
|
||||
import com.exquisite.fragment.AllFragment;
|
||||
import com.exquisite.demo08.R;
|
||||
import com.exquisite.mintegral.ADBean;
|
||||
import com.exquisite.mintegral.MBrManager;
|
||||
import com.exquisite.mintegral.Mylistener;
|
||||
import com.exquisite.mintegral.onAdStatusListener;
|
||||
import com.exquisite.R;
|
||||
|
||||
import com.exquisite.tools.Mytools;
|
||||
|
||||
import java.util.List;
|
||||
@ -56,6 +52,9 @@ public class AllActivity extends AppCompatActivity implements View.OnClickListen
|
||||
intEvent();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private void intEvent() {
|
||||
back.setOnClickListener(this);
|
||||
}
|
||||
|
||||
@ -20,13 +20,14 @@ import android.widget.LinearLayout;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.exquisite.KeyboardSkin;
|
||||
import com.exquisite.demo08.R;
|
||||
import com.exquisite.R;
|
||||
import com.exquisite.tools.Mytools;
|
||||
|
||||
public class KeyBoardSettingsActivity extends AppCompatActivity implements View.OnClickListener {
|
||||
private static final InputMethodManager methodManager = (InputMethodManager) KeyboardSkin.app.getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||
private LinearLayout back, step1, step2;
|
||||
private ImageView step1_image, step2_image;
|
||||
|
||||
@SuppressLint("MissingInflatedId")
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
@ -55,14 +56,14 @@ public class KeyBoardSettingsActivity extends AppCompatActivity implements View.
|
||||
}
|
||||
|
||||
private void intImage() {
|
||||
if (Mytools.isStep2()){
|
||||
if (Mytools.isStep2()) {
|
||||
step2_image.setVisibility(View.VISIBLE);
|
||||
}else {
|
||||
} else {
|
||||
step2_image.setVisibility(View.GONE);
|
||||
}
|
||||
if (Mytools.isStep1()){
|
||||
if (Mytools.isStep1()) {
|
||||
step1_image.setVisibility(View.VISIBLE);
|
||||
}else {
|
||||
} else {
|
||||
step1_image.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
@ -101,6 +102,7 @@ public class KeyBoardSettingsActivity extends AppCompatActivity implements View.
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
@ -112,10 +114,10 @@ public class KeyBoardSettingsActivity extends AppCompatActivity implements View.
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
if (Mytools.isStep1()&&Mytools.isStep2()){
|
||||
Toast.makeText(KeyBoardSettingsActivity.this,getString(R.string.text_step_successful),Toast.LENGTH_SHORT).show();
|
||||
}else {
|
||||
Toast.makeText(KeyBoardSettingsActivity.this,getString(R.string.text_step_failed),Toast.LENGTH_SHORT).show();
|
||||
if (Mytools.isStep1() && Mytools.isStep2()) {
|
||||
Toast.makeText(KeyBoardSettingsActivity.this, getString(R.string.text_step_successful), Toast.LENGTH_SHORT).show();
|
||||
} else {
|
||||
Toast.makeText(KeyBoardSettingsActivity.this, getString(R.string.text_step_failed), Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,9 @@
|
||||
package com.exquisite.activity;
|
||||
|
||||
|
||||
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;
|
||||
@ -8,14 +11,49 @@ import androidx.core.view.WindowInsetsCompat;
|
||||
import androidx.viewpager.widget.ViewPager;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Dialog;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
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.widget.ImageView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.bumptech.glide.request.target.CustomTarget;
|
||||
import com.bumptech.glide.request.transition.Transition;
|
||||
import com.exquisite.KeyboardSkin;
|
||||
import com.exquisite.R;
|
||||
import com.exquisite.adapter.PageAdapter;
|
||||
import com.exquisite.demo08.R;
|
||||
import com.exquisite.data.Mydata;
|
||||
import com.exquisite.data.MydataBase;
|
||||
import com.exquisite.data.StaticValue;
|
||||
import com.exquisite.tools.Mytools;
|
||||
import com.google.android.material.tabs.TabLayout;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
|
||||
public class MainActivity extends AppCompatActivity {
|
||||
private TabLayout tabLayout;
|
||||
private Dialog toastDialog;
|
||||
private Mydata otherdata;
|
||||
private String unzipPath;
|
||||
private Dialog dialog;
|
||||
private BroadcastReceiver broadcastReceiver;
|
||||
private static final InputMethodManager methodManager = (InputMethodManager) KeyboardSkin.app.getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||
|
||||
@SuppressLint("MissingInflatedId")
|
||||
@Override
|
||||
@ -28,14 +66,16 @@ public class MainActivity extends AppCompatActivity {
|
||||
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
|
||||
return insets;
|
||||
});
|
||||
|
||||
tabLayout = findViewById(R.id.main_tabLayout);
|
||||
ViewPager viewPager = findViewById(R.id.main_viewpager);
|
||||
PageAdapter adapter = new PageAdapter(getSupportFragmentManager());
|
||||
viewPager.setAdapter(adapter);
|
||||
tabLayout.setupWithViewPager(viewPager);
|
||||
|
||||
setmainTabIcons(tabLayout);
|
||||
showDg();
|
||||
|
||||
|
||||
setTabIcons(0);
|
||||
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
|
||||
@Override
|
||||
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
||||
@ -52,6 +92,182 @@ public class MainActivity extends AppCompatActivity {
|
||||
});
|
||||
}
|
||||
|
||||
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.findViewById(R.id.setting_cancel).setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
hideDg();
|
||||
}
|
||||
});
|
||||
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
|
||||
@Override
|
||||
public void onDismiss(DialogInterface dialog) {
|
||||
Mytools.runIO(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
List<Mydata> list1 = MydataBase.getInstance().myDAO().getAlldata();
|
||||
otherdata = list1.get(666);
|
||||
if (toastDialog == null) {
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
showToastDg();
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
dialog.show();
|
||||
dialog.getWindow().setAttributes(lp);
|
||||
|
||||
updateDialogContent();
|
||||
}
|
||||
|
||||
private void hideDg() {
|
||||
if (dialog != null && dialog.isShowing()) {
|
||||
dialog.dismiss();
|
||||
}
|
||||
}
|
||||
|
||||
private void updateDialogContent() {
|
||||
boolean step1 = Mytools.isStep1();
|
||||
boolean step2 = Mytools.isStep2();
|
||||
dialog.findViewById(R.id.step1).setSelected(step1);
|
||||
dialog.findViewById(R.id.step2).setSelected(step2);
|
||||
updateDialogImages();
|
||||
}
|
||||
|
||||
private void updateDialogImages() {
|
||||
if (Mytools.isStep2()) {
|
||||
dialog.findViewById(R.id.step2_image).setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
dialog.findViewById(R.id.step2_image).setVisibility(View.GONE);
|
||||
}
|
||||
if (Mytools.isStep1()) {
|
||||
dialog.findViewById(R.id.step1_image).setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
dialog.findViewById(R.id.step1_image).setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
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_cons).setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View 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();
|
||||
|
||||
if (toastDialog != null) {
|
||||
toastDialog.show();
|
||||
}
|
||||
|
||||
toastDialog.getWindow().setAttributes(lp);
|
||||
}
|
||||
|
||||
|
||||
private void downLoad() {
|
||||
if (!Mytools.isStep1() || !Mytools.isStep2()) {
|
||||
// Toast.makeText(this, getString(R.string.text_hint), Toast.LENGTH_SHORT).show();
|
||||
Intent intent = new Intent(this, KeyBoardSettingsActivity.class);
|
||||
startActivity(intent);
|
||||
} else {
|
||||
Mytools.donwnZip(this, otherdata.getZipUrl(), (successful, resource) -> {
|
||||
if (successful) {
|
||||
Mytools.unZip(this, unzipPath, resource, (successful1, resDirPath) -> {
|
||||
if (successful1) {
|
||||
StaticValue.PATH = resDirPath;
|
||||
otherdata.setDownloaded(true);
|
||||
otherdata.setPath(resDirPath);
|
||||
Mytools.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 setTabIcons(final int position) {
|
||||
for (int i = 0; i < tabLayout.getTabCount(); i++) {
|
||||
final TabLayout.Tab tab = tabLayout.getTabAt(i);
|
||||
@ -61,7 +277,10 @@ public class MainActivity extends AppCompatActivity {
|
||||
tab.setIcon(position == 0 ? R.drawable.home_check : R.drawable.home_uncheck);
|
||||
break;
|
||||
case 1:
|
||||
tab.setIcon(position == 0 ? R.drawable.setting_uncheck : R.drawable.setting_check);
|
||||
tab.setIcon(position == 1 ? R.drawable.like_check : R.drawable.like_uncheck);
|
||||
break;
|
||||
case 2:
|
||||
tab.setIcon(position == 2 ? R.drawable.setting_check : R.drawable.setting_uncheck);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@ -70,21 +289,34 @@ public class MainActivity extends AppCompatActivity {
|
||||
}
|
||||
}
|
||||
|
||||
private void setmainTabIcons(TabLayout tabLayout) {
|
||||
for (int i = 0; i < tabLayout.getTabCount(); i++) {
|
||||
TabLayout.Tab tab = tabLayout.getTabAt(i);
|
||||
if (tab != null) {
|
||||
switch (i) {
|
||||
case 0:
|
||||
tab.setIcon(R.drawable.home_check);
|
||||
break;
|
||||
case 1:
|
||||
tab.setIcon(R.drawable.setting_uncheck);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
private void showKey() {
|
||||
Toast.makeText(MainActivity.this, getString(R.string.set_successful), Toast.LENGTH_SHORT).show();
|
||||
Intent intent = new Intent(this, ShowKeyboardActivity.class);
|
||||
intent.putExtra(StaticValue.KEY_ISshow, 1);
|
||||
startActivity(intent);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
updateDialogContent();
|
||||
// Log.e("zzj", "---a app get is---" + KeyboardSkin.a);
|
||||
if (KeyboardSkin.a == 1) {
|
||||
if (toastDialog != null) {
|
||||
toastDialog.dismiss();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
if (broadcastReceiver != null) {
|
||||
unregisterReceiver(broadcastReceiver);
|
||||
}
|
||||
KeyboardSkin.a = 0;
|
||||
}
|
||||
}
|
||||
@ -7,6 +7,7 @@ import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.core.graphics.Insets;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.core.view.WindowInsetsCompat;
|
||||
import androidx.lifecycle.Observer;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
@ -15,7 +16,6 @@ import android.content.Intent;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
@ -32,19 +32,17 @@ import com.exquisite.KeyboardSkin;
|
||||
import com.exquisite.adapter.ThumAdapter;
|
||||
|
||||
import com.exquisite.callback.Adcallback;
|
||||
import com.exquisite.callback.DownloadCallback;
|
||||
import com.exquisite.callback.UnzipCallback;
|
||||
import com.exquisite.data.Mydata;
|
||||
import com.exquisite.data.MydataBase;
|
||||
import com.exquisite.data.StaticValue;
|
||||
import com.exquisite.demo08.R;
|
||||
import com.exquisite.mintegral.ADBean;
|
||||
import com.exquisite.mintegral.MBrManager;
|
||||
import com.exquisite.mintegral.Mylistener;
|
||||
import com.exquisite.mintegral.onAdStatusListener;
|
||||
import com.exquisite.R;
|
||||
|
||||
import com.exquisite.tools.Mytools;
|
||||
import com.exquisite.tools.SpaceItem;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class PreviewActivity extends AppCompatActivity implements View.OnClickListener {
|
||||
@ -60,7 +58,13 @@ public class PreviewActivity extends AppCompatActivity implements View.OnClickLi
|
||||
|
||||
private ProgressBar progressBarDownload;
|
||||
private List<ATInterstitial> ads;
|
||||
|
||||
private ThumAdapter thumAdapter;
|
||||
private ImageView like;
|
||||
private Boolean islike = false;
|
||||
private Mydata otherdata;
|
||||
private TextView downloadText;
|
||||
private ImageView downImage;
|
||||
private List<Mydata> newList = new ArrayList<>();
|
||||
@SuppressLint("MissingInflatedId")
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
@ -80,14 +84,74 @@ public class PreviewActivity extends AppCompatActivity implements View.OnClickLi
|
||||
imageView.setVisibility(View.GONE);
|
||||
progressBarPreview.setVisibility(View.VISIBLE);
|
||||
progressBarDownload.setVisibility(View.GONE);
|
||||
|
||||
SpaceItem spaceItem = new SpaceItem(10, 20, 10);
|
||||
previewrv.setAdapter(new ThumAdapter(this, KeyboardSkin.getMyDataArrayList()));
|
||||
previewrv.setLayoutManager(new GridLayoutManager(this, 2));
|
||||
previewrv.setLayoutManager(new GridLayoutManager(PreviewActivity.this, 2));
|
||||
previewrv.addItemDecoration(spaceItem);
|
||||
|
||||
Mytools.runIO(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
List<Mydata> mydata = MydataBase.getInstance().myDAO().getAlldata();
|
||||
Collections.shuffle(mydata);
|
||||
newList = mydata.subList(0, 10);
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
thumAdapter = new ThumAdapter(PreviewActivity.this, newList);
|
||||
previewrv.setAdapter(thumAdapter);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
// MydataBase.getInstance().myDAO().getAll().observe(this, new Observer<List<Mydata>>() {
|
||||
// @Override
|
||||
// public void onChanged(List<Mydata> mydata) {
|
||||
//
|
||||
//
|
||||
//
|
||||
// }
|
||||
// });
|
||||
|
||||
Intent intent = getIntent();
|
||||
preview = intent.getStringExtra(StaticValue.KEY_PRE);
|
||||
name = intent.getStringExtra(StaticValue.KEY_NAME);
|
||||
url = intent.getStringExtra(StaticValue.KEY_URL);
|
||||
|
||||
Mytools.runIO(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
List<Mydata> existingData = MydataBase.getInstance().myDAO().checklikelist(preview);
|
||||
if (!existingData.isEmpty()) {
|
||||
otherdata = existingData.get(0);
|
||||
islike = otherdata.getIslike();
|
||||
boolean isdown = otherdata.getDownloaded();
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (islike) {
|
||||
like.setBackgroundResource(R.drawable.icon_like_check);
|
||||
} else {
|
||||
like.setBackgroundResource(R.drawable.icon_like_uncheck);
|
||||
}
|
||||
if (isdown) {
|
||||
downloadText.setText(R.string.download_apply);
|
||||
downImage.setVisibility(View.GONE);
|
||||
}
|
||||
String path = StaticValue.PATH;
|
||||
if (path.equals(otherdata.getPath())) {
|
||||
// binding.download.setSelected(true);
|
||||
downloadText.setText(R.string.download_text_using);
|
||||
settings.setEnabled(false);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Glide.with(this)
|
||||
.asBitmap()
|
||||
.load(preview)
|
||||
@ -114,9 +178,13 @@ public class PreviewActivity extends AppCompatActivity implements View.OnClickLi
|
||||
back.setOnClickListener(this);
|
||||
viewall.setOnClickListener(this);
|
||||
settings.setOnClickListener(this);
|
||||
like.setOnClickListener(this);
|
||||
}
|
||||
|
||||
private void intView() {
|
||||
downImage = findViewById(R.id.pre_down_image);
|
||||
downloadText = findViewById(R.id.pre_down_text);
|
||||
like = findViewById(R.id.preview_islike);
|
||||
back = findViewById(R.id.detail_back);
|
||||
imageView = findViewById(R.id.preview_image);
|
||||
viewall = findViewById(R.id.preview_all);
|
||||
@ -139,27 +207,61 @@ public class PreviewActivity extends AppCompatActivity implements View.OnClickLi
|
||||
Intent intent = new Intent(PreviewActivity.this, AllActivity.class);
|
||||
startActivity(intent);
|
||||
break;
|
||||
case R.id.preview_islike:
|
||||
checkLike();
|
||||
break;
|
||||
case R.id.detail_setting:
|
||||
download();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void checkLike() {
|
||||
if (!islike) {
|
||||
like.setBackgroundResource(R.drawable.icon_like_check);
|
||||
islike = true;
|
||||
otherdata.setIslike(true);
|
||||
Mytools.runIO(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
MydataBase.getInstance().myDAO().update(otherdata);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
like.setBackgroundResource(R.drawable.icon_like_uncheck);
|
||||
islike = false;
|
||||
otherdata.setIslike(false);
|
||||
Mytools.runIO(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
MydataBase.getInstance().myDAO().update(otherdata);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
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 showAd() {
|
||||
ATInterstitial mInterstitialAd = Mytools.onCache(ads);
|
||||
if (mInterstitialAd == null) {
|
||||
finish();
|
||||
showKey();
|
||||
} else {
|
||||
if (mInterstitialAd.isAdReady()) {
|
||||
Mytools.setCallback(mInterstitialAd, new Adcallback() {
|
||||
@Override
|
||||
public void onShowFail(AdError ad) {
|
||||
finish();
|
||||
showKey();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAdHidden() {
|
||||
finish();
|
||||
showKey();
|
||||
}
|
||||
});
|
||||
mInterstitialAd.show(this);
|
||||
@ -182,7 +284,6 @@ public class PreviewActivity extends AppCompatActivity implements View.OnClickLi
|
||||
Mytools.unZip(this, unzipPath, resource, (successful1, resDirPath) -> {
|
||||
if (successful1) {
|
||||
StaticValue.PATH = resDirPath;
|
||||
Toast.makeText(PreviewActivity.this, getString(R.string.set_successful), Toast.LENGTH_SHORT).show();
|
||||
progressBarDownload.setVisibility(View.GONE);
|
||||
showAd();
|
||||
|
||||
|
||||
@ -7,28 +7,23 @@ import androidx.core.view.ViewCompat;
|
||||
import androidx.core.view.WindowInsetsCompat;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.recyclerview.widget.StaggeredGridLayoutManager;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
import android.view.inputmethod.EditorInfo;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.exquisite.KeyboardSkin;
|
||||
import com.exquisite.adapter.ThumAdapter;
|
||||
import com.exquisite.data.Mydata;
|
||||
import com.exquisite.data.StaticValue;
|
||||
import com.exquisite.demo08.R;
|
||||
import com.exquisite.R;
|
||||
import com.exquisite.tools.SpaceItem;
|
||||
|
||||
import java.util.List;
|
||||
@ -116,7 +111,7 @@ public class SearchActivity extends AppCompatActivity implements View.OnClickLis
|
||||
faile.setVisibility(View.GONE);
|
||||
searchrv.setVisibility(View.VISIBLE);
|
||||
searchrv.setAdapter(new ThumAdapter(this, filteredData));
|
||||
searchrv.setLayoutManager(new GridLayoutManager(this, 2));
|
||||
searchrv.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL));
|
||||
}
|
||||
}
|
||||
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||
|
||||
@ -0,0 +1,66 @@
|
||||
package com.exquisite.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.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.util.Log;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
|
||||
import com.exquisite.KeyboardSkin;
|
||||
import com.exquisite.R;
|
||||
import com.exquisite.data.StaticValue;
|
||||
import com.exquisite.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;
|
||||
});
|
||||
|
||||
Intent intent = getIntent();
|
||||
int a = intent.getIntExtra(StaticValue.KEY_ISshow, 0);
|
||||
KeyboardSkin.a = a;
|
||||
// Log.e("zzj", "---a---" + a);
|
||||
|
||||
binding.showBack.setOnClickListener(v -> finish());
|
||||
|
||||
}
|
||||
|
||||
@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();
|
||||
}
|
||||
}
|
||||
@ -5,32 +5,21 @@ import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.core.graphics.Insets;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.core.view.WindowInsetsCompat;
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.os.Bundle;
|
||||
import android.os.CountDownTimer;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
||||
import com.anythink.core.api.AdError;
|
||||
import com.anythink.interstitial.api.ATInterstitial;
|
||||
import com.exquisite.KeyboardSkin;
|
||||
import com.exquisite.callback.Adcallback;
|
||||
import com.exquisite.demo08.R;
|
||||
import com.exquisite.mintegral.ADBean;
|
||||
import com.exquisite.mintegral.MBrManager;
|
||||
import com.exquisite.mintegral.Mylistener;
|
||||
import com.exquisite.mintegral.onAdStatusListener;
|
||||
import com.exquisite.mintegral.onInterHandlerListener;
|
||||
import com.exquisite.R;
|
||||
|
||||
import com.exquisite.tools.CustomProgressBar;
|
||||
import com.exquisite.tools.Mytools;
|
||||
import com.mbridge.msdk.mbbid.out.BidListennning;
|
||||
import com.mbridge.msdk.mbbid.out.BidManager;
|
||||
import com.mbridge.msdk.mbbid.out.BidResponsed;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -38,8 +27,8 @@ public class SplashActivity extends AppCompatActivity {
|
||||
private CountDownTimer countDownTimer;
|
||||
private List<ATInterstitial> ads;
|
||||
|
||||
public static boolean isAlreadyShow = false;
|
||||
|
||||
private boolean isAlreadyShow = false;
|
||||
private float i = 0;
|
||||
@SuppressLint("MissingInflatedId")
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
@ -53,11 +42,15 @@ public class SplashActivity extends AppCompatActivity {
|
||||
return insets;
|
||||
});
|
||||
|
||||
CustomProgressBar customProgressBar = findViewById(R.id.splash_pg);
|
||||
|
||||
ads = KeyboardSkin.lodAd();
|
||||
|
||||
countDownTimer = new CountDownTimer(11000, 100) {
|
||||
@Override
|
||||
public void onTick(long l) {
|
||||
i++;
|
||||
customProgressBar.setProgress(i);
|
||||
if (!isAlreadyShow) {
|
||||
showAd(false);
|
||||
}
|
||||
@ -102,7 +95,6 @@ public class SplashActivity extends AppCompatActivity {
|
||||
goMain();
|
||||
}
|
||||
});
|
||||
|
||||
mInterstitialAd.show(this);
|
||||
} else {
|
||||
mInterstitialAd.load();
|
||||
|
||||
33
app/src/main/java/com/exquisite/activity/WebActivity.java
Normal file
33
app/src/main/java/com/exquisite/activity/WebActivity.java
Normal file
@ -0,0 +1,33 @@
|
||||
package com.exquisite.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.os.Bundle;
|
||||
import android.webkit.WebView;
|
||||
import android.webkit.WebViewClient;
|
||||
|
||||
import com.exquisite.R;
|
||||
|
||||
public class WebActivity extends AppCompatActivity {
|
||||
|
||||
@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");
|
||||
}
|
||||
}
|
||||
@ -5,8 +5,9 @@ import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentPagerAdapter;
|
||||
|
||||
import com.exquisite.fragment.PageOneFragment;
|
||||
import com.exquisite.fragment.PageTwoFragment;
|
||||
import com.exquisite.fragment.LikeFragment;
|
||||
import com.exquisite.fragment.MainFragment;
|
||||
import com.exquisite.fragment.SettingFragment;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@ -16,8 +17,10 @@ public class PageAdapter extends FragmentPagerAdapter {
|
||||
|
||||
public PageAdapter(@NonNull FragmentManager fm) {
|
||||
super(fm);
|
||||
list.add(new PageOneFragment());
|
||||
list.add(new PageTwoFragment());
|
||||
list.add(new MainFragment());
|
||||
list.add(new LikeFragment());
|
||||
list.add(new SettingFragment());
|
||||
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@ -28,6 +31,6 @@ public class PageAdapter extends FragmentPagerAdapter {
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return 2;
|
||||
return list.size();
|
||||
}
|
||||
}
|
||||
|
||||
@ -11,14 +11,13 @@ import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
|
||||
import com.exquisite.R;
|
||||
import com.exquisite.activity.PreviewActivity;
|
||||
import com.exquisite.data.Mydata;
|
||||
import com.exquisite.data.StaticValue;
|
||||
import com.exquisite.demo08.R;
|
||||
import com.exquisite.tools.Mytools;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
public class ThumAdapter extends RecyclerView.Adapter<ThumVH> {
|
||||
private Context myContext;
|
||||
@ -39,7 +38,17 @@ public class ThumAdapter extends RecyclerView.Adapter<ThumVH> {
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull ThumVH holder, int position) {
|
||||
Mydata myData = myDataList.get(position);
|
||||
String thumbnail = myData.getThumbnail();
|
||||
String thumbnail = myData.getThumb();
|
||||
|
||||
if (position == getItemCount() - 1) {
|
||||
holder.getView().setVisibility(View.VISIBLE);
|
||||
} else if (position == getItemCount() - 2) {
|
||||
holder.getView().setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
holder.getView().setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
|
||||
Glide.with(myContext)
|
||||
.load(thumbnail)
|
||||
.placeholder(R.mipmap.logo)
|
||||
@ -47,8 +56,8 @@ public class ThumAdapter extends RecyclerView.Adapter<ThumVH> {
|
||||
.into(holder.getImageViewThumb());
|
||||
holder.getConstraintLayout().setOnClickListener(v -> {
|
||||
Intent intent = new Intent(myContext, PreviewActivity.class);
|
||||
intent.putExtra(StaticValue.KEY_NAME, myData.getResourceName());
|
||||
intent.putExtra(StaticValue.KEY_URL, myData.getUrl());
|
||||
intent.putExtra(StaticValue.KEY_NAME, myData.getTitle());
|
||||
intent.putExtra(StaticValue.KEY_URL, myData.getZipUrl());
|
||||
intent.putExtra(StaticValue.KEY_PRE, myData.getPreview());
|
||||
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
myContext.startActivity(intent);
|
||||
|
||||
@ -7,16 +7,22 @@ import androidx.annotation.NonNull;
|
||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.exquisite.demo08.R;
|
||||
import com.exquisite.R;
|
||||
|
||||
public class ThumVH extends RecyclerView.ViewHolder {
|
||||
private ImageView imageViewThumb;
|
||||
private ConstraintLayout constraintLayout;
|
||||
private View view;
|
||||
|
||||
public ThumVH(@NonNull View itemView) {
|
||||
super(itemView);
|
||||
imageViewThumb = itemView.findViewById(R.id.image_view_thumb_id);
|
||||
constraintLayout = itemView.findViewById(R.id.constraint_layout_id);
|
||||
view = itemView.findViewById(R.id.view);
|
||||
}
|
||||
|
||||
public View getView() {
|
||||
return view;
|
||||
}
|
||||
|
||||
public ConstraintLayout getConstraintLayout() {
|
||||
|
||||
34
app/src/main/java/com/exquisite/data/MyDAO.java
Normal file
34
app/src/main/java/com/exquisite/data/MyDAO.java
Normal file
@ -0,0 +1,34 @@
|
||||
package com.exquisite.data;
|
||||
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.room.Dao;
|
||||
import androidx.room.Insert;
|
||||
import androidx.room.Query;
|
||||
import androidx.room.Update;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Dao
|
||||
public interface MyDAO {
|
||||
@Query("SELECT * FROM keyboard_table")
|
||||
LiveData<List<Mydata>> getAll();
|
||||
@Query("SELECT * FROM keyboard_table")
|
||||
List<Mydata> getAlldata();
|
||||
@Query("select * from keyboard_table where preview =:pre ")
|
||||
List<Mydata> checklikelist(String pre);
|
||||
|
||||
@Query("select * from keyboard_table where className =:classname ")
|
||||
List<Mydata> getotherlist(String classname);
|
||||
|
||||
@Query("SELECT * FROM keyboard_table WHERE islike = :islike")
|
||||
LiveData<List<Mydata>> getlikelist(boolean islike);
|
||||
|
||||
@Query("SELECT * FROM keyboard_table WHERE title LIKE '%' || :title || '%'")
|
||||
List<Mydata> getSearchData(String title);
|
||||
|
||||
@Insert
|
||||
void insertAll(List<Mydata> likeDataList);
|
||||
|
||||
@Update
|
||||
void update(Mydata otherdata);
|
||||
}
|
||||
@ -1,52 +1,94 @@
|
||||
package com.exquisite.data;
|
||||
|
||||
import androidx.room.Entity;
|
||||
import androidx.room.PrimaryKey;
|
||||
|
||||
import com.exquisite.KeyboardSkin;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Entity(tableName = KeyboardSkin.Table_Name)
|
||||
public class Mydata {
|
||||
private String resourceName;
|
||||
|
||||
private String thumbnail;
|
||||
private String preview;
|
||||
|
||||
private String url;
|
||||
|
||||
public void setPreview(String preview) {
|
||||
this.preview = preview;
|
||||
}
|
||||
|
||||
public void setResourceName(String resourceName) {
|
||||
this.resourceName = resourceName;
|
||||
}
|
||||
|
||||
public void setThumbnail(String thumbnail) {
|
||||
this.thumbnail = thumbnail;
|
||||
}
|
||||
|
||||
public void setUrl(String url) {
|
||||
this.url = url;
|
||||
}
|
||||
@PrimaryKey(autoGenerate = true)
|
||||
public int id;
|
||||
public String preview;
|
||||
public String thumb;
|
||||
public String className;
|
||||
public String title;
|
||||
public String zipUrl;
|
||||
public Boolean islike;
|
||||
public Boolean isDownloaded;
|
||||
public String path;
|
||||
|
||||
public String getPreview() {
|
||||
return preview;
|
||||
}
|
||||
|
||||
public String getResourceName() {
|
||||
return resourceName;
|
||||
public void setPreview(String preview) {
|
||||
this.preview = preview;
|
||||
}
|
||||
|
||||
public String getThumbnail() {
|
||||
return thumbnail;
|
||||
public String getThumb() {
|
||||
return thumb;
|
||||
}
|
||||
|
||||
public String getUrl() {
|
||||
return url;
|
||||
public void setThumb(String thumb) {
|
||||
this.thumb = thumb;
|
||||
}
|
||||
|
||||
public String getClassName() {
|
||||
return className;
|
||||
}
|
||||
|
||||
public void setClassName(String className) {
|
||||
this.className = className;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public void setTitle(String title) {
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
public String getZipUrl() {
|
||||
return zipUrl;
|
||||
}
|
||||
|
||||
public void setZipUrl(String zipUrl) {
|
||||
this.zipUrl = zipUrl;
|
||||
}
|
||||
|
||||
public Boolean getIslike() {
|
||||
return islike;
|
||||
}
|
||||
|
||||
public void setIslike(Boolean islike) {
|
||||
this.islike = islike;
|
||||
}
|
||||
|
||||
public Boolean getDownloaded() {
|
||||
return isDownloaded;
|
||||
}
|
||||
|
||||
public void setDownloaded(Boolean downloaded) {
|
||||
isDownloaded = downloaded;
|
||||
}
|
||||
|
||||
public String getPath() {
|
||||
return path;
|
||||
}
|
||||
|
||||
public void setPath(String path) {
|
||||
this.path = path;
|
||||
}
|
||||
|
||||
public List<Mydata> filterByName(String input, List<Mydata> dataList) {
|
||||
List<Mydata> filteredList = new ArrayList<>();
|
||||
for (Mydata data : dataList) {
|
||||
if (data.getResourceName().toLowerCase().contains(input.toLowerCase())) {
|
||||
if (data.getTitle().toLowerCase().contains(input.toLowerCase())) {
|
||||
filteredList.add(data);
|
||||
}
|
||||
}
|
||||
|
||||
24
app/src/main/java/com/exquisite/data/MydataBase.java
Normal file
24
app/src/main/java/com/exquisite/data/MydataBase.java
Normal file
@ -0,0 +1,24 @@
|
||||
package com.exquisite.data;
|
||||
|
||||
import androidx.room.Database;
|
||||
import androidx.room.Room;
|
||||
import androidx.room.RoomDatabase;
|
||||
|
||||
import com.exquisite.KeyboardSkin;
|
||||
|
||||
|
||||
@Database(entities = {Mydata.class}, version = KeyboardSkin.DB_Version, exportSchema = false)
|
||||
public abstract class MydataBase extends RoomDatabase {
|
||||
public abstract MyDAO myDAO();
|
||||
|
||||
private static MydataBase INSTANCE;
|
||||
|
||||
public static MydataBase getInstance() {
|
||||
if (INSTANCE == null) {
|
||||
synchronized (MydataBase.class) {
|
||||
INSTANCE = Room.databaseBuilder(KeyboardSkin.getAppContext(), MydataBase.class, KeyboardSkin.DB_Name).build();
|
||||
}
|
||||
}
|
||||
return INSTANCE;
|
||||
}
|
||||
}
|
||||
@ -5,4 +5,5 @@ public class StaticValue {
|
||||
public static String KEY_URL = "key_url";
|
||||
public static String KEY_PRE = "key_pre";
|
||||
public static String PATH = "";
|
||||
public static String KEY_ISshow = "";
|
||||
}
|
||||
|
||||
@ -6,7 +6,6 @@ import android.os.Bundle;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentPagerAdapter;
|
||||
import androidx.fragment.app.FragmentStatePagerAdapter;
|
||||
import androidx.viewpager.widget.ViewPager;
|
||||
|
||||
@ -15,7 +14,7 @@ import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.exquisite.demo08.R;
|
||||
import com.exquisite.R;
|
||||
import com.google.android.material.tabs.TabLayout;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
@ -11,7 +11,7 @@ import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.exquisite.KeyboardSkin;
|
||||
import com.exquisite.adapter.ThumAdapter;
|
||||
import com.exquisite.demo08.R;
|
||||
import com.exquisite.R;
|
||||
import com.exquisite.tools.SpaceItem;
|
||||
|
||||
public class FragmentAesthetic extends Fragment {
|
||||
|
||||
@ -11,7 +11,7 @@ import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.exquisite.KeyboardSkin;
|
||||
import com.exquisite.adapter.ThumAdapter;
|
||||
import com.exquisite.demo08.R;
|
||||
import com.exquisite.R;
|
||||
import com.exquisite.tools.SpaceItem;
|
||||
|
||||
public class FragmentCool extends Fragment {
|
||||
|
||||
@ -12,7 +12,7 @@ import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.exquisite.KeyboardSkin;
|
||||
import com.exquisite.adapter.ThumAdapter;
|
||||
import com.exquisite.demo08.R;
|
||||
import com.exquisite.R;
|
||||
import com.exquisite.tools.SpaceItem;
|
||||
|
||||
|
||||
|
||||
@ -11,7 +11,7 @@ import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.exquisite.KeyboardSkin;
|
||||
import com.exquisite.adapter.ThumAdapter;
|
||||
import com.exquisite.demo08.R;
|
||||
import com.exquisite.R;
|
||||
import com.exquisite.tools.SpaceItem;
|
||||
|
||||
public class FragmentForyou extends Fragment {
|
||||
|
||||
@ -11,7 +11,7 @@ import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.exquisite.KeyboardSkin;
|
||||
import com.exquisite.adapter.ThumAdapter;
|
||||
import com.exquisite.demo08.R;
|
||||
import com.exquisite.R;
|
||||
import com.exquisite.tools.SpaceItem;
|
||||
|
||||
public class FragmentLove extends Fragment {
|
||||
|
||||
@ -11,7 +11,7 @@ import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.exquisite.KeyboardSkin;
|
||||
import com.exquisite.adapter.ThumAdapter;
|
||||
import com.exquisite.demo08.R;
|
||||
import com.exquisite.R;
|
||||
import com.exquisite.tools.SpaceItem;
|
||||
|
||||
|
||||
|
||||
58
app/src/main/java/com/exquisite/fragment/LikeFragment.java
Normal file
58
app/src/main/java/com/exquisite/fragment/LikeFragment.java
Normal file
@ -0,0 +1,58 @@
|
||||
package com.exquisite.fragment;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.lifecycle.Observer;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.StaggeredGridLayoutManager;
|
||||
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.exquisite.adapter.ThumAdapter;
|
||||
import com.exquisite.data.Mydata;
|
||||
import com.exquisite.data.MydataBase;
|
||||
import com.exquisite.R;
|
||||
import com.exquisite.databinding.FragmentLikeBinding;
|
||||
import com.exquisite.tools.Mytools;
|
||||
import com.exquisite.tools.SpaceItem;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public class LikeFragment extends Fragment {
|
||||
FragmentLikeBinding binding;
|
||||
private SpaceItem spaceItem = new SpaceItem(12, 12, 12);
|
||||
private List<Mydata> likelist = new ArrayList<>();
|
||||
private ThumAdapter thumAdapter;
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
binding = FragmentLikeBinding.inflate(getLayoutInflater());
|
||||
|
||||
initData();
|
||||
binding.likeRv.addItemDecoration(spaceItem);
|
||||
|
||||
return binding.getRoot();
|
||||
}
|
||||
|
||||
private void initData() {
|
||||
MydataBase.getInstance().myDAO().getlikelist(true).observe(getViewLifecycleOwner(), new Observer<List<Mydata>>() {
|
||||
@Override
|
||||
public void onChanged(List<Mydata> mydata) {
|
||||
if (mydata.isEmpty()) {
|
||||
binding.nolikeText.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
binding.nolikeText.setVisibility(View.GONE);
|
||||
}
|
||||
thumAdapter = new ThumAdapter(requireContext(), mydata);
|
||||
binding.likeRv.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL));
|
||||
binding.likeRv.setAdapter(thumAdapter);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
106
app/src/main/java/com/exquisite/fragment/MainFragment.java
Normal file
106
app/src/main/java/com/exquisite/fragment/MainFragment.java
Normal file
@ -0,0 +1,106 @@
|
||||
package com.exquisite.fragment;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.lifecycle.Observer;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
import com.exquisite.KeyboardSkin;
|
||||
import com.exquisite.activity.AllActivity;
|
||||
import com.exquisite.activity.SearchActivity;
|
||||
import com.exquisite.adapter.ThumAdapter;
|
||||
import com.exquisite.data.Mydata;
|
||||
import com.exquisite.data.MydataBase;
|
||||
import com.exquisite.R;
|
||||
import com.exquisite.tools.Mytools;
|
||||
import com.exquisite.tools.SpaceItem;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public class MainFragment extends Fragment {
|
||||
private RecyclerView mainrv;
|
||||
private LinearLayout viewall;
|
||||
private ImageView seach;
|
||||
private SpaceItem spaceItem = new SpaceItem(10, 20, 10);
|
||||
private ThumAdapter thumAdapter;
|
||||
private List<Mydata> mainrandomlist = new ArrayList<>();
|
||||
|
||||
@SuppressLint("MissingInflatedId")
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.fragment_page_one, container, false);
|
||||
viewall = view.findViewById(R.id.view_all);
|
||||
seach = view.findViewById(R.id.search_image);
|
||||
mainrv = view.findViewById(R.id.main_keyboard_rv);
|
||||
|
||||
viewall.setOnClickListener(v -> {
|
||||
Intent intent = new Intent(getActivity(), AllActivity.class);
|
||||
startActivity(intent);
|
||||
});
|
||||
|
||||
seach.setOnClickListener(v -> {
|
||||
Intent intent1 = new Intent(getActivity(), SearchActivity.class);
|
||||
startActivity(intent1);
|
||||
});
|
||||
|
||||
initData();
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
private void initData() {
|
||||
|
||||
List<Mydata> mainrvdataList = KeyboardSkin.getMyDataArrayList();
|
||||
mainrvdataList.subList(0, 20);
|
||||
for (Mydata data : mainrvdataList) {
|
||||
if (mainrandomlist.size() < 20) {
|
||||
mainrandomlist.add(data);
|
||||
}
|
||||
}
|
||||
thumAdapter = new ThumAdapter(requireContext(), mainrandomlist);
|
||||
mainrv.setAdapter(thumAdapter);
|
||||
mainrv.setLayoutManager(new GridLayoutManager(requireContext(), 2));
|
||||
mainrv.addItemDecoration(spaceItem);
|
||||
// Mytools.runIO(new Runnable() {
|
||||
// @Override
|
||||
// public void run() {
|
||||
// List<Mydata> mydata = MydataBase.getInstance().myDAO().getAlldata();
|
||||
// requireActivity().runOnUiThread(new Runnable() {
|
||||
// @Override
|
||||
// public void run() {
|
||||
//// Collections.shuffle(mydata);
|
||||
// List<Mydata> newList = mydata.subList(10, 20);
|
||||
// thumAdapter = new ThumAdapter(requireContext(), newList);
|
||||
// mainrv.setAdapter(thumAdapter);
|
||||
// mainrv.setLayoutManager(new GridLayoutManager(requireContext(), 2));
|
||||
// mainrv.addItemDecoration(spaceItem);
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
// });
|
||||
// MydataBase.getInstance().myDAO().getAll().observe(getViewLifecycleOwner(), new Observer<List<Mydata>>() {
|
||||
// @Override
|
||||
// public void onChanged(List<Mydata> mydata) {
|
||||
// Collections.shuffle(mydata);
|
||||
// List<Mydata> newList = mydata.subList(0, 20);
|
||||
// thumAdapter = new ThumAdapter(requireContext(), newList);
|
||||
// mainrv.setAdapter(thumAdapter);
|
||||
// mainrv.setLayoutManager(new GridLayoutManager(requireContext(), 2));
|
||||
// mainrv.addItemDecoration(spaceItem);
|
||||
// }
|
||||
// });
|
||||
}
|
||||
}
|
||||
@ -1,51 +0,0 @@
|
||||
package com.exquisite.fragment;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Intent;
|
||||
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 android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.exquisite.KeyboardSkin;
|
||||
import com.exquisite.activity.AllActivity;
|
||||
import com.exquisite.activity.SearchActivity;
|
||||
import com.exquisite.adapter.ThumAdapter;
|
||||
import com.exquisite.demo08.R;
|
||||
import com.exquisite.tools.SpaceItem;
|
||||
|
||||
|
||||
public class PageOneFragment extends Fragment {
|
||||
private RecyclerView mainrv;
|
||||
private LinearLayout viewall;
|
||||
private ImageView seach;
|
||||
@SuppressLint("MissingInflatedId")
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.fragment_page_one, container, false);
|
||||
viewall = view.findViewById(R.id.view_all);
|
||||
seach = view.findViewById(R.id.search_image);
|
||||
mainrv = view.findViewById(R.id.main_keyboard_rv);
|
||||
viewall.setOnClickListener(v -> {
|
||||
Intent intent = new Intent(getActivity(), AllActivity.class);
|
||||
startActivity(intent);
|
||||
});
|
||||
seach.setOnClickListener(v -> {
|
||||
Intent intent1 = new Intent(getActivity(), SearchActivity.class);
|
||||
startActivity(intent1);
|
||||
});
|
||||
SpaceItem spaceItem = new SpaceItem(10, 20, 10);
|
||||
mainrv.setAdapter(new ThumAdapter(requireContext(), KeyboardSkin.getMyDataArrayList()));
|
||||
mainrv.setLayoutManager(new GridLayoutManager(requireContext(), 2));
|
||||
mainrv.addItemDecoration(spaceItem);
|
||||
return view;
|
||||
}
|
||||
}
|
||||
@ -1,59 +0,0 @@
|
||||
package com.exquisite.fragment;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.exquisite.activity.KeyBoardSettingsActivity;
|
||||
import com.exquisite.demo08.R;
|
||||
|
||||
public class PageTwoFragment extends Fragment implements View.OnClickListener {
|
||||
private LinearLayout settings, rate, privacy;
|
||||
|
||||
@SuppressLint("MissingInflatedId")
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.fragment_page_two, container, false);
|
||||
settings = view.findViewById(R.id.keyboard_setting);
|
||||
rate = view.findViewById(R.id.rate_us);
|
||||
privacy = view.findViewById(R.id.privacy);
|
||||
initEvent();
|
||||
return view;
|
||||
}
|
||||
|
||||
private void initEvent() {
|
||||
settings.setOnClickListener(this);
|
||||
rate.setOnClickListener(this);
|
||||
privacy.setOnClickListener(this);
|
||||
}
|
||||
|
||||
|
||||
@SuppressLint("NonConstantResourceId")
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
switch (v.getId()) {
|
||||
case R.id.keyboard_setting:
|
||||
Intent intent1 = new Intent(getActivity(), KeyBoardSettingsActivity.class);
|
||||
startActivity(intent1);
|
||||
break;
|
||||
case R.id.rate_us:
|
||||
break;
|
||||
case R.id.privacy:
|
||||
String url = getString(R.string.url_privacy);
|
||||
Intent intent2 = new Intent(Intent.ACTION_VIEW);
|
||||
intent2.setData(Uri.parse(url));
|
||||
startActivity(intent2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,76 @@
|
||||
package com.exquisite.fragment;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.exquisite.activity.KeyBoardSettingsActivity;
|
||||
import com.exquisite.activity.WebActivity;
|
||||
import com.exquisite.R;
|
||||
import com.exquisite.databinding.FragmentPageTwoBinding;
|
||||
|
||||
public class SettingFragment extends Fragment {
|
||||
FragmentPageTwoBinding binding;
|
||||
|
||||
@SuppressLint("MissingInflatedId")
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
binding = FragmentPageTwoBinding.inflate(getLayoutInflater());
|
||||
|
||||
initEvent();
|
||||
return binding.getRoot();
|
||||
}
|
||||
|
||||
private void initEvent() {
|
||||
|
||||
binding.versionText.setText("1.0.8");
|
||||
binding.keyboardSetting.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Intent intent1 = new Intent(getActivity(), KeyBoardSettingsActivity.class);
|
||||
startActivity(intent1);
|
||||
}
|
||||
});
|
||||
|
||||
binding.share.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Intent share = new Intent(Intent.ACTION_SEND);
|
||||
share.setType("text/plain");
|
||||
share.putExtra(Intent.EXTRA_SUBJECT, R.string.app_name);
|
||||
String text = getString(R.string.share_title);
|
||||
text = text + "\n https://play.google.com/store/apps/details?id=" + "com.key.keyboardskins";
|
||||
share.putExtra(Intent.EXTRA_TEXT, text);
|
||||
startActivity(Intent.createChooser(share, "choose one"));
|
||||
}
|
||||
});
|
||||
|
||||
binding.rate.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
String url = "https://play.google.com/store/apps/details?id=com.key.keyboardskins";
|
||||
Intent intent = new Intent(Intent.ACTION_VIEW);
|
||||
intent.setData(Uri.parse(url));
|
||||
startActivity(intent);
|
||||
}
|
||||
});
|
||||
|
||||
binding.privacy.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Intent intent2 = new Intent(requireContext(), WebActivity.class);
|
||||
startActivity(intent2);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,18 +1,14 @@
|
||||
package com.exquisite.keyboard;
|
||||
|
||||
import android.app.Service;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.inputmethodservice.InputMethodService;
|
||||
import android.inputmethodservice.Keyboard;
|
||||
import android.inputmethodservice.KeyboardView;
|
||||
import android.os.IBinder;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.inputmethod.EditorInfo;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
|
||||
import com.exquisite.demo08.R;
|
||||
import com.exquisite.R;
|
||||
|
||||
public class KeyboardService extends InputMethodService implements KeyboardView.OnKeyboardActionListener {
|
||||
private int[] ViewXmls = new int[4];
|
||||
|
||||
@ -7,7 +7,6 @@ import android.graphics.drawable.Drawable;
|
||||
import android.inputmethodservice.Keyboard;
|
||||
import android.inputmethodservice.KeyboardView;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
|
||||
import com.exquisite.tools.CustomViewConfig;
|
||||
import com.exquisite.tools.Mytools;
|
||||
|
||||
@ -1,25 +0,0 @@
|
||||
package com.exquisite.mintegral;
|
||||
|
||||
import com.mbridge.msdk.newinterstitial.out.MBBidNewInterstitialHandler;
|
||||
|
||||
public class ADBean {
|
||||
|
||||
private MBBidNewInterstitialHandler interstitialHandler;
|
||||
private String token;
|
||||
|
||||
public void setInterstitialHandler(MBBidNewInterstitialHandler interstitialHandler) {
|
||||
this.interstitialHandler = interstitialHandler;
|
||||
}
|
||||
|
||||
public void setToken(String token) {
|
||||
this.token = token;
|
||||
}
|
||||
|
||||
public MBBidNewInterstitialHandler getInterstitialHandler() {
|
||||
return interstitialHandler;
|
||||
}
|
||||
|
||||
public String getToken() {
|
||||
return token;
|
||||
}
|
||||
}
|
||||
@ -1,213 +0,0 @@
|
||||
package com.exquisite.mintegral;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.util.Log;
|
||||
|
||||
import com.exquisite.KeyboardSkin;
|
||||
import com.mbridge.msdk.MBridgeConstans;
|
||||
import com.mbridge.msdk.mbbid.out.BidListennning;
|
||||
import com.mbridge.msdk.mbbid.out.BidManager;
|
||||
import com.mbridge.msdk.mbbid.out.BidResponsed;
|
||||
import com.mbridge.msdk.newinterstitial.out.MBBidNewInterstitialHandler;
|
||||
import com.mbridge.msdk.newinterstitial.out.NewInterstitialListener;
|
||||
import com.mbridge.msdk.out.MBridgeIds;
|
||||
import com.mbridge.msdk.out.RewardInfo;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class MBrManager {
|
||||
|
||||
public static String TAG = "------------ltt";
|
||||
|
||||
public static String[] placeIDs = new String[]{"1628304", "1628319", "1628321"};
|
||||
|
||||
public static String[] unitIDs = new String[]{"3491035", "3491052", "3491054"};
|
||||
|
||||
public static List<ADBean> AdInstances = new ArrayList<>();
|
||||
|
||||
public static void getToken(String placeId, String unitId, onBidTokenListener listener) {
|
||||
BidManager manager = new BidManager(placeId, unitId);
|
||||
manager.setBidListener(new BidListennning() {
|
||||
@Override
|
||||
public void onFailed(String s) {
|
||||
listener.onBidToken("");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccessed(BidResponsed bidResponsed) {
|
||||
String mBidToken = bidResponsed.getBidToken();
|
||||
listener.onBidToken(mBidToken);
|
||||
}
|
||||
});
|
||||
manager.bid();
|
||||
}
|
||||
|
||||
;
|
||||
|
||||
public static void init(Activity activity, onInterHandlerListener listener) {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
String finalPlaceId = placeIDs[i];
|
||||
String unitId = unitIDs[i];
|
||||
getToken(finalPlaceId, unitId, new onBidTokenListener() {
|
||||
@Override
|
||||
public void onBidToken(String token) {
|
||||
MBBidNewInterstitialHandler mMBBidNewInterstitialHandler = new MBBidNewInterstitialHandler(KeyboardSkin.getAppContext(), finalPlaceId, unitId);
|
||||
ADBean adBean = new ADBean();
|
||||
Log.d(TAG, "------------token=" + token);
|
||||
adBean.setToken(token);
|
||||
adBean.setInterstitialHandler(mMBBidNewInterstitialHandler);
|
||||
mMBBidNewInterstitialHandler.loadFromBid(token);
|
||||
AdInstances.add(adBean);
|
||||
listener.onAddOK();
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void loadAllAd() {
|
||||
if (AdInstances.size() > 0) {
|
||||
for (ADBean adBean : AdInstances) {
|
||||
if (!adBean.getInterstitialHandler().isBidReady()) {
|
||||
adBean.getInterstitialHandler().loadFromBid(adBean.getToken());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static ADBean getCache() {
|
||||
Collections.shuffle(AdInstances);
|
||||
for (ADBean adBean : AdInstances) {
|
||||
if (adBean.getInterstitialHandler().isBidReady()) {
|
||||
return adBean;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
public static void setCallBack(MBBidNewInterstitialHandler mbBidNewInterstitialHandler, onAdStatusListener listener) {
|
||||
mbBidNewInterstitialHandler.setInterstitialVideoListener(new NewInterstitialListener() {
|
||||
|
||||
@Override
|
||||
public void onLoadCampaignSuccess(MBridgeIds ids) {
|
||||
/**
|
||||
* 广告已填充
|
||||
* @param ids 封装的广告id对象
|
||||
*/
|
||||
Log.i(TAG, "onLoadCampaignSuccess: " + Thread.currentThread() + " " + ids.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResourceLoadSuccess(MBridgeIds ids) {
|
||||
/**
|
||||
* 广告资源加载成功,可以播放
|
||||
* @param ids 封装的广告id对象
|
||||
*/
|
||||
Log.i(TAG, "onResourceLoadSuccess: " + Thread.currentThread() + " " + ids.toString());
|
||||
listener.onLoaded();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResourceLoadFail(MBridgeIds ids, String errorMsg) {
|
||||
/**
|
||||
* 广告加载失败
|
||||
* @param errorMsg 加载错误原因
|
||||
*/
|
||||
listener.onLoadFail();
|
||||
Log.e(TAG, "onResourceLoadFail errorMsg: " + errorMsg + " " + ids.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onShowFail(MBridgeIds ids, String errorMsg) {
|
||||
/**
|
||||
* 广告播放失败
|
||||
* @param errorMsg 错误原因
|
||||
*/
|
||||
listener.onShowFail();
|
||||
Log.e(TAG, "onShowFail: " + errorMsg + " " + ids.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAdShow(MBridgeIds ids) {
|
||||
/**
|
||||
* 广告成功展示
|
||||
*/
|
||||
Log.i(TAG, "onAdShow: " + ids.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAdClose(MBridgeIds ids, RewardInfo info) {
|
||||
/**
|
||||
* 广告关闭时调用
|
||||
* @param info.isCompleteView如果为true,则表示已完全观看了视频
|
||||
*/
|
||||
listener.onClose();
|
||||
loadAllAd();
|
||||
Log.i(TAG, "onAdClose: " + "isCompleteView:" + info.isCompleteView() + " " + ids.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAdClicked(MBridgeIds ids) {
|
||||
/**
|
||||
* 广告被点击
|
||||
* @param 封装的广告id对象
|
||||
*/
|
||||
Log.i(TAG, "onAdClicked: " + ids.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onVideoComplete(MBridgeIds ids) {
|
||||
/**
|
||||
* 广告播放完成时调用
|
||||
* @param ids 封装的广告id对象
|
||||
*/
|
||||
Log.i(TAG, "onVideoComplete: " + ids.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAdCloseWithNIReward(MBridgeIds ids, RewardInfo info) {
|
||||
/**
|
||||
* 如果开发人员设置了IV奖励,则在广告关闭时调用.
|
||||
*
|
||||
* @param 封装的广告id对象
|
||||
* @param info.isCompleteView() 是否完全观看
|
||||
*/
|
||||
Log.i(TAG, "onAdCloseWithNIReward: " + ids.toString() + " " + info.toString());
|
||||
|
||||
Log.i(TAG, info.isCompleteView() ? "Video playback/playable is complete." : "Video playback/playable is not complete.");
|
||||
|
||||
int rewardAlertStatus = info.getRewardAlertStatus();
|
||||
|
||||
if (rewardAlertStatus == MBridgeConstans.IVREWARDALERT_STATUS_NOTSHOWN) {
|
||||
Log.e(TAG, "The dialog is not show.");
|
||||
}
|
||||
|
||||
if (rewardAlertStatus == MBridgeConstans.IVREWARDALERT_STATUS_CLICKCONTINUE) {
|
||||
Log.e(TAG, "The dialog's continue button clicked.");
|
||||
}
|
||||
|
||||
if (rewardAlertStatus == MBridgeConstans.IVREWARDALERT_STATUS_CLICKCANCEL) {
|
||||
Log.e(TAG, "The dialog's cancel button clicked.");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEndcardShow(MBridgeIds ids) {
|
||||
/**
|
||||
* 展示广告落地页时调用
|
||||
* @param ids 封装的广告id对象
|
||||
*/
|
||||
Log.i(TAG, "onEndcardShow: " + ids.toString());
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -1,5 +0,0 @@
|
||||
package com.exquisite.mintegral;
|
||||
|
||||
public interface Mylistener {
|
||||
void actuion(boolean go);
|
||||
}
|
||||
@ -1,12 +0,0 @@
|
||||
package com.exquisite.mintegral;
|
||||
|
||||
import com.mbridge.msdk.newinterstitial.out.MBBidNewInterstitialHandler;
|
||||
|
||||
public interface onAdStatusListener {
|
||||
|
||||
void onLoaded();
|
||||
void onLoadFail();
|
||||
void onShowFail();
|
||||
|
||||
void onClose();
|
||||
}
|
||||
@ -1,6 +0,0 @@
|
||||
package com.exquisite.mintegral;
|
||||
|
||||
public interface onBidTokenListener {
|
||||
|
||||
void onBidToken(String token);
|
||||
}
|
||||
@ -1,15 +0,0 @@
|
||||
package com.exquisite.mintegral;
|
||||
|
||||
import com.mbridge.msdk.newinterstitial.out.MBBidNewInterstitialHandler;
|
||||
|
||||
public interface onInterHandlerListener {
|
||||
|
||||
void onAddOK();
|
||||
|
||||
|
||||
// void onLoaded();
|
||||
// void onLoadFail();
|
||||
// void onShowFail();
|
||||
//
|
||||
// void onClose();
|
||||
}
|
||||
62
app/src/main/java/com/exquisite/tools/CustomProgressBar.kt
Normal file
62
app/src/main/java/com/exquisite/tools/CustomProgressBar.kt
Normal file
@ -0,0 +1,62 @@
|
||||
package com.exquisite.tools
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Canvas
|
||||
import android.graphics.Color
|
||||
import android.graphics.LinearGradient
|
||||
import android.graphics.Paint
|
||||
import android.graphics.RectF
|
||||
import android.graphics.Shader
|
||||
import android.util.AttributeSet
|
||||
import android.view.View
|
||||
|
||||
class CustomProgressBar(context: Context, attrs: AttributeSet?) : View(context, attrs) {
|
||||
private var progress = 0f // 当前进度
|
||||
private val maxProgress = 100f // 最大进度
|
||||
private val progressBarHeight = 20f // 进度条高度
|
||||
private val cornerRadius = 10f // 圆角半径
|
||||
private val backgroundColor = Color.parseColor("#26FFFFFF")
|
||||
private val startColor = Color.parseColor("#FF9ce8ff") // 起始颜色
|
||||
private val middleColor = Color.parseColor("#FFa4c4fb") // 中间颜色
|
||||
private val endColor = Color.parseColor("#FFbfa4ee") // 结束颜色
|
||||
private val paint = Paint()
|
||||
private val paintTow = Paint()
|
||||
|
||||
init {
|
||||
paint.style = Paint.Style.FILL
|
||||
paint.isAntiAlias = true
|
||||
paintTow.style = Paint.Style.FILL
|
||||
paintTow.isAntiAlias = true
|
||||
}
|
||||
|
||||
override fun onDraw(canvas: Canvas) {
|
||||
super.onDraw(canvas)
|
||||
// 绘制底色矩形
|
||||
paint.shader = null // 重置着色器
|
||||
paint.color = backgroundColor
|
||||
val backgroundRect = RectF(0f, (height / 2 - progressBarHeight / 2), width.toFloat(), (height / 2 + progressBarHeight / 2))
|
||||
canvas.drawRoundRect(backgroundRect, cornerRadius, cornerRadius, paint)
|
||||
|
||||
|
||||
// 计算进度条的宽度
|
||||
val progressBarWidth = (width * progress / maxProgress)
|
||||
|
||||
// 创建颜色渐变对象
|
||||
val gradient = LinearGradient(0f, 0f, width.toFloat(), 0f, intArrayOf(startColor, middleColor, endColor), null, Shader.TileMode.CLAMP)
|
||||
paintTow.shader = gradient
|
||||
|
||||
// 绘制带圆角的进度条矩形
|
||||
val rect = RectF(0f, (height / 2 - progressBarHeight / 2), progressBarWidth.toFloat(), (height / 2 + progressBarHeight / 2))
|
||||
canvas.drawRoundRect(rect, cornerRadius, cornerRadius, paintTow)
|
||||
}
|
||||
|
||||
fun getProgress():Float{
|
||||
return progress
|
||||
}
|
||||
|
||||
// 设置进度
|
||||
fun setProgress(progress: Float) {
|
||||
this.progress = progress
|
||||
invalidate() // 请求重绘
|
||||
}
|
||||
}
|
||||
@ -6,14 +6,13 @@ import android.graphics.Color;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.graphics.drawable.StateListDrawable;
|
||||
import android.util.Log;
|
||||
import android.util.Xml;
|
||||
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
import com.exquisite.KeyboardSkin;
|
||||
import com.exquisite.data.StaticValue;
|
||||
import com.exquisite.demo08.R;
|
||||
import com.exquisite.R;
|
||||
|
||||
import org.xmlpull.v1.XmlPullParser;
|
||||
import org.xmlpull.v1.XmlPullParserException;
|
||||
|
||||
@ -1,9 +1,6 @@
|
||||
package com.exquisite.tools;
|
||||
|
||||
import static android.provider.Settings.System.getString;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.AssetManager;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.graphics.drawable.StateListDrawable;
|
||||
@ -33,7 +30,7 @@ import com.exquisite.callback.Adcallback;
|
||||
import com.exquisite.callback.DownloadCallback;
|
||||
import com.exquisite.callback.UnzipCallback;
|
||||
import com.exquisite.data.Mydata;
|
||||
import com.exquisite.demo08.R;
|
||||
import com.exquisite.R;
|
||||
|
||||
import net.sf.sevenzipjbinding.ArchiveFormat;
|
||||
import net.sf.sevenzipjbinding.IInArchive;
|
||||
@ -58,6 +55,8 @@ import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
public class Mytools {
|
||||
private static InputMethodManager methodManager = (InputMethodManager) KeyboardSkin.app.getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||
@ -65,8 +64,18 @@ public class Mytools {
|
||||
private static final String two_Ad = "n66a0bc9350f0e";
|
||||
private static final String three_ad = "n66a0b8eca7766";
|
||||
private static ArrayList<ATInterstitial> adArrayList;
|
||||
private static ExecutorService executorService;
|
||||
|
||||
public static void runIO(Runnable task) {
|
||||
getExecutorService().execute(task);
|
||||
}
|
||||
|
||||
private static ExecutorService getExecutorService() {
|
||||
if (executorService == null) {
|
||||
executorService = Executors.newSingleThreadExecutor();
|
||||
}
|
||||
return executorService;
|
||||
}
|
||||
public static void setCallback(ATInterstitial ad, Adcallback adcallback) {
|
||||
ad.setAdListener(new ATInterstitialListener() {
|
||||
@Override
|
||||
@ -294,14 +303,18 @@ public class Mytools {
|
||||
JSONArray jsonObject = loadJSONFromAsset(filename);
|
||||
for (int a = 0; a < jsonObject.length(); a++) {
|
||||
JSONObject list = jsonObject.getJSONObject(a);
|
||||
String className = list.getString("className");
|
||||
JSONArray classArray = list.getJSONArray("list");
|
||||
for (int i = 0; i < classArray.length(); i++) {
|
||||
JSONObject item = classArray.getJSONObject(i);
|
||||
Mydata myData = new Mydata();
|
||||
myData.setClassName(className);
|
||||
myData.setDownloaded(false);
|
||||
myData.setIslike(false);
|
||||
myData.setPreview(item.getString("preview"));
|
||||
myData.setThumbnail(item.getString("thumb"));
|
||||
myData.setResourceName(item.getString("title"));
|
||||
myData.setUrl(item.getString("zipUrl"));
|
||||
myData.setThumb(item.getString("thumb"));
|
||||
myData.setTitle(item.getString("title"));
|
||||
myData.setZipUrl(item.getString("zipUrl"));
|
||||
dataList.add(myData);
|
||||
|
||||
}
|
||||
|
||||
7
app/src/main/res/drawable/dialog_bg.xml
Normal file
7
app/src/main/res/drawable/dialog_bg.xml
Normal 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>
|
||||
20
app/src/main/res/drawable/icon_delete.xml
Normal file
20
app/src/main/res/drawable/icon_delete.xml
Normal file
@ -0,0 +1,20 @@
|
||||
<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="M7.5,7L17.5,17"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="2"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#ffffff"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M7.5,17L17.5,7"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="2"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#ffffff"
|
||||
android:strokeLineCap="round"/>
|
||||
</vector>
|
||||
9
app/src/main/res/drawable/icon_like_check.xml
Normal file
9
app/src/main/res/drawable/icon_like_check.xml
Normal file
@ -0,0 +1,9 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="256dp"
|
||||
android:height="256dp"
|
||||
android:viewportWidth="1024"
|
||||
android:viewportHeight="1024">
|
||||
<path
|
||||
android:pathData="M512,926h-6c-6,0 -12,-3 -15,-9L143,569C92,518 62,449 62,374s30,-144 81,-195c51,-51 120,-81 195,-81 63,0 126,21 174,63 108,-90 270,-81 369,18 108,108 108,282 0,390L533,917c-6,6 -12,9 -21,9z"
|
||||
android:fillColor="#ff0000"/>
|
||||
</vector>
|
||||
9
app/src/main/res/drawable/icon_like_uncheck.xml
Normal file
9
app/src/main/res/drawable/icon_like_uncheck.xml
Normal file
@ -0,0 +1,9 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="256dp"
|
||||
android:height="256dp"
|
||||
android:viewportWidth="1024"
|
||||
android:viewportHeight="1024">
|
||||
<path
|
||||
android:pathData="M512,926h-6c-6,0 -12,-3 -15,-9L143,569C92,518 62,449 62,374s30,-144 81,-195c51,-51 120,-81 195,-81 63,0 126,21 174,63 108,-90 270,-81 369,18 108,108 108,282 0,390L533,917c-6,6 -12,9 -21,9z"
|
||||
android:fillColor="#ffffff"/>
|
||||
</vector>
|
||||
18
app/src/main/res/drawable/icon_rate.xml
Normal file
18
app/src/main/res/drawable/icon_rate.xml
Normal file
@ -0,0 +1,18 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="256dp"
|
||||
android:height="256dp"
|
||||
android:viewportWidth="1024"
|
||||
android:viewportHeight="1024">
|
||||
<path
|
||||
android:fillColor="@color/white"
|
||||
android:pathData="M512,64C264.5,64 64,264.5 64,512s200.5,448 448,448 448,-200.5 448,-448S759.5,64 512,64zM512,917.3C288,917.3 106.7,736 106.7,512S288,106.7 512,106.7s405.3,181.3 405.3,405.3 -181.3,405.3 -405.3,405.3z" />
|
||||
<path
|
||||
android:fillColor="@color/white"
|
||||
android:pathData="M627.2,622.9c-29.9,32 -70.4,49.1 -115.2,49.1 -42.7,0 -83.2,-17.1 -113.1,-46.9 -8.5,-8.5 -21.3,-8.5 -29.9,0 -8.5,8.5 -8.5,21.3 0,29.9 38.4,38.4 89.6,59.7 142.9,59.7 55.5,0 106.7,-21.3 145.1,-61.9 8.5,-8.5 8.5,-21.3 0,-29.9 -8.5,-8.5 -21.3,-8.5 -29.9,0z" />
|
||||
<path
|
||||
android:fillColor="@color/white"
|
||||
android:pathData="M384,448m-42.7,0a42.7,42.7 0,1 0,85.3 0,42.7 42.7,0 1,0 -85.3,0Z" />
|
||||
<path
|
||||
android:fillColor="@color/white"
|
||||
android:pathData="M640,448m-42.7,0a42.7,42.7 0,1 0,85.3 0,42.7 42.7,0 1,0 -85.3,0Z" />
|
||||
</vector>
|
||||
9
app/src/main/res/drawable/icon_share.xml
Normal file
9
app/src/main/res/drawable/icon_share.xml
Normal file
@ -0,0 +1,9 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="256dp"
|
||||
android:height="256dp"
|
||||
android:viewportWidth="1024"
|
||||
android:viewportHeight="1024">
|
||||
<path
|
||||
android:pathData="M763.8,896c-47.1,0 -85.3,-38.2 -85.3,-85.3s38.2,-85.3 85.3,-85.3c47.1,0 85.3,38.2 85.3,85.3 0,47.1 -38.2,85.3 -85.3,85.3M329.9,558.8c-14.9,26.2 -42.6,43.6 -74.5,43.6 -47.1,0 -85.3,-38.2 -85.3,-85.3 0,-16.1 4.5,-31.2 12.2,-44 14.9,-24.8 42.1,-41.3 73.1,-41.3 47.1,0 85.3,38.2 85.3,85.3 0,15.3 -4,29.7 -11.1,42.1M763.8,128c47.1,0 85.3,38.2 85.3,85.3s-38.2,85.3 -85.3,85.3c-47.1,0 -85.3,-38.2 -85.3,-85.3 0,-47.1 38.2,-85.3 85.3,-85.3M763.8,682.7c-0,0 -0,0 -0.1,0 -39.2,0 -74.2,17.6 -97.6,45.4l-289.9,-167.1c4.9,-13.1 7.8,-28.2 7.8,-44.1 0,-0.1 0,-0.2 0,-0.3 0,-0.1 0,-0.2 0,-0.3 0,-15.8 -2.9,-31 -8.1,-44.9l295.5,-169.6c23.3,24.4 56,39.5 92.3,39.5 0,0 0,0 0.1,0 70.7,0 128,-57.3 128,-128 0,-70.7 -57.3,-128 -128,-128 -70.7,0 -128,57.3 -128,128 0,19 4.2,36.9 11.6,53.1l-292.3,168.7c-23.7,-28.8 -59.3,-47.1 -99.2,-47.1 -70.7,0 -128,57.3 -128,128 0,0.2 0,0.4 0,0.6 -0,0.1 -0,0.3 -0,0.5 0,70.7 57.3,128 128,128 39.9,0 75.5,-18.3 99,-46.9l289.4,166.8c-5.4,13.6 -8.5,29.3 -8.5,45.7 0,70.6 57.3,127.9 128,127.9 70.7,0 128,-57.3 128,-128 0,-70.7 -57.3,-128 -128,-128z"
|
||||
android:fillColor="#ffffff"/>
|
||||
</vector>
|
||||
15
app/src/main/res/drawable/icon_version.xml
Normal file
15
app/src/main/res/drawable/icon_version.xml
Normal file
@ -0,0 +1,15 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="256dp"
|
||||
android:height="256dp"
|
||||
android:viewportWidth="1024"
|
||||
android:viewportHeight="1024">
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M512,1024C229.9,1024 0,794.1 0,512S229.9,0 512,0s512,229.9 512,512 -229.9,512 -512,512zM512,51.2c-254,0 -460.8,206.8 -460.8,460.8s206.8,460.8 460.8,460.8 460.8,-206.8 460.8,-460.8 -206.8,-460.8 -460.8,-460.8z" />
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M512,870.4c-28.2,0 -51.2,-23 -51.2,-51.2V409.6c0,-28.2 23,-51.2 51.2,-51.2s51.2,23 51.2,51.2v409.6c0,28.2 -23,51.2 -51.2,51.2z" />
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M512,256m-51.2,0a51.2,51.2 0,1 0,102.4 0,51.2 51.2,0 1,0 -102.4,0Z" />
|
||||
</vector>
|
||||
9
app/src/main/res/drawable/like_check.xml
Normal file
9
app/src/main/res/drawable/like_check.xml
Normal file
@ -0,0 +1,9 @@
|
||||
<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="M16.875,3C15.375,3 13.95,3.6 12.9,4.65L12,5.55L11.175,4.725C9,2.475 5.4,2.475 3.225,4.65L3.15,4.725C0.9,6.975 0.9,10.575 3.15,12.825L12,21.75L20.85,12.825C23.1,10.575 23.1,6.975 20.85,4.725C19.8,3.6 18.375,3 16.875,3Z"
|
||||
android:fillColor="#ffffff"/>
|
||||
</vector>
|
||||
11
app/src/main/res/drawable/like_uncheck.xml
Normal file
11
app/src/main/res/drawable/like_uncheck.xml
Normal file
@ -0,0 +1,11 @@
|
||||
<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="M11.293,6.257L12,6.964L12.708,6.257L13.608,5.357C14.472,4.492 15.644,4 16.875,4C18.103,4 19.262,4.489 20.119,5.407L20.131,5.42L20.143,5.432C22.003,7.292 22.003,10.258 20.143,12.118L20.14,12.121L12,20.33L3.86,12.121L3.86,12.121L3.858,12.118C1.998,10.258 1.998,7.292 3.858,5.432L3.932,5.357C5.715,3.575 8.672,3.575 10.456,5.42L10.462,5.426L10.468,5.432L11.293,6.257Z"
|
||||
android:strokeWidth="2"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#ffffff"/>
|
||||
</vector>
|
||||
6
app/src/main/res/drawable/showkeyboard_edit.xml
Normal file
6
app/src/main/res/drawable/showkeyboard_edit.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<solid android:color="@color/white" />
|
||||
<corners android:radius="8dp" />
|
||||
|
||||
</shape>
|
||||
@ -9,7 +9,7 @@
|
||||
tools:context="com.exquisite.activity.PreviewActivity">
|
||||
|
||||
|
||||
<LinearLayout
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/detail_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
@ -25,7 +25,9 @@
|
||||
<LinearLayout
|
||||
android:id="@+id/detail_back"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
@ -42,7 +44,19 @@
|
||||
android:textColor="@color/white"
|
||||
android:textSize="20sp" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/preview_islike"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_marginEnd="24dp"
|
||||
android:background="@drawable/icon_like_uncheck"
|
||||
app:layout_constraintBottom_toBottomOf="@id/detail_back"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@id/detail_back" />
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/detailcenter"
|
||||
@ -167,14 +181,14 @@
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/step1_image"
|
||||
android:id="@+id/pre_down_image"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:background="@drawable/icon_down" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/step1_text"
|
||||
android:id="@+id/pre_down_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
|
||||
47
app/src/main/res/layout/activity_show_keyboard.xml
Normal file
47
app/src/main/res/layout/activity_show_keyboard.xml
Normal file
@ -0,0 +1,47 @@
|
||||
<?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/background"
|
||||
tools:context="com.exquisite.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" />
|
||||
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/show_back"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:src="@drawable/icon_back"
|
||||
app:layout_constraintBottom_toBottomOf="@id/showkey_title"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@id/showkey_title" />
|
||||
|
||||
<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/tab_uncheck"
|
||||
android:textSize="16sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@ -57,10 +57,11 @@
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/logo" />
|
||||
|
||||
<ProgressBar
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
<com.exquisite.tools.CustomProgressBar
|
||||
android:id="@+id/splash_pg"
|
||||
android:layout_width="300dp"
|
||||
android:layout_height="20dp"
|
||||
android:layout_marginTop="80dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/text" />
|
||||
|
||||
14
app/src/main/res/layout/activity_web.xml
Normal file
14
app/src/main/res/layout/activity_web.xml
Normal 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="com.exquisite.activity.WebActivity">
|
||||
|
||||
<WebView
|
||||
android:id="@+id/web"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
110
app/src/main/res/layout/dialog.xml
Normal file
110
app/src/main/res/layout/dialog.xml
Normal 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_cancel"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_marginEnd="24dp"
|
||||
android:src="@drawable/icon_delete"
|
||||
app:layout_constraintEnd_toEndOf="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_text"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="29sp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/setting_cancel" />
|
||||
|
||||
|
||||
<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>
|
||||
50
app/src/main/res/layout/fragment_like.xml
Normal file
50
app/src/main/res/layout/fragment_like.xml
Normal file
@ -0,0 +1,50 @@
|
||||
<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:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/background"
|
||||
tools:context="com.exquisite.fragment.LikeFragment">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/like_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="6dp"
|
||||
android:text="@string/favorite_title"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="28sp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/nolike_text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:text="@string/nolike_tips"
|
||||
android:textColor="@color/tab_uncheck"
|
||||
android:textSize="25sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/like_title" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/like_rv"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginTop="17dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/like_title" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@ -5,7 +5,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/background"
|
||||
tools:context="com.exquisite.fragment.PageOneFragment">
|
||||
tools:context="com.exquisite.fragment.MainFragment">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/main"
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/background"
|
||||
tools:context="com.exquisite.fragment.PageTwoFragment">
|
||||
tools:context="com.exquisite.fragment.SettingFragment">
|
||||
|
||||
|
||||
<LinearLayout
|
||||
@ -90,52 +90,6 @@
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/rate_us"
|
||||
android:visibility="gone"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
|
||||
android:paddingStart="16dp"
|
||||
android:paddingTop="10dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:paddingBottom="10dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/rateus"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:background="@drawable/rateus"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:text="@string/rate_us"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="16sp"
|
||||
app:layout_constraintBottom_toBottomOf="@id/rateus"
|
||||
app:layout_constraintStart_toEndOf="@id/rateus"
|
||||
app:layout_constraintTop_toTopOf="@id/rateus" />
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="2dp"
|
||||
android:background="@drawable/icon"
|
||||
app:layout_constraintBottom_toBottomOf="@id/rateus"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@id/rateus" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/privacy"
|
||||
android:layout_width="match_parent"
|
||||
@ -179,6 +133,140 @@
|
||||
app:layout_constraintTop_toTopOf="@id/img_privacy" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/rate"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingTop="10dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:paddingBottom="10dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/img_rate"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:background="@drawable/icon_rate"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:text="@string/rate_us"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="16sp"
|
||||
app:layout_constraintBottom_toBottomOf="@id/img_rate"
|
||||
app:layout_constraintStart_toEndOf="@id/img_rate"
|
||||
app:layout_constraintTop_toTopOf="@id/img_rate" />
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="2dp"
|
||||
android:background="@drawable/icon"
|
||||
app:layout_constraintBottom_toBottomOf="@id/img_rate"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@id/img_rate" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/share"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingTop="10dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:paddingBottom="10dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/img_share"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:background="@drawable/icon_share"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:text="@string/Share"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="16sp"
|
||||
app:layout_constraintBottom_toBottomOf="@id/img_share"
|
||||
app:layout_constraintStart_toEndOf="@id/img_share"
|
||||
app:layout_constraintTop_toTopOf="@id/img_share" />
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="2dp"
|
||||
android:background="@drawable/icon"
|
||||
app:layout_constraintBottom_toBottomOf="@id/img_share"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@id/img_share" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/version"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingTop="10dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:paddingBottom="10dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/img_version"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:background="@drawable/icon_version"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:text="@string/Version"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="16sp"
|
||||
app:layout_constraintBottom_toBottomOf="@id/img_version"
|
||||
app:layout_constraintStart_toEndOf="@id/img_version"
|
||||
app:layout_constraintTop_toTopOf="@id/img_version" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/version_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="2dp"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="14sp"
|
||||
app:layout_constraintBottom_toBottomOf="@id/img_version"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@id/img_version" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
android:id="@+id/constraint_layout_id"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
tools:context="com.exquisite.fragment.PageOneFragment">
|
||||
tools:context="com.exquisite.fragment.MainFragment">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/image_view_thumb_id"
|
||||
@ -16,4 +16,10 @@
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<View
|
||||
android:id="@+id/view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="100dp"
|
||||
app:layout_constraintTop_toBottomOf="@id/image_view_thumb_id" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
39
app/src/main/res/layout/toast_dialog.xml
Normal file
39
app/src/main/res/layout/toast_dialog.xml
Normal file
@ -0,0 +1,39 @@
|
||||
<?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="305dp"
|
||||
android:layout_height="395dp"
|
||||
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="280dp"
|
||||
android:layout_height="205dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
<ImageView
|
||||
android:layout_marginTop="20dp"
|
||||
android:id="@+id/toast_dialog_cancel"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
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>
|
||||
BIN
app/src/main/res/mipmap-xxxhdpi/toast_image_bg.png
Normal file
BIN
app/src/main/res/mipmap-xxxhdpi/toast_image_bg.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 546 KiB |
@ -4,10 +4,12 @@
|
||||
<string name="keyboardsettings">Keyboard Settings</string>
|
||||
<string name="rate_us">Rate us</string>
|
||||
<string name="privacy">Privacy</string>
|
||||
<string name="Share">Share</string>
|
||||
<string name="Version">Version</string>
|
||||
<string name="for_you">For You</string>
|
||||
<string name="view_all">View all</string>
|
||||
<string name="all">All</string>
|
||||
<string name="setting_text">Activate PassionCool Keyboard to \n enable MORE functions!</string>
|
||||
<string name="setting_text">Keyboard \n requires permission to use</string>
|
||||
<string name="step1">Step 1:Select</string>
|
||||
<string name="step2">Step 2:Enabled</string>
|
||||
<string name="hello_blank_fragment">Hello blank fragment</string>
|
||||
@ -21,6 +23,7 @@
|
||||
<string name="text_step_successful">Successfully set up \n Now you can download keyboard</string>
|
||||
<string name="text_step_failed">Setting failed ! Please try again</string>
|
||||
<string name="text_download_failed">Download failed</string>
|
||||
<string name="text_zip_failed">Zip failed</string>
|
||||
<string name="cancel">Cancel</string>
|
||||
<string name="nofiles">The keyboard is not available</string>
|
||||
<string name="text_tips">Please enter the content</string>
|
||||
@ -28,4 +31,12 @@
|
||||
<string name="search">Search</string>
|
||||
<string name="facebook_app_id">489845093456531</string>
|
||||
<string name="facebook_client_token">f4f2d45a7ca326adf493b7dd29a188be</string>
|
||||
<string name="share_title">Here is a Keyboard Skins</string>
|
||||
<string name="showkey_title">Application results</string>
|
||||
<string name="showkey_hint_text">Enter text to see the effect</string>
|
||||
<string name="download_apply">Apply</string>
|
||||
<string name="toast_apply_text">Apply Now</string>
|
||||
<string name="download_text_using">In Use</string>
|
||||
<string name="favorite_title">My Favorite</string>
|
||||
<string name="nolike_tips">No favorites added yet</string>
|
||||
</resources>
|
||||
@ -1,7 +1,7 @@
|
||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||
plugins {
|
||||
id("com.android.application") version "8.1.3" apply false
|
||||
id("org.jetbrains.kotlin.android") version "1.7.0" apply false
|
||||
id("org.jetbrains.kotlin.android") version "1.9.0" apply false
|
||||
id("com.google.gms.google-services") version "4.3.15" apply false
|
||||
id ("com.google.firebase.crashlytics") version "2.9.2" apply false
|
||||
}
|
||||
|
||||
@ -14,7 +14,7 @@ dependencyResolutionManagement {
|
||||
maven("https://jitpack.io")
|
||||
maven("https://jfrog.anythinktech.com/artifactory/overseas_sdk")
|
||||
maven("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea")
|
||||
maven("https://jfrog.anythinktech.com/artifactory/debugger")
|
||||
// maven("https://jfrog.anythinktech.com/artifactory/debugger")
|
||||
maven{url = uri("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea")}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user