更新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/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_01-release.apk
|
||||||
app/release/keyboardskins_V1.0.6(7)_07_19_15_03-release.aab
|
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("org.jetbrains.kotlin.android")
|
||||||
id("com.google.gms.google-services")
|
id("com.google.gms.google-services")
|
||||||
id("com.google.firebase.crashlytics")
|
id("com.google.firebase.crashlytics")
|
||||||
|
id("kotlin-kapt")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date())
|
val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date())
|
||||||
android {
|
android {
|
||||||
namespace = "com.exquisite.demo08"
|
namespace = "com.exquisite"
|
||||||
compileSdk = 34
|
compileSdk = 34
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId = "com.key.keyboardskins"
|
applicationId = "com.key.keyboardskins"
|
||||||
minSdk = 23
|
minSdk = 23
|
||||||
targetSdk = 34
|
targetSdk = 34
|
||||||
versionCode = 9
|
versionCode = 10
|
||||||
versionName = "1.0.8"
|
versionName = "1.0.9"
|
||||||
setProperty(
|
setProperty(
|
||||||
"archivesBaseName",
|
"archivesBaseName",
|
||||||
"keyboardskins_V" + versionName + "(${versionCode})_$timestamp"
|
"keyboardskins_V1" + versionName + "(${versionCode})_$timestamp"
|
||||||
)
|
)
|
||||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||||
}
|
}
|
||||||
@ -39,8 +39,11 @@ android {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
compileOptions {
|
compileOptions {
|
||||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
sourceCompatibility = JavaVersion.VERSION_17
|
||||||
targetCompatibility = JavaVersion.VERSION_1_8
|
targetCompatibility = JavaVersion.VERSION_17
|
||||||
|
}
|
||||||
|
buildFeatures{
|
||||||
|
viewBinding = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -57,6 +60,12 @@ dependencies {
|
|||||||
implementation("com.github.bumptech.glide:glide:4.16.0")
|
implementation("com.github.bumptech.glide:glide:4.16.0")
|
||||||
implementation("com.github.omicronapps:7-Zip-JBinding-4Android:Release-16.02-2.02")
|
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(platform("com.google.firebase:firebase-bom:33.1.2"))
|
||||||
implementation("com.google.firebase:firebase-analytics-ktx")
|
implementation("com.google.firebase:firebase-analytics-ktx")
|
||||||
implementation("com.google.firebase:firebase-crashlytics-ktx")
|
implementation("com.google.firebase:firebase-crashlytics-ktx")
|
||||||
@ -104,11 +113,11 @@ dependencies {
|
|||||||
implementation("androidx.recyclerview:recyclerview:1.1.0")
|
implementation("androidx.recyclerview:recyclerview:1.1.0")
|
||||||
|
|
||||||
//Tramini
|
//Tramini
|
||||||
implementation("com.anythink.sdk:tramini-plugin-tpn:6.3.68")
|
// implementation("com.anythink.sdk:tramini-plugin-tpn:6.3.68")
|
||||||
//-----------------------------TopOn 聚合
|
//-----------------------------TopOn 聚合
|
||||||
|
|
||||||
// Debugger UI Tools
|
// 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:supportsRtl="true"
|
||||||
android:theme="@style/AppTheme"
|
android:theme="@style/AppTheme"
|
||||||
tools:targetApi="31">
|
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
|
<meta-data
|
||||||
android:name="com.facebook.sdk.ApplicationId"
|
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",
|
"preview": "https://resource-sg-public.lux-ad.com/keyboard/d3ce935f39cfa4bf877370e7166523e0.webp",
|
||||||
"thumb": "https://resource-sg-public.lux-ad.com/keyboard/f9b79cbc3b678e9a7e63d334ea66fc7c.jpg",
|
"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;
|
package com.exquisite;
|
||||||
|
|
||||||
import static android.content.ContentValues.TAG;
|
|
||||||
|
|
||||||
import android.app.Application;
|
import android.app.Application;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.SharedPreferences;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.widget.Toast;
|
|
||||||
|
|
||||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
|
||||||
|
|
||||||
|
|
||||||
import com.anythink.core.api.ATSDK;
|
import com.anythink.core.api.ATSDK;
|
||||||
import com.anythink.core.api.NetTrafficeCallback;
|
import com.anythink.core.api.NetTrafficeCallback;
|
||||||
import com.anythink.debug.api.ATDebuggerUITest;
|
|
||||||
import com.anythink.interstitial.api.ATInterstitial;
|
import com.anythink.interstitial.api.ATInterstitial;
|
||||||
import com.exquisite.data.Mydata;
|
import com.exquisite.data.Mydata;
|
||||||
import com.exquisite.mintegral.MBrManager;
|
import com.exquisite.data.MydataBase;
|
||||||
import com.exquisite.tools.Mytools;
|
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.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
public class KeyboardSkin extends Application {
|
public class KeyboardSkin extends Application {
|
||||||
public static KeyboardSkin app;
|
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_KEY = "a95ed90a717c7bcff42cd908db3f05664";
|
||||||
private static final String TOP_DEBUG = "8a341b6aa5cc3fa453d7741f01a534c1d5dd766a";
|
private static final String TOP_DEBUG = "8a341b6aa5cc3fa453d7741f01a534c1d5dd766a";
|
||||||
public static List<ATInterstitial> ads;
|
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
|
@Override
|
||||||
public void onCreate() {
|
public void onCreate() {
|
||||||
super.onCreate();
|
super.onCreate();
|
||||||
context = getApplicationContext();
|
context = getApplicationContext();
|
||||||
app = this;
|
app = this;
|
||||||
|
a = 0;
|
||||||
|
// Log.e("zzj","---a app is---"+a);
|
||||||
ATSDK.checkIsEuTraffic(this, new NetTrafficeCallback() {
|
ATSDK.checkIsEuTraffic(this, new NetTrafficeCallback() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -59,9 +105,44 @@ public class KeyboardSkin extends Application {
|
|||||||
});
|
});
|
||||||
|
|
||||||
initSdk();
|
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");
|
Mytools.runIO(new Runnable() {
|
||||||
myDataArrayList = myData;
|
@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() {
|
private void initSdk() {
|
||||||
|
|||||||
@ -10,7 +10,6 @@ import androidx.fragment.app.FragmentTransaction;
|
|||||||
|
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.util.Log;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
|
|
||||||
@ -20,11 +19,8 @@ import com.anythink.interstitial.api.ATInterstitial;
|
|||||||
import com.exquisite.KeyboardSkin;
|
import com.exquisite.KeyboardSkin;
|
||||||
import com.exquisite.callback.Adcallback;
|
import com.exquisite.callback.Adcallback;
|
||||||
import com.exquisite.fragment.AllFragment;
|
import com.exquisite.fragment.AllFragment;
|
||||||
import com.exquisite.demo08.R;
|
import com.exquisite.R;
|
||||||
import com.exquisite.mintegral.ADBean;
|
|
||||||
import com.exquisite.mintegral.MBrManager;
|
|
||||||
import com.exquisite.mintegral.Mylistener;
|
|
||||||
import com.exquisite.mintegral.onAdStatusListener;
|
|
||||||
import com.exquisite.tools.Mytools;
|
import com.exquisite.tools.Mytools;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -56,6 +52,9 @@ public class AllActivity extends AppCompatActivity implements View.OnClickListen
|
|||||||
intEvent();
|
intEvent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void intEvent() {
|
private void intEvent() {
|
||||||
back.setOnClickListener(this);
|
back.setOnClickListener(this);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,13 +20,14 @@ import android.widget.LinearLayout;
|
|||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import com.exquisite.KeyboardSkin;
|
import com.exquisite.KeyboardSkin;
|
||||||
import com.exquisite.demo08.R;
|
import com.exquisite.R;
|
||||||
import com.exquisite.tools.Mytools;
|
import com.exquisite.tools.Mytools;
|
||||||
|
|
||||||
public class KeyBoardSettingsActivity extends AppCompatActivity implements View.OnClickListener {
|
public class KeyBoardSettingsActivity extends AppCompatActivity implements View.OnClickListener {
|
||||||
private static final InputMethodManager methodManager = (InputMethodManager) KeyboardSkin.app.getSystemService(Context.INPUT_METHOD_SERVICE);
|
private static final InputMethodManager methodManager = (InputMethodManager) KeyboardSkin.app.getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||||
private LinearLayout back, step1, step2;
|
private LinearLayout back, step1, step2;
|
||||||
private ImageView step1_image, step2_image;
|
private ImageView step1_image, step2_image;
|
||||||
|
|
||||||
@SuppressLint("MissingInflatedId")
|
@SuppressLint("MissingInflatedId")
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
@ -55,14 +56,14 @@ public class KeyBoardSettingsActivity extends AppCompatActivity implements View.
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void intImage() {
|
private void intImage() {
|
||||||
if (Mytools.isStep2()){
|
if (Mytools.isStep2()) {
|
||||||
step2_image.setVisibility(View.VISIBLE);
|
step2_image.setVisibility(View.VISIBLE);
|
||||||
}else {
|
} else {
|
||||||
step2_image.setVisibility(View.GONE);
|
step2_image.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
if (Mytools.isStep1()){
|
if (Mytools.isStep1()) {
|
||||||
step1_image.setVisibility(View.VISIBLE);
|
step1_image.setVisibility(View.VISIBLE);
|
||||||
}else {
|
} else {
|
||||||
step1_image.setVisibility(View.GONE);
|
step1_image.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -101,6 +102,7 @@ public class KeyBoardSettingsActivity extends AppCompatActivity implements View.
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onResume() {
|
protected void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
@ -112,10 +114,10 @@ public class KeyBoardSettingsActivity extends AppCompatActivity implements View.
|
|||||||
@Override
|
@Override
|
||||||
protected void onDestroy() {
|
protected void onDestroy() {
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
if (Mytools.isStep1()&&Mytools.isStep2()){
|
if (Mytools.isStep1() && Mytools.isStep2()) {
|
||||||
Toast.makeText(KeyBoardSettingsActivity.this,getString(R.string.text_step_successful),Toast.LENGTH_SHORT).show();
|
Toast.makeText(KeyBoardSettingsActivity.this, getString(R.string.text_step_successful), Toast.LENGTH_SHORT).show();
|
||||||
}else {
|
} else {
|
||||||
Toast.makeText(KeyBoardSettingsActivity.this,getString(R.string.text_step_failed),Toast.LENGTH_SHORT).show();
|
Toast.makeText(KeyBoardSettingsActivity.this, getString(R.string.text_step_failed), Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,6 +1,9 @@
|
|||||||
package com.exquisite.activity;
|
package com.exquisite.activity;
|
||||||
|
|
||||||
|
|
||||||
import androidx.activity.EdgeToEdge;
|
import androidx.activity.EdgeToEdge;
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
import androidx.core.graphics.Insets;
|
import androidx.core.graphics.Insets;
|
||||||
import androidx.core.view.ViewCompat;
|
import androidx.core.view.ViewCompat;
|
||||||
@ -8,14 +11,49 @@ import androidx.core.view.WindowInsetsCompat;
|
|||||||
import androidx.viewpager.widget.ViewPager;
|
import androidx.viewpager.widget.ViewPager;
|
||||||
|
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
|
import android.app.Dialog;
|
||||||
|
import android.content.BroadcastReceiver;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.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.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.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 com.google.android.material.tabs.TabLayout;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class MainActivity extends AppCompatActivity {
|
public class MainActivity extends AppCompatActivity {
|
||||||
private TabLayout tabLayout;
|
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")
|
@SuppressLint("MissingInflatedId")
|
||||||
@Override
|
@Override
|
||||||
@ -28,14 +66,16 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
|
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
|
||||||
return insets;
|
return insets;
|
||||||
});
|
});
|
||||||
|
|
||||||
tabLayout = findViewById(R.id.main_tabLayout);
|
tabLayout = findViewById(R.id.main_tabLayout);
|
||||||
ViewPager viewPager = findViewById(R.id.main_viewpager);
|
ViewPager viewPager = findViewById(R.id.main_viewpager);
|
||||||
PageAdapter adapter = new PageAdapter(getSupportFragmentManager());
|
PageAdapter adapter = new PageAdapter(getSupportFragmentManager());
|
||||||
viewPager.setAdapter(adapter);
|
viewPager.setAdapter(adapter);
|
||||||
tabLayout.setupWithViewPager(viewPager);
|
tabLayout.setupWithViewPager(viewPager);
|
||||||
|
|
||||||
setmainTabIcons(tabLayout);
|
showDg();
|
||||||
|
|
||||||
|
|
||||||
|
setTabIcons(0);
|
||||||
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
|
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
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) {
|
private void setTabIcons(final int position) {
|
||||||
for (int i = 0; i < tabLayout.getTabCount(); i++) {
|
for (int i = 0; i < tabLayout.getTabCount(); i++) {
|
||||||
final TabLayout.Tab tab = tabLayout.getTabAt(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);
|
tab.setIcon(position == 0 ? R.drawable.home_check : R.drawable.home_uncheck);
|
||||||
break;
|
break;
|
||||||
case 1:
|
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;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -70,21 +289,34 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setmainTabIcons(TabLayout tabLayout) {
|
private void showKey() {
|
||||||
for (int i = 0; i < tabLayout.getTabCount(); i++) {
|
Toast.makeText(MainActivity.this, getString(R.string.set_successful), Toast.LENGTH_SHORT).show();
|
||||||
TabLayout.Tab tab = tabLayout.getTabAt(i);
|
Intent intent = new Intent(this, ShowKeyboardActivity.class);
|
||||||
if (tab != null) {
|
intent.putExtra(StaticValue.KEY_ISshow, 1);
|
||||||
switch (i) {
|
startActivity(intent);
|
||||||
case 0:
|
|
||||||
tab.setIcon(R.drawable.home_check);
|
}
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
tab.setIcon(R.drawable.setting_uncheck);
|
@Override
|
||||||
break;
|
protected void onResume() {
|
||||||
default:
|
super.onResume();
|
||||||
break;
|
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.graphics.Insets;
|
||||||
import androidx.core.view.ViewCompat;
|
import androidx.core.view.ViewCompat;
|
||||||
import androidx.core.view.WindowInsetsCompat;
|
import androidx.core.view.WindowInsetsCompat;
|
||||||
|
import androidx.lifecycle.Observer;
|
||||||
import androidx.recyclerview.widget.GridLayoutManager;
|
import androidx.recyclerview.widget.GridLayoutManager;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
@ -15,7 +16,6 @@ import android.content.Intent;
|
|||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.util.Log;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
@ -32,19 +32,17 @@ import com.exquisite.KeyboardSkin;
|
|||||||
import com.exquisite.adapter.ThumAdapter;
|
import com.exquisite.adapter.ThumAdapter;
|
||||||
|
|
||||||
import com.exquisite.callback.Adcallback;
|
import com.exquisite.callback.Adcallback;
|
||||||
import com.exquisite.callback.DownloadCallback;
|
import com.exquisite.data.Mydata;
|
||||||
import com.exquisite.callback.UnzipCallback;
|
import com.exquisite.data.MydataBase;
|
||||||
import com.exquisite.data.StaticValue;
|
import com.exquisite.data.StaticValue;
|
||||||
import com.exquisite.demo08.R;
|
import com.exquisite.R;
|
||||||
import com.exquisite.mintegral.ADBean;
|
|
||||||
import com.exquisite.mintegral.MBrManager;
|
|
||||||
import com.exquisite.mintegral.Mylistener;
|
|
||||||
import com.exquisite.mintegral.onAdStatusListener;
|
|
||||||
import com.exquisite.tools.Mytools;
|
import com.exquisite.tools.Mytools;
|
||||||
import com.exquisite.tools.SpaceItem;
|
import com.exquisite.tools.SpaceItem;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class PreviewActivity extends AppCompatActivity implements View.OnClickListener {
|
public class PreviewActivity extends AppCompatActivity implements View.OnClickListener {
|
||||||
@ -60,7 +58,13 @@ public class PreviewActivity extends AppCompatActivity implements View.OnClickLi
|
|||||||
|
|
||||||
private ProgressBar progressBarDownload;
|
private ProgressBar progressBarDownload;
|
||||||
private List<ATInterstitial> ads;
|
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")
|
@SuppressLint("MissingInflatedId")
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
@ -80,14 +84,74 @@ public class PreviewActivity extends AppCompatActivity implements View.OnClickLi
|
|||||||
imageView.setVisibility(View.GONE);
|
imageView.setVisibility(View.GONE);
|
||||||
progressBarPreview.setVisibility(View.VISIBLE);
|
progressBarPreview.setVisibility(View.VISIBLE);
|
||||||
progressBarDownload.setVisibility(View.GONE);
|
progressBarDownload.setVisibility(View.GONE);
|
||||||
|
|
||||||
SpaceItem spaceItem = new SpaceItem(10, 20, 10);
|
SpaceItem spaceItem = new SpaceItem(10, 20, 10);
|
||||||
previewrv.setAdapter(new ThumAdapter(this, KeyboardSkin.getMyDataArrayList()));
|
previewrv.setLayoutManager(new GridLayoutManager(PreviewActivity.this, 2));
|
||||||
previewrv.setLayoutManager(new GridLayoutManager(this, 2));
|
|
||||||
previewrv.addItemDecoration(spaceItem);
|
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();
|
Intent intent = getIntent();
|
||||||
preview = intent.getStringExtra(StaticValue.KEY_PRE);
|
preview = intent.getStringExtra(StaticValue.KEY_PRE);
|
||||||
name = intent.getStringExtra(StaticValue.KEY_NAME);
|
name = intent.getStringExtra(StaticValue.KEY_NAME);
|
||||||
url = intent.getStringExtra(StaticValue.KEY_URL);
|
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)
|
Glide.with(this)
|
||||||
.asBitmap()
|
.asBitmap()
|
||||||
.load(preview)
|
.load(preview)
|
||||||
@ -114,9 +178,13 @@ public class PreviewActivity extends AppCompatActivity implements View.OnClickLi
|
|||||||
back.setOnClickListener(this);
|
back.setOnClickListener(this);
|
||||||
viewall.setOnClickListener(this);
|
viewall.setOnClickListener(this);
|
||||||
settings.setOnClickListener(this);
|
settings.setOnClickListener(this);
|
||||||
|
like.setOnClickListener(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void intView() {
|
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);
|
back = findViewById(R.id.detail_back);
|
||||||
imageView = findViewById(R.id.preview_image);
|
imageView = findViewById(R.id.preview_image);
|
||||||
viewall = findViewById(R.id.preview_all);
|
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);
|
Intent intent = new Intent(PreviewActivity.this, AllActivity.class);
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
break;
|
break;
|
||||||
|
case R.id.preview_islike:
|
||||||
|
checkLike();
|
||||||
|
break;
|
||||||
case R.id.detail_setting:
|
case R.id.detail_setting:
|
||||||
download();
|
download();
|
||||||
break;
|
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() {
|
private void showAd() {
|
||||||
ATInterstitial mInterstitialAd = Mytools.onCache(ads);
|
ATInterstitial mInterstitialAd = Mytools.onCache(ads);
|
||||||
if (mInterstitialAd == null) {
|
if (mInterstitialAd == null) {
|
||||||
finish();
|
showKey();
|
||||||
} else {
|
} else {
|
||||||
if (mInterstitialAd.isAdReady()) {
|
if (mInterstitialAd.isAdReady()) {
|
||||||
Mytools.setCallback(mInterstitialAd, new Adcallback() {
|
Mytools.setCallback(mInterstitialAd, new Adcallback() {
|
||||||
@Override
|
@Override
|
||||||
public void onShowFail(AdError ad) {
|
public void onShowFail(AdError ad) {
|
||||||
finish();
|
showKey();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAdHidden() {
|
public void onAdHidden() {
|
||||||
finish();
|
showKey();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
mInterstitialAd.show(this);
|
mInterstitialAd.show(this);
|
||||||
@ -182,7 +284,6 @@ public class PreviewActivity extends AppCompatActivity implements View.OnClickLi
|
|||||||
Mytools.unZip(this, unzipPath, resource, (successful1, resDirPath) -> {
|
Mytools.unZip(this, unzipPath, resource, (successful1, resDirPath) -> {
|
||||||
if (successful1) {
|
if (successful1) {
|
||||||
StaticValue.PATH = resDirPath;
|
StaticValue.PATH = resDirPath;
|
||||||
Toast.makeText(PreviewActivity.this, getString(R.string.set_successful), Toast.LENGTH_SHORT).show();
|
|
||||||
progressBarDownload.setVisibility(View.GONE);
|
progressBarDownload.setVisibility(View.GONE);
|
||||||
showAd();
|
showAd();
|
||||||
|
|
||||||
|
|||||||
@ -7,28 +7,23 @@ import androidx.core.view.ViewCompat;
|
|||||||
import androidx.core.view.WindowInsetsCompat;
|
import androidx.core.view.WindowInsetsCompat;
|
||||||
import androidx.recyclerview.widget.GridLayoutManager;
|
import androidx.recyclerview.widget.GridLayoutManager;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
import androidx.recyclerview.widget.StaggeredGridLayoutManager;
|
||||||
|
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
|
||||||
import android.view.KeyEvent;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.WindowManager;
|
|
||||||
import android.view.inputmethod.EditorInfo;
|
import android.view.inputmethod.EditorInfo;
|
||||||
import android.view.inputmethod.InputMethodManager;
|
import android.view.inputmethod.InputMethodManager;
|
||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
|
||||||
|
|
||||||
import com.exquisite.KeyboardSkin;
|
import com.exquisite.KeyboardSkin;
|
||||||
import com.exquisite.adapter.ThumAdapter;
|
import com.exquisite.adapter.ThumAdapter;
|
||||||
import com.exquisite.data.Mydata;
|
import com.exquisite.data.Mydata;
|
||||||
import com.exquisite.data.StaticValue;
|
import com.exquisite.R;
|
||||||
import com.exquisite.demo08.R;
|
|
||||||
import com.exquisite.tools.SpaceItem;
|
import com.exquisite.tools.SpaceItem;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -116,7 +111,7 @@ public class SearchActivity extends AppCompatActivity implements View.OnClickLis
|
|||||||
faile.setVisibility(View.GONE);
|
faile.setVisibility(View.GONE);
|
||||||
searchrv.setVisibility(View.VISIBLE);
|
searchrv.setVisibility(View.VISIBLE);
|
||||||
searchrv.setAdapter(new ThumAdapter(this, filteredData));
|
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);
|
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.graphics.Insets;
|
||||||
import androidx.core.view.ViewCompat;
|
import androidx.core.view.ViewCompat;
|
||||||
import androidx.core.view.WindowInsetsCompat;
|
import androidx.core.view.WindowInsetsCompat;
|
||||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
|
||||||
|
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.content.BroadcastReceiver;
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.IntentFilter;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.CountDownTimer;
|
import android.os.CountDownTimer;
|
||||||
import android.util.Log;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
import com.anythink.core.api.AdError;
|
import com.anythink.core.api.AdError;
|
||||||
import com.anythink.interstitial.api.ATInterstitial;
|
import com.anythink.interstitial.api.ATInterstitial;
|
||||||
import com.exquisite.KeyboardSkin;
|
import com.exquisite.KeyboardSkin;
|
||||||
import com.exquisite.callback.Adcallback;
|
import com.exquisite.callback.Adcallback;
|
||||||
import com.exquisite.demo08.R;
|
import com.exquisite.R;
|
||||||
import com.exquisite.mintegral.ADBean;
|
|
||||||
import com.exquisite.mintegral.MBrManager;
|
import com.exquisite.tools.CustomProgressBar;
|
||||||
import com.exquisite.mintegral.Mylistener;
|
|
||||||
import com.exquisite.mintegral.onAdStatusListener;
|
|
||||||
import com.exquisite.mintegral.onInterHandlerListener;
|
|
||||||
import com.exquisite.tools.Mytools;
|
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;
|
import java.util.List;
|
||||||
|
|
||||||
@ -38,8 +27,8 @@ public class SplashActivity extends AppCompatActivity {
|
|||||||
private CountDownTimer countDownTimer;
|
private CountDownTimer countDownTimer;
|
||||||
private List<ATInterstitial> ads;
|
private List<ATInterstitial> ads;
|
||||||
|
|
||||||
public static boolean isAlreadyShow = false;
|
private boolean isAlreadyShow = false;
|
||||||
|
private float i = 0;
|
||||||
@SuppressLint("MissingInflatedId")
|
@SuppressLint("MissingInflatedId")
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
@ -53,11 +42,15 @@ public class SplashActivity extends AppCompatActivity {
|
|||||||
return insets;
|
return insets;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
CustomProgressBar customProgressBar = findViewById(R.id.splash_pg);
|
||||||
|
|
||||||
ads = KeyboardSkin.lodAd();
|
ads = KeyboardSkin.lodAd();
|
||||||
|
|
||||||
countDownTimer = new CountDownTimer(11000, 100) {
|
countDownTimer = new CountDownTimer(11000, 100) {
|
||||||
@Override
|
@Override
|
||||||
public void onTick(long l) {
|
public void onTick(long l) {
|
||||||
|
i++;
|
||||||
|
customProgressBar.setProgress(i);
|
||||||
if (!isAlreadyShow) {
|
if (!isAlreadyShow) {
|
||||||
showAd(false);
|
showAd(false);
|
||||||
}
|
}
|
||||||
@ -102,7 +95,6 @@ public class SplashActivity extends AppCompatActivity {
|
|||||||
goMain();
|
goMain();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
mInterstitialAd.show(this);
|
mInterstitialAd.show(this);
|
||||||
} else {
|
} else {
|
||||||
mInterstitialAd.load();
|
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.FragmentManager;
|
||||||
import androidx.fragment.app.FragmentPagerAdapter;
|
import androidx.fragment.app.FragmentPagerAdapter;
|
||||||
|
|
||||||
import com.exquisite.fragment.PageOneFragment;
|
import com.exquisite.fragment.LikeFragment;
|
||||||
import com.exquisite.fragment.PageTwoFragment;
|
import com.exquisite.fragment.MainFragment;
|
||||||
|
import com.exquisite.fragment.SettingFragment;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -16,8 +17,10 @@ public class PageAdapter extends FragmentPagerAdapter {
|
|||||||
|
|
||||||
public PageAdapter(@NonNull FragmentManager fm) {
|
public PageAdapter(@NonNull FragmentManager fm) {
|
||||||
super(fm);
|
super(fm);
|
||||||
list.add(new PageOneFragment());
|
list.add(new MainFragment());
|
||||||
list.add(new PageTwoFragment());
|
list.add(new LikeFragment());
|
||||||
|
list.add(new SettingFragment());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
@ -28,6 +31,6 @@ public class PageAdapter extends FragmentPagerAdapter {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getCount() {
|
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.Glide;
|
||||||
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
|
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
|
||||||
|
import com.exquisite.R;
|
||||||
import com.exquisite.activity.PreviewActivity;
|
import com.exquisite.activity.PreviewActivity;
|
||||||
import com.exquisite.data.Mydata;
|
import com.exquisite.data.Mydata;
|
||||||
import com.exquisite.data.StaticValue;
|
import com.exquisite.data.StaticValue;
|
||||||
import com.exquisite.demo08.R;
|
|
||||||
import com.exquisite.tools.Mytools;
|
import com.exquisite.tools.Mytools;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
public class ThumAdapter extends RecyclerView.Adapter<ThumVH> {
|
public class ThumAdapter extends RecyclerView.Adapter<ThumVH> {
|
||||||
private Context myContext;
|
private Context myContext;
|
||||||
@ -39,7 +38,17 @@ public class ThumAdapter extends RecyclerView.Adapter<ThumVH> {
|
|||||||
@Override
|
@Override
|
||||||
public void onBindViewHolder(@NonNull ThumVH holder, int position) {
|
public void onBindViewHolder(@NonNull ThumVH holder, int position) {
|
||||||
Mydata myData = myDataList.get(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)
|
Glide.with(myContext)
|
||||||
.load(thumbnail)
|
.load(thumbnail)
|
||||||
.placeholder(R.mipmap.logo)
|
.placeholder(R.mipmap.logo)
|
||||||
@ -47,8 +56,8 @@ public class ThumAdapter extends RecyclerView.Adapter<ThumVH> {
|
|||||||
.into(holder.getImageViewThumb());
|
.into(holder.getImageViewThumb());
|
||||||
holder.getConstraintLayout().setOnClickListener(v -> {
|
holder.getConstraintLayout().setOnClickListener(v -> {
|
||||||
Intent intent = new Intent(myContext, PreviewActivity.class);
|
Intent intent = new Intent(myContext, PreviewActivity.class);
|
||||||
intent.putExtra(StaticValue.KEY_NAME, myData.getResourceName());
|
intent.putExtra(StaticValue.KEY_NAME, myData.getTitle());
|
||||||
intent.putExtra(StaticValue.KEY_URL, myData.getUrl());
|
intent.putExtra(StaticValue.KEY_URL, myData.getZipUrl());
|
||||||
intent.putExtra(StaticValue.KEY_PRE, myData.getPreview());
|
intent.putExtra(StaticValue.KEY_PRE, myData.getPreview());
|
||||||
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||||
myContext.startActivity(intent);
|
myContext.startActivity(intent);
|
||||||
|
|||||||
@ -7,16 +7,22 @@ import androidx.annotation.NonNull;
|
|||||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.exquisite.demo08.R;
|
import com.exquisite.R;
|
||||||
|
|
||||||
public class ThumVH extends RecyclerView.ViewHolder {
|
public class ThumVH extends RecyclerView.ViewHolder {
|
||||||
private ImageView imageViewThumb;
|
private ImageView imageViewThumb;
|
||||||
private ConstraintLayout constraintLayout;
|
private ConstraintLayout constraintLayout;
|
||||||
|
private View view;
|
||||||
|
|
||||||
public ThumVH(@NonNull View itemView) {
|
public ThumVH(@NonNull View itemView) {
|
||||||
super(itemView);
|
super(itemView);
|
||||||
imageViewThumb = itemView.findViewById(R.id.image_view_thumb_id);
|
imageViewThumb = itemView.findViewById(R.id.image_view_thumb_id);
|
||||||
constraintLayout = itemView.findViewById(R.id.constraint_layout_id);
|
constraintLayout = itemView.findViewById(R.id.constraint_layout_id);
|
||||||
|
view = itemView.findViewById(R.id.view);
|
||||||
|
}
|
||||||
|
|
||||||
|
public View getView() {
|
||||||
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ConstraintLayout getConstraintLayout() {
|
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;
|
package com.exquisite.data;
|
||||||
|
|
||||||
|
import androidx.room.Entity;
|
||||||
|
import androidx.room.PrimaryKey;
|
||||||
|
|
||||||
|
import com.exquisite.KeyboardSkin;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@Entity(tableName = KeyboardSkin.Table_Name)
|
||||||
public class Mydata {
|
public class Mydata {
|
||||||
private String resourceName;
|
@PrimaryKey(autoGenerate = true)
|
||||||
|
public int id;
|
||||||
private String thumbnail;
|
public String preview;
|
||||||
private String preview;
|
public String thumb;
|
||||||
|
public String className;
|
||||||
private String url;
|
public String title;
|
||||||
|
public String zipUrl;
|
||||||
public void setPreview(String preview) {
|
public Boolean islike;
|
||||||
this.preview = preview;
|
public Boolean isDownloaded;
|
||||||
}
|
public String path;
|
||||||
|
|
||||||
public void setResourceName(String resourceName) {
|
|
||||||
this.resourceName = resourceName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setThumbnail(String thumbnail) {
|
|
||||||
this.thumbnail = thumbnail;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setUrl(String url) {
|
|
||||||
this.url = url;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getPreview() {
|
public String getPreview() {
|
||||||
return preview;
|
return preview;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getResourceName() {
|
public void setPreview(String preview) {
|
||||||
return resourceName;
|
this.preview = preview;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getThumbnail() {
|
public String getThumb() {
|
||||||
return thumbnail;
|
return thumb;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getUrl() {
|
public void setThumb(String thumb) {
|
||||||
return url;
|
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) {
|
public List<Mydata> filterByName(String input, List<Mydata> dataList) {
|
||||||
List<Mydata> filteredList = new ArrayList<>();
|
List<Mydata> filteredList = new ArrayList<>();
|
||||||
for (Mydata data : dataList) {
|
for (Mydata data : dataList) {
|
||||||
if (data.getResourceName().toLowerCase().contains(input.toLowerCase())) {
|
if (data.getTitle().toLowerCase().contains(input.toLowerCase())) {
|
||||||
filteredList.add(data);
|
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_URL = "key_url";
|
||||||
public static String KEY_PRE = "key_pre";
|
public static String KEY_PRE = "key_pre";
|
||||||
public static String PATH = "";
|
public static String PATH = "";
|
||||||
|
public static String KEY_ISshow = "";
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,7 +6,6 @@ import android.os.Bundle;
|
|||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.fragment.app.FragmentManager;
|
import androidx.fragment.app.FragmentManager;
|
||||||
import androidx.fragment.app.FragmentPagerAdapter;
|
|
||||||
import androidx.fragment.app.FragmentStatePagerAdapter;
|
import androidx.fragment.app.FragmentStatePagerAdapter;
|
||||||
import androidx.viewpager.widget.ViewPager;
|
import androidx.viewpager.widget.ViewPager;
|
||||||
|
|
||||||
@ -15,7 +14,7 @@ import android.view.View;
|
|||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.exquisite.demo08.R;
|
import com.exquisite.R;
|
||||||
import com.google.android.material.tabs.TabLayout;
|
import com.google.android.material.tabs.TabLayout;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|||||||
@ -11,7 +11,7 @@ import androidx.recyclerview.widget.RecyclerView;
|
|||||||
|
|
||||||
import com.exquisite.KeyboardSkin;
|
import com.exquisite.KeyboardSkin;
|
||||||
import com.exquisite.adapter.ThumAdapter;
|
import com.exquisite.adapter.ThumAdapter;
|
||||||
import com.exquisite.demo08.R;
|
import com.exquisite.R;
|
||||||
import com.exquisite.tools.SpaceItem;
|
import com.exquisite.tools.SpaceItem;
|
||||||
|
|
||||||
public class FragmentAesthetic extends Fragment {
|
public class FragmentAesthetic extends Fragment {
|
||||||
|
|||||||
@ -11,7 +11,7 @@ import androidx.recyclerview.widget.RecyclerView;
|
|||||||
|
|
||||||
import com.exquisite.KeyboardSkin;
|
import com.exquisite.KeyboardSkin;
|
||||||
import com.exquisite.adapter.ThumAdapter;
|
import com.exquisite.adapter.ThumAdapter;
|
||||||
import com.exquisite.demo08.R;
|
import com.exquisite.R;
|
||||||
import com.exquisite.tools.SpaceItem;
|
import com.exquisite.tools.SpaceItem;
|
||||||
|
|
||||||
public class FragmentCool extends Fragment {
|
public class FragmentCool extends Fragment {
|
||||||
|
|||||||
@ -12,7 +12,7 @@ import androidx.recyclerview.widget.RecyclerView;
|
|||||||
|
|
||||||
import com.exquisite.KeyboardSkin;
|
import com.exquisite.KeyboardSkin;
|
||||||
import com.exquisite.adapter.ThumAdapter;
|
import com.exquisite.adapter.ThumAdapter;
|
||||||
import com.exquisite.demo08.R;
|
import com.exquisite.R;
|
||||||
import com.exquisite.tools.SpaceItem;
|
import com.exquisite.tools.SpaceItem;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -11,7 +11,7 @@ import androidx.recyclerview.widget.RecyclerView;
|
|||||||
|
|
||||||
import com.exquisite.KeyboardSkin;
|
import com.exquisite.KeyboardSkin;
|
||||||
import com.exquisite.adapter.ThumAdapter;
|
import com.exquisite.adapter.ThumAdapter;
|
||||||
import com.exquisite.demo08.R;
|
import com.exquisite.R;
|
||||||
import com.exquisite.tools.SpaceItem;
|
import com.exquisite.tools.SpaceItem;
|
||||||
|
|
||||||
public class FragmentForyou extends Fragment {
|
public class FragmentForyou extends Fragment {
|
||||||
|
|||||||
@ -11,7 +11,7 @@ import androidx.recyclerview.widget.RecyclerView;
|
|||||||
|
|
||||||
import com.exquisite.KeyboardSkin;
|
import com.exquisite.KeyboardSkin;
|
||||||
import com.exquisite.adapter.ThumAdapter;
|
import com.exquisite.adapter.ThumAdapter;
|
||||||
import com.exquisite.demo08.R;
|
import com.exquisite.R;
|
||||||
import com.exquisite.tools.SpaceItem;
|
import com.exquisite.tools.SpaceItem;
|
||||||
|
|
||||||
public class FragmentLove extends Fragment {
|
public class FragmentLove extends Fragment {
|
||||||
|
|||||||
@ -11,7 +11,7 @@ import androidx.recyclerview.widget.RecyclerView;
|
|||||||
|
|
||||||
import com.exquisite.KeyboardSkin;
|
import com.exquisite.KeyboardSkin;
|
||||||
import com.exquisite.adapter.ThumAdapter;
|
import com.exquisite.adapter.ThumAdapter;
|
||||||
import com.exquisite.demo08.R;
|
import com.exquisite.R;
|
||||||
import com.exquisite.tools.SpaceItem;
|
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;
|
package com.exquisite.keyboard;
|
||||||
|
|
||||||
import android.app.Service;
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
|
||||||
import android.inputmethodservice.InputMethodService;
|
import android.inputmethodservice.InputMethodService;
|
||||||
import android.inputmethodservice.Keyboard;
|
|
||||||
import android.inputmethodservice.KeyboardView;
|
import android.inputmethodservice.KeyboardView;
|
||||||
import android.os.IBinder;
|
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.inputmethod.EditorInfo;
|
import android.view.inputmethod.EditorInfo;
|
||||||
import android.view.inputmethod.InputMethodManager;
|
import android.view.inputmethod.InputMethodManager;
|
||||||
|
|
||||||
import com.exquisite.demo08.R;
|
import com.exquisite.R;
|
||||||
|
|
||||||
public class KeyboardService extends InputMethodService implements KeyboardView.OnKeyboardActionListener {
|
public class KeyboardService extends InputMethodService implements KeyboardView.OnKeyboardActionListener {
|
||||||
private int[] ViewXmls = new int[4];
|
private int[] ViewXmls = new int[4];
|
||||||
|
|||||||
@ -7,7 +7,6 @@ import android.graphics.drawable.Drawable;
|
|||||||
import android.inputmethodservice.Keyboard;
|
import android.inputmethodservice.Keyboard;
|
||||||
import android.inputmethodservice.KeyboardView;
|
import android.inputmethodservice.KeyboardView;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.util.Log;
|
|
||||||
|
|
||||||
import com.exquisite.tools.CustomViewConfig;
|
import com.exquisite.tools.CustomViewConfig;
|
||||||
import com.exquisite.tools.Mytools;
|
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.BitmapDrawable;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.graphics.drawable.StateListDrawable;
|
import android.graphics.drawable.StateListDrawable;
|
||||||
import android.util.Log;
|
|
||||||
import android.util.Xml;
|
import android.util.Xml;
|
||||||
|
|
||||||
import androidx.core.content.ContextCompat;
|
import androidx.core.content.ContextCompat;
|
||||||
|
|
||||||
import com.exquisite.KeyboardSkin;
|
import com.exquisite.KeyboardSkin;
|
||||||
import com.exquisite.data.StaticValue;
|
import com.exquisite.data.StaticValue;
|
||||||
import com.exquisite.demo08.R;
|
import com.exquisite.R;
|
||||||
|
|
||||||
import org.xmlpull.v1.XmlPullParser;
|
import org.xmlpull.v1.XmlPullParser;
|
||||||
import org.xmlpull.v1.XmlPullParserException;
|
import org.xmlpull.v1.XmlPullParserException;
|
||||||
|
|||||||
@ -1,9 +1,6 @@
|
|||||||
package com.exquisite.tools;
|
package com.exquisite.tools;
|
||||||
|
|
||||||
import static android.provider.Settings.System.getString;
|
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.content.res.AssetManager;
|
import android.content.res.AssetManager;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.graphics.drawable.StateListDrawable;
|
import android.graphics.drawable.StateListDrawable;
|
||||||
@ -33,7 +30,7 @@ import com.exquisite.callback.Adcallback;
|
|||||||
import com.exquisite.callback.DownloadCallback;
|
import com.exquisite.callback.DownloadCallback;
|
||||||
import com.exquisite.callback.UnzipCallback;
|
import com.exquisite.callback.UnzipCallback;
|
||||||
import com.exquisite.data.Mydata;
|
import com.exquisite.data.Mydata;
|
||||||
import com.exquisite.demo08.R;
|
import com.exquisite.R;
|
||||||
|
|
||||||
import net.sf.sevenzipjbinding.ArchiveFormat;
|
import net.sf.sevenzipjbinding.ArchiveFormat;
|
||||||
import net.sf.sevenzipjbinding.IInArchive;
|
import net.sf.sevenzipjbinding.IInArchive;
|
||||||
@ -58,6 +55,8 @@ import java.nio.charset.StandardCharsets;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.concurrent.ExecutorService;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
|
||||||
public class Mytools {
|
public class Mytools {
|
||||||
private static InputMethodManager methodManager = (InputMethodManager) KeyboardSkin.app.getSystemService(Context.INPUT_METHOD_SERVICE);
|
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 two_Ad = "n66a0bc9350f0e";
|
||||||
private static final String three_ad = "n66a0b8eca7766";
|
private static final String three_ad = "n66a0b8eca7766";
|
||||||
private static ArrayList<ATInterstitial> adArrayList;
|
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) {
|
public static void setCallback(ATInterstitial ad, Adcallback adcallback) {
|
||||||
ad.setAdListener(new ATInterstitialListener() {
|
ad.setAdListener(new ATInterstitialListener() {
|
||||||
@Override
|
@Override
|
||||||
@ -294,14 +303,18 @@ public class Mytools {
|
|||||||
JSONArray jsonObject = loadJSONFromAsset(filename);
|
JSONArray jsonObject = loadJSONFromAsset(filename);
|
||||||
for (int a = 0; a < jsonObject.length(); a++) {
|
for (int a = 0; a < jsonObject.length(); a++) {
|
||||||
JSONObject list = jsonObject.getJSONObject(a);
|
JSONObject list = jsonObject.getJSONObject(a);
|
||||||
|
String className = list.getString("className");
|
||||||
JSONArray classArray = list.getJSONArray("list");
|
JSONArray classArray = list.getJSONArray("list");
|
||||||
for (int i = 0; i < classArray.length(); i++) {
|
for (int i = 0; i < classArray.length(); i++) {
|
||||||
JSONObject item = classArray.getJSONObject(i);
|
JSONObject item = classArray.getJSONObject(i);
|
||||||
Mydata myData = new Mydata();
|
Mydata myData = new Mydata();
|
||||||
|
myData.setClassName(className);
|
||||||
|
myData.setDownloaded(false);
|
||||||
|
myData.setIslike(false);
|
||||||
myData.setPreview(item.getString("preview"));
|
myData.setPreview(item.getString("preview"));
|
||||||
myData.setThumbnail(item.getString("thumb"));
|
myData.setThumb(item.getString("thumb"));
|
||||||
myData.setResourceName(item.getString("title"));
|
myData.setTitle(item.getString("title"));
|
||||||
myData.setUrl(item.getString("zipUrl"));
|
myData.setZipUrl(item.getString("zipUrl"));
|
||||||
dataList.add(myData);
|
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">
|
tools:context="com.exquisite.activity.PreviewActivity">
|
||||||
|
|
||||||
|
|
||||||
<LinearLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:id="@+id/detail_title"
|
android:id="@+id/detail_title"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@ -25,7 +25,9 @@
|
|||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/detail_back"
|
android:id="@+id/detail_back"
|
||||||
android:layout_width="wrap_content"
|
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
|
<ImageView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
@ -42,7 +44,19 @@
|
|||||||
android:textColor="@color/white"
|
android:textColor="@color/white"
|
||||||
android:textSize="20sp" />
|
android:textSize="20sp" />
|
||||||
</LinearLayout>
|
</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
|
<LinearLayout
|
||||||
android:id="@+id/detailcenter"
|
android:id="@+id/detailcenter"
|
||||||
@ -167,14 +181,14 @@
|
|||||||
android:layout_height="wrap_content" />
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/step1_image"
|
android:id="@+id/pre_down_image"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:background="@drawable/icon_down" />
|
android:background="@drawable/icon_down" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/step1_text"
|
android:id="@+id/pre_down_text"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
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_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/logo" />
|
app:layout_constraintTop_toBottomOf="@id/logo" />
|
||||||
|
|
||||||
<ProgressBar
|
<com.exquisite.tools.CustomProgressBar
|
||||||
android:layout_width="wrap_content"
|
android:id="@+id/splash_pg"
|
||||||
android:layout_height="wrap_content"
|
android:layout_width="300dp"
|
||||||
android:layout_marginTop="20dp"
|
android:layout_height="20dp"
|
||||||
|
android:layout_marginTop="80dp"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/text" />
|
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_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="@color/background"
|
android:background="@color/background"
|
||||||
tools:context="com.exquisite.fragment.PageOneFragment">
|
tools:context="com.exquisite.fragment.MainFragment">
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:id="@+id/main"
|
android:id="@+id/main"
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="@color/background"
|
android:background="@color/background"
|
||||||
tools:context="com.exquisite.fragment.PageTwoFragment">
|
tools:context="com.exquisite.fragment.SettingFragment">
|
||||||
|
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
@ -90,52 +90,6 @@
|
|||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
</LinearLayout>
|
</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
|
<LinearLayout
|
||||||
android:id="@+id/privacy"
|
android:id="@+id/privacy"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@ -179,6 +133,140 @@
|
|||||||
app:layout_constraintTop_toTopOf="@id/img_privacy" />
|
app:layout_constraintTop_toTopOf="@id/img_privacy" />
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
</LinearLayout>
|
</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>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
android:id="@+id/constraint_layout_id"
|
android:id="@+id/constraint_layout_id"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
tools:context="com.exquisite.fragment.PageOneFragment">
|
tools:context="com.exquisite.fragment.MainFragment">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/image_view_thumb_id"
|
android:id="@+id/image_view_thumb_id"
|
||||||
@ -16,4 +16,10 @@
|
|||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="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>
|
</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="keyboardsettings">Keyboard Settings</string>
|
||||||
<string name="rate_us">Rate us</string>
|
<string name="rate_us">Rate us</string>
|
||||||
<string name="privacy">Privacy</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="for_you">For You</string>
|
||||||
<string name="view_all">View all</string>
|
<string name="view_all">View all</string>
|
||||||
<string name="all">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="step1">Step 1:Select</string>
|
||||||
<string name="step2">Step 2:Enabled</string>
|
<string name="step2">Step 2:Enabled</string>
|
||||||
<string name="hello_blank_fragment">Hello blank fragment</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_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_step_failed">Setting failed ! Please try again</string>
|
||||||
<string name="text_download_failed">Download failed</string>
|
<string name="text_download_failed">Download failed</string>
|
||||||
|
<string name="text_zip_failed">Zip failed</string>
|
||||||
<string name="cancel">Cancel</string>
|
<string name="cancel">Cancel</string>
|
||||||
<string name="nofiles">The keyboard is not available</string>
|
<string name="nofiles">The keyboard is not available</string>
|
||||||
<string name="text_tips">Please enter the content</string>
|
<string name="text_tips">Please enter the content</string>
|
||||||
@ -28,4 +31,12 @@
|
|||||||
<string name="search">Search</string>
|
<string name="search">Search</string>
|
||||||
<string name="facebook_app_id">489845093456531</string>
|
<string name="facebook_app_id">489845093456531</string>
|
||||||
<string name="facebook_client_token">f4f2d45a7ca326adf493b7dd29a188be</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>
|
</resources>
|
||||||
@ -1,7 +1,7 @@
|
|||||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||||
plugins {
|
plugins {
|
||||||
id("com.android.application") version "8.1.3" apply false
|
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.gms.google-services") version "4.3.15" apply false
|
||||||
id ("com.google.firebase.crashlytics") version "2.9.2" apply false
|
id ("com.google.firebase.crashlytics") version "2.9.2" apply false
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,7 +14,7 @@ dependencyResolutionManagement {
|
|||||||
maven("https://jitpack.io")
|
maven("https://jitpack.io")
|
||||||
maven("https://jfrog.anythinktech.com/artifactory/overseas_sdk")
|
maven("https://jfrog.anythinktech.com/artifactory/overseas_sdk")
|
||||||
maven("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea")
|
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")}
|
maven{url = uri("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea")}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user