V1.0.0(1)

This commit is contained in:
zhouzhijia 2024-08-01 13:55:30 +08:00
commit 65a0d83ce2
136 changed files with 11507 additions and 0 deletions

18
.gitignore vendored Normal file
View File

@ -0,0 +1,18 @@
*.iml
.gradle
/local.properties
/.idea/caches
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
local.properties
.idea/
app/release/simplekeyboard_V1.0.0(1)_07_05_14_08-release.aab
app/release/simplekeyboard_V1.0.0(1)_07_05_14_06-release.apk

1
app/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/build

64
app/build.gradle.kts Normal file
View File

@ -0,0 +1,64 @@
import java.util.Date
import java.text.SimpleDateFormat
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
id ("kotlin-kapt")
}
val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date())
android {
namespace = "com.key.simplekeyboard"
compileSdk = 34
defaultConfig {
applicationId = "com.key.simplekeyboard"
minSdk = 23
targetSdk = 34
versionCode = 1
versionName = "1.0.0"
setProperty("archivesBaseName", "simplekeyboard_V" + versionName + "(${versionCode})_$timestamp")
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
isShrinkResources =true
isMinifyEnabled = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
}
dependencies {
implementation("androidx.appcompat:appcompat:1.7.0")
implementation("com.google.android.material:material:1.12.0")
implementation("androidx.constraintlayout:constraintlayout:2.1.4")
testImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test.ext:junit:1.1.5")
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
implementation("com.github.bumptech.glide:glide:4.16.0")
implementation("com.github.omicronapps:7-Zip-JBinding-4Android:Release-16.02-2.02")
val room_version = "2.6.1"
implementation("androidx.room:room-runtime:$room_version")
annotationProcessor("androidx.room:room-compiler:$room_version")
kapt("androidx.room:room-compiler:$room_version")
implementation("androidx.room:room-ktx:$room_version")
implementation("androidx.room:room-rxjava2:$room_version")
implementation("androidx.room:room-rxjava3:$room_version")
implementation("androidx.room:room-guava:$room_version")
testImplementation("androidx.room:room-testing:$room_version")
implementation("androidx.room:room-paging:$room_version")
implementation ("io.github.youth5201314:banner:2.2.3")
}

34
app/proguard-rules.pro vendored Normal file
View File

@ -0,0 +1,34 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
-keepclassmembers class com.key.simplekeyboard.SimpleKeyboardSkins{
public static final java.lang.String DB_Name;
public static final int DB_Version;
}
-keepclassmembers class *{
@androidx.room.Query <methods>;
}
-keep class com.key.simplekeyboard.data.MydataBase { *; }
-keep class com.key.simplekeyboard.data.MyDAO { *; }
-keep class com.key.simplekeyboard.data.Otherdata { *; }
-keep class com.omicronapplications.** { *; }
-keep class net.sf.sevenzipjbinding.** { *; }

View File

@ -0,0 +1,20 @@
{
"version": 3,
"artifactType": {
"type": "APK",
"kind": "Directory"
},
"applicationId": "com.key.simplekeyboard.test",
"variantName": "release",
"elements": [
{
"type": "SINGLE",
"filters": [],
"attributes": [],
"versionCode": 1,
"versionName": "1.0.0",
"outputFile": "simplekeyboard_V1.0.0(1)_07_05_14_06-release.apk"
}
],
"elementType": "File"
}

View File

@ -0,0 +1,20 @@
{
"version": 3,
"artifactType": {
"type": "APK",
"kind": "Directory"
},
"applicationId": "com.key.simplekeyboard.test",
"variantName": "release",
"elements": [
{
"type": "SINGLE",
"filters": [],
"attributes": [],
"versionCode": 1,
"versionName": "1.0.0",
"outputFile": "simplekeyboard_V1.0.0(1)_07_05_14_06-release.apk"
}
],
"elementType": "File"
}

BIN
app/simplekeyboard.jks Normal file

Binary file not shown.

BIN
app/simplekeyboardtest.jks Normal file

Binary file not shown.

View File

@ -0,0 +1,26 @@
package com.key.simplekeyboard;
import android.content.Context;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.*;
/**
* Instrumented test, which will execute on an Android device.
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
assertEquals("com.key.simplekeyboard", appContext.getPackageName());
}
}

View File

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:name=".SimpleKeyboardSkins"
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/icon_logo"
android:label="@string/app_name"
android:roundIcon="@mipmap/icon_logo"
android:supportsRtl="true"
android:theme="@style/Theme.SimpleKeyboard"
tools:targetApi="31">
<activity
android:name=".activity.SplashActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".activity.SettingActivity"
android:exported="false" />
<activity
android:name=".activity.PreviewActivity"
android:exported="false" />
<activity
android:name=".activity.AllActivity"
android:exported="false" />
<activity
android:name=".activity.MainActivity"
android:exported="true">
</activity>
<activity
android:name=".activity.SearchActivity"
android:exported="false" />
<service
android:name=".keyboard.KeyboardService"
android:enabled="true"
android:exported="true"
android:permission="android.permission.BIND_INPUT_METHOD">
<intent-filter>
<action android:name="android.view.InputMethod" />
</intent-filter>
<meta-data
android:name="android.view.im"
android:resource="@xml/im" />
</service>
</application>
</manifest>

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,146 @@
package com.key.simplekeyboard;
import android.app.Application;
import android.content.Context;
import android.content.SharedPreferences;
import android.util.Log;
import com.key.simplekeyboard.data.Mydata;
import com.key.simplekeyboard.data.MydataBase;
import com.key.simplekeyboard.data.Otherdata;
import com.key.simplekeyboard.tools.Mytools;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class SimpleKeyboardSkins extends Application {
public static SimpleKeyboardSkins app;
public static List<Otherdata> alllist = new ArrayList<>();
public static List<Otherdata> lovelist = new ArrayList<>();
public static List<Otherdata> coollist = new ArrayList<>();
public static List<Otherdata> cutelist = new ArrayList<>();
public static List<Otherdata> neonlist = new ArrayList<>();
public static List<Otherdata> festivallist = new ArrayList<>();
public static List<Otherdata> gravitylist = new ArrayList<>();
public static List<Otherdata> aestheticlist = new ArrayList<>();
public static List<Otherdata> superlist = new ArrayList<>();
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 Context context;
public static List<Mydata> mydataList;
private static boolean isinsert;
private static final String PREFS_NAME = "MyPrefs";
private static final String KEY_IS_INSERTED = "isinserted";
@Override
public void onCreate() {
super.onCreate();
app = this;
context = getApplicationContext();
SharedPreferences prefs = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
isinsert = prefs.getBoolean(KEY_IS_INSERTED, false);
List<Mydata> myData = Mytools.parseJsonToList("keyboard.json");
mydataList = myData;
if (!isinsert) {
Mytools.runIO(new Runnable() {
@Override
public void run() {
MydataBase.getInstance().myDAO().insertAll(getOtherdata());
isinsert = true;
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean(KEY_IS_INSERTED, isinsert);
editor.apply();
}
});
}
initData();
}
public static Context getContext() {
return context;
}
public static List<Mydata> getMyDataArrayList() {
return mydataList;
}
public static List<Otherdata> getOtherdata() {
List<Mydata> mydata = SimpleKeyboardSkins.getMyDataArrayList();
List<Otherdata> newlist = new ArrayList<>();
Set<String> titlesSet = new HashSet<>();
for (Mydata myDataItem : mydata) {
List<Otherdata> dataList = myDataItem.getList();
for (Otherdata otherdata : dataList) {
String title = otherdata.getTitle();
if (!titlesSet.contains(title)) {
newlist.add(otherdata);
titlesSet.add(title);
}
}
}
return newlist;
}
private void initData() {
Mytools.runIO(new Runnable() {
@Override
public void run() {
alllist = MydataBase.getInstance().myDAO().getAll();
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");
}
});
}
public static List<Otherdata> getAlllist() {
return alllist;
}
public static List<Otherdata> getLovelist() {
return lovelist;
}
public static List<Otherdata> getCoollist() {
return coollist;
}
public static List<Otherdata> getCutelist() {
return cutelist;
}
public static List<Otherdata> getNeonlist() {
return neonlist;
}
public static List<Otherdata> getFestivallist() {
return festivallist;
}
public static List<Otherdata> getGravitylist() {
return gravitylist;
}
public static List<Otherdata> getAestheticlist() {
return aestheticlist;
}
public static List<Otherdata> getSuperlist() {
return superlist;
}
}

View File

@ -0,0 +1,158 @@
package com.key.simplekeyboard.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 androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.content.res.TypedArray;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.google.android.material.tabs.TabLayout;
import com.key.simplekeyboard.R;
import com.key.simplekeyboard.adapter.PageAdapter;
import com.key.simplekeyboard.data.MydataBase;
import com.key.simplekeyboard.data.Otherdata;
import com.key.simplekeyboard.fragment.AllFragment;
import com.key.simplekeyboard.fragment.LikeFragment;
import com.key.simplekeyboard.tools.Mytools;
import java.util.ArrayList;
import java.util.List;
public class AllActivity extends AppCompatActivity {
private ImageView back, search;
private TabLayout tabLayout;
private ViewPager viewPager;
private TextView tabtext, title;
private ImageView tabimg;
private String[] listtext = {"ALL", "Love", "Cool", "Cute", "Neon", "Festival", "Gravity", "Aesthetic", "Super Theme"};
private List<Fragment> list = new ArrayList<>();
private TypedArray imageArray;
private PageAdapter adapter;
@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_all);
EdgeToEdge.enable(this);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.activity_all), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
adapter = new PageAdapter(getSupportFragmentManager(), list);
initView();
initEvent();
imageArray = getResources().obtainTypedArray(R.array.drawable_images);
viewPager.setAdapter(adapter);
for (int i = 0; i < 9; i++) {
TabLayout.Tab tab = tabLayout.newTab();
tabLayout.addTab(tab);
View customView = LayoutInflater.from(this).inflate(R.layout.custom_tablayout, null);
tabimg = customView.findViewById(R.id.tab_image);
tabtext = customView.findViewById(R.id.tab_text);
tabtext.setText(listtext[i]);
customView.setBackgroundResource(R.drawable.all_selector);
Drawable drawable = imageArray.getDrawable(i);
tabimg.setBackground(drawable);
tab.setCustomView(customView);
final int finalI = i;
tab.view.setOnClickListener(v -> {
viewPager.setCurrentItem(finalI);
});
}
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
setTabIcons(position);
tabLayout.setScrollPosition(position, 0, true);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
private void setTabIcons(int position) {
for (int i = 0; i < tabLayout.getTabCount(); i++) {
TabLayout.Tab tab = tabLayout.getTabAt(i);
if (tab != null) {
tab.getCustomView().findViewById(R.id.tab_text).setSelected(i == position);
View customView = tab.getCustomView();
if (i == position) {
customView.setBackgroundResource(R.drawable.all_tab_check);
} else {
customView.setBackgroundResource(R.drawable.all_tab_uncheck);
}
}
}
}
private void initEvent() {
search.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(AllActivity.this, SearchActivity.class);
startActivity(intent);
}
});
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
private void initView() {
search = findViewById(R.id.all_search);
back = findViewById(R.id.all_back);
tabLayout = findViewById(R.id.all_tabLayout);
viewPager = findViewById(R.id.all_viewpager);
title = findViewById(R.id.all_title);
title.setTypeface(Typeface.createFromAsset(getAssets(), "DenkOne-Regular.ttf"));
for (String s : listtext) {
list.add(AllFragment.newInstance(s));
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (imageArray != null) {
imageArray.recycle();
}
}
}

View File

@ -0,0 +1,119 @@
package com.key.simplekeyboard.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 androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.google.android.material.tabs.TabLayout;
import com.key.simplekeyboard.R;
import com.key.simplekeyboard.adapter.PageAdapter;
import com.key.simplekeyboard.fragment.LikeFragment;
import com.key.simplekeyboard.fragment.MainFragment;
import com.key.simplekeyboard.fragment.SettingFragment;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private TabLayout tabLayout;
private ViewPager viewPager;
private List<Fragment> list = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EdgeToEdge.enable(this);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main_activity), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
initView();
initData();
}
private void initData() {
PageAdapter adapter = new PageAdapter(getSupportFragmentManager(),list);
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
setmainTabIcons(tabLayout);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
setTabIcons(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
private void initView() {
tabLayout = findViewById(R.id.main_tabLayout);
viewPager = findViewById(R.id.main_viewpager);
list.add(new MainFragment());
list.add(new LikeFragment());
list.add(new SettingFragment());
}
private void setTabIcons(final int position) {
for (int i = 0; i < tabLayout.getTabCount(); i++) {
final TabLayout.Tab tab = tabLayout.getTabAt(i);
if (tab != null) {
switch (i) {
case 0:
tab.setIcon(position == 0 ? R.drawable.home_check : R.drawable.home_uncheck);
break;
case 1:
tab.setIcon(position == 1 ? R.drawable.like_check : R.drawable.like_uncheck);
break;
case 2:
tab.setIcon(position == 2 ? R.drawable.setting_check : R.drawable.setting_uncheck);
break;
default:
break;
}
}
}
}
private void setmainTabIcons(TabLayout tabLayout) {
for (int i = 0; i < tabLayout.getTabCount(); i++) {
TabLayout.Tab tab = tabLayout.getTabAt(i);
if (tab != null) {
switch (i) {
case 0:
tab.setIcon(R.drawable.home_check);
break;
case 1:
tab.setIcon(R.drawable.like_uncheck);
break;
case 2:
tab.setIcon(R.drawable.setting_uncheck);
break;
default:
break;
}
}
}
}
}

View File

@ -0,0 +1,222 @@
package com.key.simplekeyboard.activity;
import androidx.activity.EdgeToEdge;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
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.key.simplekeyboard.R;
import com.key.simplekeyboard.SimpleKeyboardSkins;
import com.key.simplekeyboard.adapter.ThumAdapter;
import com.key.simplekeyboard.data.MydataBase;
import com.key.simplekeyboard.data.Otherdata;
import com.key.simplekeyboard.fragment.MainFragment;
import com.key.simplekeyboard.tools.Mytools;
import com.key.simplekeyboard.tools.SpaceItem;
import com.key.simplekeyboard.tools.StaticValue;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class PreviewActivity extends AppCompatActivity {
private ImageView back, like, preimg, downimg;
private ConstraintLayout download;
private LinearLayout viewall;
private TextView title;
private RecyclerView prerv;
private ProgressBar downpg, prepg;
private String name, preview, url, unzipPath;
private final Boolean[] islike = {false};
private Otherdata otherdata;
private List<Otherdata> prerandomlist = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_preview);
EdgeToEdge.enable(this);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.activity_pre), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
intView();
List<Otherdata> othList = MainFragment.generateRandomOtherdata(0, 10);
for (Otherdata data : othList) {
if (prerandomlist.size() < 10) {
prerandomlist.add(data);
}
}
SpaceItem spaceItem = new SpaceItem(12, 12, 12);
prerv.setAdapter(new ThumAdapter(this, prerandomlist));
prerv.setLayoutManager(new GridLayoutManager(this, 2));
prerv.addItemDecoration(spaceItem);
Intent intent = getIntent();
preview = intent.getStringExtra(StaticValue.KEY_PRE);
name = intent.getStringExtra(StaticValue.KEY_NAME);
url = intent.getStringExtra(StaticValue.KEY_URL);
Mytools.runIO(new Runnable() {
@Override
public void run() {
List<Otherdata> existingData = MydataBase.getInstance().myDAO().checklikelist(preview);
if (!existingData.isEmpty()) {
otherdata = existingData.get(0);
islike[0] = otherdata.getIslike();
if (islike[0]) {
like.setBackgroundResource(R.drawable.icon_pre_like_check);
} else {
like.setBackgroundResource(R.drawable.icon_pre_like_uncheck);
}
}
}
});
Glide.with(this)
.asBitmap()
.load(preview)
.into(new CustomTarget<Bitmap>() {
@Override
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
preimg.setImageBitmap(resource);
preimg.setVisibility(View.VISIBLE);
title.setText(name);
prepg.setVisibility(View.GONE);
}
@Override
public void onLoadCleared(@Nullable Drawable placeholder) {
}
});
File cacheDir = this.getCacheDir();
unzipPath = cacheDir + "/" + name;
intEvent();
}
private void intEvent() {
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
like.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
isLike();
}
});
download.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
downLoad();
}
});
viewall.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(PreviewActivity.this, AllActivity.class);
startActivity(intent);
}
});
}
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, SettingActivity.class);
startActivity(intent);
} else {
downpg.setVisibility(View.VISIBLE);
downimg.setVisibility(View.GONE);
Mytools.donwnZip(this, url, (successful, resource) -> {
if (successful) {
Mytools.unZip(this, unzipPath, resource, (successful1, resDirPath) -> {
if (successful1) {
StaticValue.PATH = resDirPath;
Toast.makeText(PreviewActivity.this, getString(R.string.set_successful), Toast.LENGTH_SHORT).show();
downpg.setVisibility(View.GONE);
finish();
} else {
Toast.makeText(PreviewActivity.this, getString(R.string.text_zip_failed), Toast.LENGTH_SHORT).show();
}
});
} else {
Toast.makeText(PreviewActivity.this, getString(R.string.text_download_failed), Toast.LENGTH_SHORT).show();
}
});
}
}
private void isLike() {
if (!islike[0]) {
like.setBackgroundResource(R.drawable.icon_pre_like_check);
islike[0] = true;
otherdata.setIslike(true);
Mytools.runIO(new Runnable() {
@Override
public void run() {
MydataBase.getInstance().myDAO().update(otherdata);
}
});
} else {
like.setBackgroundResource(R.drawable.icon_pre_like_uncheck);
islike[0] = false;
otherdata.setIslike(false);
Mytools.runIO(new Runnable() {
@Override
public void run() {
MydataBase.getInstance().myDAO().update(otherdata);
}
});
}
}
private void intView() {
preimg = findViewById(R.id.preview_image);
like = findViewById(R.id.pre_like);
back = findViewById(R.id.pre_back);
download = findViewById(R.id.download);
viewall = findViewById(R.id.pre_all);
title = findViewById(R.id.pre_title);
prerv = findViewById(R.id.pre_rv);
downimg = findViewById(R.id.download_image);
downpg = findViewById(R.id.download_progress);
prepg = findViewById(R.id.image_progress);
downpg.setVisibility(View.GONE);
prepg.setVisibility(View.VISIBLE);
preimg.setVisibility(View.GONE);
}
@Override
public void onBackPressed() {
super.onBackPressed();
Log.e("zzj","1111111111111111");
}
}

View File

@ -0,0 +1,133 @@
package com.key.simplekeyboard.activity;
import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.key.simplekeyboard.R;
import com.key.simplekeyboard.SimpleKeyboardSkins;
import com.key.simplekeyboard.adapter.ThumAdapter;
import com.key.simplekeyboard.data.MydataBase;
import com.key.simplekeyboard.data.Otherdata;
import com.key.simplekeyboard.tools.Mytools;
import com.key.simplekeyboard.tools.SpaceItem;
import java.util.List;
public class SearchActivity extends AppCompatActivity {
private ImageView back;
private EditText searchText;
private RecyclerView searchrv;
private String name;
private String searchname;
private TextView search, faile;
private final SpaceItem spaceItem = new SpaceItem(12, 12, 12);
@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search);
EdgeToEdge.enable(this);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.search_activity), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
initView();
faile.setVisibility(View.GONE);
searchText.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
searchText.setOnEditorActionListener((v, actionId, event) -> {
if (actionId == EditorInfo.IME_ACTION_DONE) {
search();
return true;
}
return false;
});
searchrv.addItemDecoration(spaceItem);
initEvent();
}
private void hideKeyView() {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(searchText.getWindowToken(), 0);
searchText.clearFocus();
}
private void initEvent() {
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
search.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
search();
}
});
}
private void initView() {
back = findViewById(R.id.search_back);
searchrv = findViewById(R.id.searc_rv);
searchText = findViewById(R.id.edit_search);
search = findViewById(R.id.cancel);
faile = findViewById(R.id.faile);
}
private void search() {
if (TextUtils.isEmpty(searchText.getText().toString())) {
faile.setVisibility(View.VISIBLE);
searchrv.setVisibility(View.GONE);
faile.setText(R.string.text_tips);
} else {
faile.setVisibility(View.GONE);
searchrv.setVisibility(View.VISIBLE);
Otherdata mydata = new Otherdata();
searchname = searchText.getText().toString();
List<Otherdata> filteredData = mydata.filterByName(searchname, SimpleKeyboardSkins.getOtherdata());
if (filteredData.isEmpty()) {
faile.setVisibility(View.VISIBLE);
faile.setText(R.string.text_null);
searchrv.setVisibility(View.GONE);
} else {
faile.setVisibility(View.GONE);
searchrv.setVisibility(View.VISIBLE);
searchrv.setAdapter(new ThumAdapter(this, filteredData));
searchrv.setLayoutManager(new GridLayoutManager(this, 2));
}
}
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(searchText.getWindowToken(), 0);
}
@Override
protected void onPause() {
super.onPause();
hideKeyView();
}
}

View File

@ -0,0 +1,110 @@
package com.key.simplekeyboard.activity;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.provider.Settings;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.ImageView;
import com.key.simplekeyboard.R;
import com.key.simplekeyboard.SimpleKeyboardSkins;
import com.key.simplekeyboard.tools.Mytools;
public class SettingActivity extends AppCompatActivity {
private ConstraintLayout step1, step2;
private ImageView back;
private ImageView step1_image, step2_image;
private static final InputMethodManager methodManager = (InputMethodManager) SimpleKeyboardSkins.app.getSystemService(Context.INPUT_METHOD_SERVICE);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_setting);
EdgeToEdge.enable(this);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.setting_activity), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
intView();
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
step1.setSelected(Mytools.isStep1());
step2.setSelected(Mytools.isStep2());
intImage();
}
};
registerReceiver(broadcastReceiver, new IntentFilter(Intent.ACTION_INPUT_METHOD_CHANGED));
intEvent();
}
private void intView() {
back = findViewById(R.id.setting_back);
step1 = findViewById(R.id.step1);
step2 = findViewById(R.id.step2);
step1_image = findViewById(R.id.step1_image);
step2_image = findViewById(R.id.step2_image);
step1_image.setVisibility(View.GONE);
step2_image.setVisibility(View.GONE);
}
private void intEvent() {
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
step2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
methodManager.showInputMethodPicker();
intImage();
}
});
step1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Settings.ACTION_INPUT_METHOD_SETTINGS);
startActivity(intent);
intImage();
}
});
}
private void intImage() {
if (Mytools.isStep2()) {
step2_image.setVisibility(View.VISIBLE);
} else {
step2_image.setVisibility(View.GONE);
}
if (Mytools.isStep1()) {
step1_image.setVisibility(View.VISIBLE);
} else {
step1_image.setVisibility(View.GONE);
}
}
@Override
protected void onResume() {
super.onResume();
step1.setSelected(Mytools.isStep1());
step2.setSelected(Mytools.isStep2());
intImage();
}
}

View File

@ -0,0 +1,48 @@
package com.key.simplekeyboard.activity;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.os.CountDownTimer;
import com.key.simplekeyboard.R;
public class SplashActivity extends AppCompatActivity {
private CountDownTimer countDownTimer;
@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.splash_activity), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
countDownTimer = new CountDownTimer(1000, 100) {
@Override
public void onTick(long l) {
}
@Override
public void onFinish() {
starMainactivity();
}
};
countDownTimer.start();
}
private void starMainactivity() {
Intent intent = new Intent(SplashActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
}

View File

@ -0,0 +1,28 @@
package com.key.simplekeyboard.adapter;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter;
import java.util.List;
public class PageAdapter extends FragmentStatePagerAdapter {
private final List<Fragment> fragmentList;
public PageAdapter(@NonNull FragmentManager fm, List<Fragment> list) {
super(fm);
fragmentList = list;
}
@NonNull
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
@Override
public int getCount() {
return fragmentList.size();
}
}

View File

@ -0,0 +1,86 @@
package com.key.simplekeyboard.adapter;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.key.simplekeyboard.R;
import com.key.simplekeyboard.activity.PreviewActivity;
import com.key.simplekeyboard.data.Otherdata;
import com.key.simplekeyboard.tools.Mytools;
import com.key.simplekeyboard.tools.StaticValue;
import java.util.List;
public class ThumAdapter extends RecyclerView.Adapter<ThumAdapter.ThumVH> {
private Context myContext;
private List<Otherdata> myDataList;
public ThumAdapter(Context context, List<Otherdata> list) {
myContext = context;
myDataList = list;
}
@NonNull
@Override
public ThumAdapter.ThumVH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(myContext).inflate(R.layout.image_list, parent, false);
return new ThumAdapter.ThumVH(view);
}
@SuppressLint("ResourceType")
@Override
public void onBindViewHolder(@NonNull ThumAdapter.ThumVH holder, int position) {
Otherdata myData = myDataList.get(position);
String thumbnail = myData.getThumb();
Glide.with(myContext)
.load(thumbnail)
.placeholder(R.color.pre_load_color)
.transform(new RoundedCorners(Mytools.dp2Px(12)))
.into(holder.getImageViewThumb());
holder.getConstraintLayout().setOnClickListener(v -> {
Intent intent = new Intent(myContext, PreviewActivity.class);
intent.putExtra(StaticValue.KEY_NAME, myData.getTitle());
intent.putExtra(StaticValue.KEY_URL, myData.getZipUrl());
intent.putExtra(StaticValue.KEY_PRE, myData.getPreview());
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
myContext.startActivity(intent);
});
}
@Override
public int getItemCount() {
return myDataList.size();
}
public class ThumVH extends RecyclerView.ViewHolder {
private ImageView imageViewThumb;
private ConstraintLayout constraintLayout;
public ThumVH(@NonNull View itemView) {
super(itemView);
imageViewThumb = itemView.findViewById(R.id.image_view_thumb_id);
constraintLayout = itemView.findViewById(R.id.constraint_layout_id);
}
public ImageView getImageViewThumb() {
return imageViewThumb;
}
public ConstraintLayout getConstraintLayout() {
return constraintLayout;
}
}
}

View File

@ -0,0 +1,9 @@
package com.key.simplekeyboard.callback;
import java.io.File;
import java.io.IOException;
public interface DownloadCallback {
void onDownloadCall(boolean successful, File resource) throws IOException;
}

View File

@ -0,0 +1,6 @@
package com.key.simplekeyboard.callback;
public interface UnzipCallback {
void onUnzipCall(boolean successful, String resDirPath);
}

View File

@ -0,0 +1,29 @@
package com.key.simplekeyboard.data;
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")
List<Otherdata> getAll();
@Query("select * from keyboard_table where title =:title ")
List<Otherdata> getsearchlist(String title);
@Query("select * from keyboard_table where preview =:pre ")
List<Otherdata> checklikelist(String pre);
@Query("select * from keyboard_table where className =:classname ")
List<Otherdata> getotherlist(String classname);
@Query("SELECT * FROM keyboard_table WHERE islike = :islike")
List<Otherdata> getlikelist(boolean islike);
@Insert
void insertAll(List<Otherdata> likeDataList);
@Update
void update(Otherdata otherdata);
}

View File

@ -0,0 +1,24 @@
package com.key.simplekeyboard.data;
import java.util.ArrayList;
import java.util.List;
public class Mydata {
public String name;
private List<Otherdata> list =new ArrayList<>();
public List<Otherdata> getList() {
return list;
}
public void setList(List<Otherdata> list) {
this.list = list;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

View File

@ -0,0 +1,29 @@
package com.key.simplekeyboard.data;
import androidx.room.Database;
import androidx.room.Room;
import androidx.room.RoomDatabase;
import com.key.simplekeyboard.SimpleKeyboardSkins;
@Database(entities = {Otherdata.class}, version = SimpleKeyboardSkins.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) {
if (INSTANCE == null) {
INSTANCE = Room.databaseBuilder(SimpleKeyboardSkins.getContext(), MydataBase.class, SimpleKeyboardSkins.DB_Name).build();
}
}
}
return INSTANCE;
}
}

View File

@ -0,0 +1,81 @@
package com.key.simplekeyboard.data;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
import com.key.simplekeyboard.SimpleKeyboardSkins;
import java.util.ArrayList;
import java.util.List;
@Entity(tableName = SimpleKeyboardSkins.Table_Name)
public class Otherdata {
@PrimaryKey(autoGenerate = true)
public int id;
public String preview;
public String thumb;
public String className;
public String title;
public String zipUrl;
public Boolean islike;
public String getPreview() {
return preview;
}
public void setPreview(String preview) {
this.preview = preview;
}
public String getThumb() {
return thumb;
}
public void setThumb(String thumb) {
this.thumb = thumb;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getZipUrl() {
return zipUrl;
}
public void setZipUrl(String zipUrl) {
this.zipUrl = zipUrl;
}
public Boolean getIslike() {
return islike;
}
public void setIslike(Boolean islike) {
this.islike = islike;
}
public List<Otherdata> filterByName(String input, List<Otherdata> dataList) {
List<Otherdata> filteredList = new ArrayList<>();
for (Otherdata data : dataList) {
if (data.getTitle().toLowerCase().contains(input.toLowerCase())) {
filteredList.add(data);
}
}
return filteredList;
}
}

View File

@ -0,0 +1,103 @@
package com.key.simplekeyboard.fragment;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.key.simplekeyboard.R;
import com.key.simplekeyboard.SimpleKeyboardSkins;
import com.key.simplekeyboard.adapter.ThumAdapter;
import com.key.simplekeyboard.data.MydataBase;
import com.key.simplekeyboard.data.Otherdata;
import com.key.simplekeyboard.tools.Mytools;
import com.key.simplekeyboard.tools.SpaceItem;
import java.util.ArrayList;
import java.util.List;
public class AllFragment extends Fragment {
private List<Otherdata> alllist = new ArrayList<>();
private List<Otherdata> lovelist = new ArrayList<>();
private List<Otherdata> coollist = new ArrayList<>();
private List<Otherdata> cutelist = new ArrayList<>();
private List<Otherdata> neonlist = new ArrayList<>();
private List<Otherdata> festivallist = new ArrayList<>();
private List<Otherdata> gravitylist = new ArrayList<>();
private List<Otherdata> aestheticlist = new ArrayList<>();
private List<Otherdata> superlist = new ArrayList<>();
private RecyclerView allrv;
private ThumAdapter thumAdapter;
private List<Otherdata> dataList = new ArrayList<>();
private SpaceItem spaceItem = new SpaceItem(12, 12, 12);
private String tabargs;
private String[] listtext = {"ALL", "Love", "Cool", "Cute", "Neon", "Festival", "Gravity", "Aesthetic", "Super Theme"};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_all, container, false);
allrv = view.findViewById(R.id.all_rv);
tabargs = getArguments().getString("tab");
if (tabargs.equals("ALL")) {
thumAdapter = new ThumAdapter(requireContext(), SimpleKeyboardSkins.getAlllist());
allrv.setLayoutManager(new GridLayoutManager(requireContext(), 2));
allrv.setAdapter(thumAdapter);
} else if (tabargs.equals("Love")) {
thumAdapter = new ThumAdapter(requireContext(), SimpleKeyboardSkins.getLovelist());
allrv.setLayoutManager(new GridLayoutManager(requireContext(), 2));
allrv.setAdapter(thumAdapter);
} else if (tabargs.equals("Cool")) {
thumAdapter = new ThumAdapter(requireContext(), SimpleKeyboardSkins.getCoollist());
allrv.setLayoutManager(new GridLayoutManager(requireContext(), 2));
allrv.setAdapter(thumAdapter);
} else if (tabargs.equals("Cute")) {
thumAdapter = new ThumAdapter(requireContext(), SimpleKeyboardSkins.getCutelist());
allrv.setLayoutManager(new GridLayoutManager(requireContext(), 2));
allrv.setAdapter(thumAdapter);
} else if (tabargs.equals("Neon")) {
thumAdapter = new ThumAdapter(requireContext(), SimpleKeyboardSkins.getNeonlist());
allrv.setLayoutManager(new GridLayoutManager(requireContext(), 2));
allrv.setAdapter(thumAdapter);
} else if (tabargs.equals("Festival")) {
thumAdapter = new ThumAdapter(requireContext(), SimpleKeyboardSkins.getFestivallist());
allrv.setLayoutManager(new GridLayoutManager(requireContext(), 2));
allrv.setAdapter(thumAdapter);
} else if (tabargs.equals("Gravity")) {
thumAdapter = new ThumAdapter(requireContext(), SimpleKeyboardSkins.getGravitylist());
allrv.setLayoutManager(new GridLayoutManager(requireContext(), 2));
allrv.setAdapter(thumAdapter);
} else if (tabargs.equals("Aesthetic")) {
thumAdapter = new ThumAdapter(requireContext(), SimpleKeyboardSkins.getAestheticlist());
allrv.setLayoutManager(new GridLayoutManager(requireContext(), 2));
allrv.setAdapter(thumAdapter);
} else if (tabargs.equals("Super Theme")) {
thumAdapter = new ThumAdapter(requireContext(), SimpleKeyboardSkins.getSuperlist());
allrv.setLayoutManager(new GridLayoutManager(requireContext(), 2));
allrv.setAdapter(thumAdapter);
}
allrv.addItemDecoration(spaceItem);
return view;
}
public static AllFragment newInstance(String pos) {
Bundle args = new Bundle();
AllFragment fragment = new AllFragment();
args.putString("tab", pos);
fragment.setArguments(args);
return fragment;
}
}

View File

@ -0,0 +1,76 @@
package com.key.simplekeyboard.fragment;
import android.annotation.SuppressLint;
import android.graphics.Typeface;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.key.simplekeyboard.R;
import com.key.simplekeyboard.adapter.ThumAdapter;
import com.key.simplekeyboard.data.MydataBase;
import com.key.simplekeyboard.data.Otherdata;
import com.key.simplekeyboard.tools.Mytools;
import com.key.simplekeyboard.tools.SpaceItem;
import java.util.ArrayList;
import java.util.List;
public class LikeFragment extends Fragment {
private RecyclerView likerv;
private ThumAdapter thumAdapter;
private SpaceItem spaceItem = new SpaceItem(12, 12, 12);
private TextView likehint,title;
private List<Otherdata> likelist = new ArrayList<>();
@SuppressLint("MissingInflatedId")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_like, container, false);
initData();
likerv = view.findViewById(R.id.like_rv);
likehint = view.findViewById(R.id.nolike_text);
title = view.findViewById(R.id.like_title);
likerv.addItemDecoration(spaceItem);
title.setTypeface(Typeface.createFromAsset(getContext().getAssets(), "DenkOne-Regular.ttf"));
return view;
}
private void initData() {
Mytools.runIO(new Runnable() {
@Override
public void run() {
likelist = MydataBase.getInstance().myDAO().getlikelist(true);
requireActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
if (likelist.isEmpty()) {
likehint.setVisibility(View.VISIBLE);
} else {
likehint.setVisibility(View.GONE);
}
thumAdapter = new ThumAdapter(requireContext(), likelist);
likerv.setLayoutManager(new GridLayoutManager(requireContext(), 2));
likerv.setAdapter(thumAdapter);
}
});
}
});
}
@Override
public void onResume() {
super.onResume();
initData();
}
}

View File

@ -0,0 +1,140 @@
package com.key.simplekeyboard.fragment;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.graphics.Typeface;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.key.simplekeyboard.R;
import com.key.simplekeyboard.SimpleKeyboardSkins;
import com.key.simplekeyboard.activity.AllActivity;
import com.key.simplekeyboard.activity.PreviewActivity;
import com.key.simplekeyboard.activity.SearchActivity;
import com.key.simplekeyboard.adapter.ThumAdapter;
import com.key.simplekeyboard.data.MydataBase;
import com.key.simplekeyboard.data.Otherdata;
import com.key.simplekeyboard.tools.Mytools;
import com.key.simplekeyboard.tools.SpaceItem;
import com.key.simplekeyboard.tools.StaticValue;
import com.youth.banner.Banner;
import com.youth.banner.adapter.BannerImageAdapter;
import com.youth.banner.holder.BannerImageHolder;
import com.youth.banner.indicator.CircleIndicator;
import com.youth.banner.listener.OnBannerListener;
import com.youth.banner.transformer.AlphaPageTransformer;
import com.youth.banner.transformer.DepthPageTransformer;
import com.youth.banner.transformer.RotateUpPageTransformer;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class MainFragment extends Fragment {
private ImageView search;
private LinearLayout viewall;
private RecyclerView mainrv;
private ThumAdapter thumAdapter;
private TextView title;
private Banner banner;
private List<Otherdata> randomOriginals = new ArrayList<>();
private List<Otherdata> mainrandomlist = new ArrayList<>();
@SuppressLint("MissingInflatedId")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_main, container, false);
search = view.findViewById(R.id.main_search);
viewall = view.findViewById(R.id.view_all);
mainrv = view.findViewById(R.id.main_rv);
banner = view.findViewById(R.id.banner);
title = view.findViewById(R.id.main_title);
title.setTypeface(Typeface.createFromAsset(getContext().getAssets(), "DenkOne-Regular.ttf"));
List<Otherdata> otherdataList = generateRandomOtherdata(0, 5);
for (Otherdata data : otherdataList) {
if (randomOriginals.size() < 5) {
randomOriginals.add(data);
}
}
List<Otherdata> othList = generateRandomOtherdata(0, 20);
for (Otherdata data : othList) {
if (mainrandomlist.size() < 20) {
mainrandomlist.add(data);
}
}
banner.setAdapter(new BannerImageAdapter<Otherdata>(randomOriginals) {
@Override
public void onBindView(BannerImageHolder holder, Otherdata data, int position, int size) {
ImageView imageView = holder.imageView;
Glide.with(requireContext())
.load(data.getPreview())
// .placeholder(R.mipmap.icon_logo)
.into(imageView);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
}
});
banner.setOnBannerListener(new OnBannerListener() {
@Override
public void OnBannerClick(Object data, int position) {
Otherdata otherdata = randomOriginals.get(position);
String url = otherdata.getZipUrl();
String pre = otherdata.getPreview();
String name = otherdata.getTitle();
Intent intent = new Intent(requireContext(), PreviewActivity.class);
intent.putExtra(StaticValue.KEY_PRE, pre);
intent.putExtra(StaticValue.KEY_URL, url);
intent.putExtra(StaticValue.KEY_NAME, name);
requireContext().startActivity(intent);
}
});
banner.setIndicator(new CircleIndicator(requireContext()));
banner.setBannerRound(16);
banner.setIndicatorRadius(100);
thumAdapter = new ThumAdapter(requireContext(), mainrandomlist);
mainrv.setAdapter(thumAdapter);
mainrv.setLayoutManager(new GridLayoutManager(requireContext(), 2));
SpaceItem spaceItem = new SpaceItem(12, 12, 12);
mainrv.addItemDecoration(spaceItem);
search.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(), SearchActivity.class);
startActivity(intent);
}
});
viewall.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(), AllActivity.class);
startActivity(intent);
}
});
return view;
}
public static List<Otherdata> generateRandomOtherdata(int star, int end) {
List<Otherdata> allOtherdata = SimpleKeyboardSkins.getOtherdata();
Collections.shuffle(allOtherdata);
return allOtherdata.subList(star, end);
}
}

View File

@ -0,0 +1,95 @@
package com.key.simplekeyboard.fragment;
import android.app.Dialog;
import android.content.Intent;
import android.graphics.Typeface;
import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.key.simplekeyboard.R;
import com.key.simplekeyboard.SimpleKeyboardSkins;
import com.key.simplekeyboard.activity.SettingActivity;
import net.sf.sevenzipjbinding.BuildConfig;
public class SettingFragment extends Fragment {
private LinearLayout setting, share, version;
private TextView title;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_setting, container, false);
setting = view.findViewById(R.id.keyboard_setting);
share = view.findViewById(R.id.keyboard_share);
version = view.findViewById(R.id.keyboard_version);
title = view.findViewById(R.id.setting_title);
title.setTypeface(Typeface.createFromAsset(getContext().getAssets(), "DenkOne-Regular.ttf"));
setting.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(), SettingActivity.class);
startActivity(intent);
}
});
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.simplekeyboard";
share.putExtra(Intent.EXTRA_TEXT, text);
startActivity(Intent.createChooser(share, "choose one"));
}
});
version.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog();
}
});
return view;
}
private void showDialog() {
final Dialog dialog = new Dialog(requireContext());
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); // before
dialog.setContentView(R.layout.dia_about);
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.WRAP_CONTENT;
lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
((TextView) dialog.findViewById(R.id.tv_version)).setText("Version " + SimpleKeyboardSkins.VERSION_NAME);
dialog.findViewById(R.id.bt_close).setOnClickListener(v -> dialog.dismiss());
dialog.show();
dialog.getWindow().setAttributes(lp);
}
}

View File

@ -0,0 +1,130 @@
package com.key.simplekeyboard.keyboard;
import android.content.Context;
import android.inputmethodservice.InputMethodService;
import android.inputmethodservice.KeyboardView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodManager;
import com.key.simplekeyboard.R;
public class KeyboardService extends InputMethodService implements KeyboardView.OnKeyboardActionListener {
private int[] ViewXmls = new int[4];
private MyKeyboard myKeyboard;
public KeyboardService() {
}
@Override
public View onCreateInputView() {
ViewXmls[0] = R.xml.view_1;
ViewXmls[1] = R.xml.view_2;
ViewXmls[2] = R.xml.view_3;
ViewXmls[3] = R.xml.view_4;
View inputView = LayoutInflater.from(this).inflate(R.layout.keyboard_view, null, false);
myKeyboard = inputView.findViewById(R.id.keyboardView);
myKeyboard.setKeyboard(new MyKeyboard.KeyBoard(this, ViewXmls[0]));
myKeyboard.setOnKeyboardActionListener(this);
// myKeyboard.setPreviewEnabled(false);
return inputView;
}
@Override
public void onWindowShown() {
super.onWindowShown();
myKeyboard.updateConfigView(this);
myKeyboard.invalidate();
}
@Override
public void onPress(int primaryCode) {
}
@Override
public void onRelease(int primaryCode) {
}
@Override
public void onKey(int primaryCode, int[] keyCodes) {
switch (primaryCode) {
case MyKeyboard.KeyBoard.KEYCODE_SHIFT:
if (myKeyboard.getShiftType() == 0) {
changeView(3);
myKeyboard.setShiftType(1);
} else {
changeView(0);
myKeyboard.setShiftType(0);
}
break;
case MyKeyboard.KeyBoard.KEYCODE_MODE_CHANGE:
if (myKeyboard.getViewType() == 0) {
changeView(1);
} else {
changeView(0);
}
break;
case MyKeyboard.KeyBoard.KEYCODE_SHIFT_123:
changeView(1);
break;
case MyKeyboard.KeyBoard.KEYCODE_SHIFT_MORE:
changeView(2);
break;
case MyKeyboard.KeyBoard.KEYCODE_DELETE:
getCurrentInputConnection().deleteSurroundingText(1, 0);
break;
case MyKeyboard.KeyBoard.KEYCODE_DONE:
getCurrentInputConnection().performEditorAction(EditorInfo.IME_ACTION_DONE);
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myKeyboard.getWindowToken(), 0);
break;
default:
char value;
if (myKeyboard.getShiftType() == 1) {
value = Character.toUpperCase((char) primaryCode);
} else {
value = (char) primaryCode;
}
getCurrentInputConnection().commitText(String.valueOf(value), 1);
}
}
private void changeView(int i) {
myKeyboard.setViewType(i);
myKeyboard.setShiftType(i);
myKeyboard.setKeyboard(new MyKeyboard.KeyBoard(this, ViewXmls[i]));
}
@Override
public void onText(CharSequence text) {
}
@Override
public void swipeLeft() {
}
@Override
public void swipeRight() {
}
@Override
public void swipeDown() {
}
@Override
public void swipeUp() {
}
}

View File

@ -0,0 +1,144 @@
package com.key.simplekeyboard.keyboard;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.drawable.Drawable;
import android.inputmethodservice.Keyboard;
import android.inputmethodservice.KeyboardView;
import android.util.AttributeSet;
import com.key.simplekeyboard.tools.CustomViewConfig;
import com.key.simplekeyboard.tools.Mytools;
import com.key.simplekeyboard.tools.drawIcon;
import java.util.List;
public class MyKeyboard extends KeyboardView {
private Paint mPaint;
private int viewType = 0;
private int shiftType = 0;
private CustomViewConfig config;
public MyKeyboard(Context context, AttributeSet attrs) {
super(context, attrs);
initView();
}
public static class KeyBoard extends Keyboard {
public static final int KEYCODE_SHIFT_MORE = -360;
public static final int KEYCODE_SHIFT_123 = -361;
public KeyBoard(Context context, int layoutTemplateResId) {
super(context, layoutTemplateResId);
}
}
public int getShiftType() {
return shiftType;
}
public void setShiftType(int shiftType) {
this.shiftType = shiftType;
}
public void setViewType(int viewType) {
this.viewType = viewType;
}
public int getViewType() {
return viewType;
}
@Override
public void onDraw(Canvas canvas) {
KeyBoard keyboard = (KeyBoard) getKeyboard();
List<Keyboard.Key> keys = keyboard.getKeys();
for (int r = 0; r < keys.size(); r++) {
Keyboard.Key key = keys.get(r);
int code = key.codes[0];
mPaint.setColor(config.getKeyActioncolor());
if (code == KeyBoard.KEYCODE_MODE_CHANGE) {
onDrawKeyBackground(key, config.getBgActionDraw(), canvas);
onDrawLabel(key, canvas);
} else if (code == KeyBoard.KEYCODE_SHIFT) {
onDrawKeyBackground(key, config.getBgActionDraw(), canvas);
drawIcon.onDrawKeyIcon(key, getShiftDraw(), canvas, this);
} else if (code == KeyBoard.KEYCODE_SHIFT_123) {
onDrawKeyBackground(key, config.getBgActionDraw(), canvas);
onDrawLabel(key, canvas);
} else if (code == KeyBoard.KEYCODE_SHIFT_MORE) {
onDrawKeyBackground(key, config.getBgActionDraw(), canvas);
onDrawLabel(key, canvas);
} else if (code == KeyBoard.KEYCODE_DONE) {
onDrawKeyBackground(key, config.getBgActionDraw(), canvas);
onDrawLabel(key, canvas);
} else if (code == KeyBoard.KEYCODE_DELETE) {
onDrawKeyBackground(key, config.getBgActionDraw(), canvas);
drawIcon.onDrawKeyIcon(key, config.getIconDel(), canvas, this);
onDrawLabel(key, canvas);
} else {
mPaint.setColor(config.getKeyNoramlcolor());
onDrawKeyBackground(key, config.getBgNormalDraw(), canvas);
onDrawLabel(key, canvas);
}
}
}
private Drawable getShiftDraw() {
if (shiftType == 0) {
return config.getIconShift();
} else {
return config.getIconShiftLock();
}
}
private void initView() {
config = new CustomViewConfig();
mPaint = new Paint();
config.init();
float texsize = Mytools.spToPpx(20f, this.getContext());
mPaint.setTextSize(texsize);
}
public void updateConfigView(Context con) {
config.updateConfig(con);
setBackground(config.getBG());
invalidateAllKeys();
}
private void onDrawKeyBackground(Keyboard.Key myKey,
Drawable keyBG,
Canvas canvas) {
if (keyBG != null) {
int left = myKey.x + getPaddingLeft();
int top = myKey.y + getPaddingTop();
int right = left + myKey.width;
int bottom = top + myKey.height;
keyBG.setBounds(left, top, right, bottom);
keyBG.setState(myKey.getCurrentDrawableState());
keyBG.draw(canvas);
}
}
private void onDrawLabel(
Keyboard.Key myKey,
Canvas canvas) {
boolean b = myKey.label == null || myKey.label == "";
if (!b) {
float y1 = myKey.y + myKey.height / 2f - (mPaint.descent() + mPaint.ascent()) / 2f;
float x1 = myKey.x + getPaddingLeft() + ((myKey.width / 2f));
x1 -= mPaint.measureText(myKey.label.toString()) / 2f;
canvas.drawText(myKey.label.toString(), x1, y1, mPaint);
}
}
}

View File

@ -0,0 +1,181 @@
package com.key.simplekeyboard.tools;
import android.content.Context;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.StateListDrawable;
import android.util.Xml;
import androidx.core.content.ContextCompat;
import com.key.simplekeyboard.R;
import com.key.simplekeyboard.SimpleKeyboardSkins;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import java.io.File;
import java.io.IOException;
import java.io.StringReader;
import java.util.Objects;
public class CustomViewConfig {
private String Bg_action_normal = "btn_keyboard_key_functional_normal.9.png";
private String jpg_BG = "keyboard_background.jpg";
private String color_normal_key = "key_text_color_normal";
private String color_action_key = "key_text_color_functional";
private String Bg_pressed = "btn_keyboard_key_normal_pressed.9.png";
private String Bg_normal = "btn_keyboard_key_normal_normal.9.png";
private String path_drawxh = "/drawable-xhdpi-v4/";
private String path_drawxxh = "/drawable-xxhdpi-v4/";
private String path_color = "/colors.xml";
private String icon_del = "sym_keyboard_delete_normal.png";
private String icon_shift = "sym_keyboard_shift.png";
private String Bg_action_pressed = "btn_keyboard_key_functional_pressed.9.png";
private String icon_shift_lock = "sym_keyboard_shift_locked.png";
private String Bg_space_normal = "btn_keyboard_spacekey_normal_normal.9.png";
private String Bg_space_pressed = "btn_keyboard_spacekey_normal_pressed.9.png";
private Drawable BgActionDraw;
private Drawable BgSpaceDraw;
private Drawable BgNormalDraw;
private Drawable iconShift = ContextCompat.getDrawable(SimpleKeyboardSkins.app, R.drawable.ico_shift_lit);
private Drawable iconDel = ContextCompat.getDrawable(SimpleKeyboardSkins.app, R.drawable.icon_del);
private Drawable BG = ContextCompat.getDrawable(SimpleKeyboardSkins.app, R.color.black);
private int keyNoramlcolor = SimpleKeyboardSkins.app.getResources().getColor(R.color.white, null);
private int keyActioncolor = SimpleKeyboardSkins.app.getResources().getColor(R.color.white, null);
private Drawable iconShiftLock = ContextCompat.getDrawable(SimpleKeyboardSkins.app, R.drawable.ico_shift_lit);
public Drawable getBG() {
return BG;
}
public Drawable getBgActionDraw() {
return BgActionDraw;
}
public Drawable getBgNormalDraw() {
return BgNormalDraw;
}
public Drawable getBgSpaceDraw() {
return BgSpaceDraw;
}
public Drawable getIconDel() {
return iconDel;
}
public Drawable getIconShift() {
return iconShift;
}
public Drawable getIconShiftLock() {
return iconShiftLock;
}
public int getKeyNoramlcolor() {
return keyNoramlcolor;
}
public int getKeyActioncolor() {
return keyActioncolor;
}
public void init() {
iconShift = ContextCompat.getDrawable(SimpleKeyboardSkins.app, R.drawable.ico_shift_lit);
iconDel = ContextCompat.getDrawable(SimpleKeyboardSkins.app, R.drawable.icon_del);
BG = ContextCompat.getDrawable(SimpleKeyboardSkins.app, R.color.white);
keyNoramlcolor = SimpleKeyboardSkins.app.getResources().getColor(R.color.white, null);
iconShiftLock = ContextCompat.getDrawable(SimpleKeyboardSkins.app, R.drawable.ico_shift_lit);
Drawable drawable1 = ContextCompat.getDrawable(SimpleKeyboardSkins.app, R.drawable.de_keybg_press);
Drawable drawable = ContextCompat.getDrawable(SimpleKeyboardSkins.app, R.drawable.de_keybg);
StateListDrawable status = Mytools.getStatus(drawable, drawable1);
BgActionDraw = status;
BgNormalDraw = status;
BgSpaceDraw = status;
}
private Drawable getKeyBackGround(Context context, String resDirPath, String drawName) {
String filePath = resDirPath + path_drawxh + drawName;
File file = new File(filePath);
if (!file.exists()) {
return null;
}
BitmapDrawable bitmapDrawable = new BitmapDrawable(context.getResources(), BitmapFactory.decodeFile(filePath));
return bitmapDrawable;
}
private Drawable getBackGround(Context context, String resDirPath) {
String filePath = resDirPath + path_drawxxh + jpg_BG;
if (!new File(filePath).exists()) {
return null;
}
BitmapDrawable bitmapDrawable = new BitmapDrawable(context.getResources(), BitmapFactory.decodeFile(filePath));
return bitmapDrawable;
}
private void updateKeyColor(String resDirPath) {
String colorXmlPath = resDirPath + path_color;
File file = new File(colorXmlPath);
if (!file.exists()) {
return;
}
try {
XmlPullParser xmlPullParser = Xml.newPullParser();
String s = Mytools.fileToString(file);
xmlPullParser.setInput(new StringReader(s));
int eventT = xmlPullParser.getEventType();
while (eventT != XmlPullParser.END_DOCUMENT) {
if (eventT == XmlPullParser.START_TAG && (Objects.equals(xmlPullParser.getName(), "color") || Objects.equals(xmlPullParser.getName(), "item"))) {
String value = xmlPullParser.getAttributeValue(null, "name");
if (value.equals(color_normal_key)) {
keyNoramlcolor = Color.parseColor(xmlPullParser.nextText());
}
if (value.equals(color_action_key)) {
keyActioncolor = Color.parseColor(xmlPullParser.nextText());
}
}
eventT = xmlPullParser.next();
}
} catch (XmlPullParserException exception) {
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public void updateConfig(Context con) {
String resDirPath = StaticValue.PATH;
if (!resDirPath.isEmpty()) {
updateKeyColor(resDirPath);
BG = getBackGround(con, resDirPath);
BgNormalDraw = getKeyBackGround(con, resDirPath, Bg_normal);
BgActionDraw = getKeyBackGround(con, resDirPath, Bg_action_normal);
BgSpaceDraw = getKeyBackGround(con, resDirPath, Bg_space_normal);
iconDel = getKeyBackGround(con, resDirPath, icon_del);
iconShift = getKeyBackGround(con, resDirPath, icon_shift);
iconShiftLock = getKeyBackGround(con, resDirPath, icon_shift_lock);
} else {
return;
}
}
}

View File

@ -0,0 +1,242 @@
package com.key.simplekeyboard.tools;
import android.content.Context;
import android.content.res.AssetManager;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.StateListDrawable;
import android.os.Build;
import android.provider.Settings;
import android.util.TypedValue;
import android.view.inputmethod.InputMethodInfo;
import android.view.inputmethod.InputMethodManager;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.DataSource;
import com.bumptech.glide.load.engine.GlideException;
import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.Target;
import com.key.simplekeyboard.R;
import com.key.simplekeyboard.SimpleKeyboardSkins;
import com.key.simplekeyboard.callback.DownloadCallback;
import com.key.simplekeyboard.callback.UnzipCallback;
import com.key.simplekeyboard.data.Mydata;
import com.key.simplekeyboard.data.Otherdata;
import net.sf.sevenzipjbinding.ArchiveFormat;
import net.sf.sevenzipjbinding.IInArchive;
import net.sf.sevenzipjbinding.SevenZip;
import net.sf.sevenzipjbinding.impl.RandomAccessFileInStream;
import net.sf.sevenzipjbinding.impl.RandomAccessFileOutStream;
import net.sf.sevenzipjbinding.simple.ISimpleInArchiveItem;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.RandomAccessFile;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Mytools {
private static InputMethodManager methodManager = (InputMethodManager) SimpleKeyboardSkins.app.getSystemService(Context.INPUT_METHOD_SERVICE);
private static final String one_AD = "37dcb994d4988394";
private static final String two_Ad = "a77c5657a94cbb64";
private static final String three_ad = "b3a3acdefa7117ff";
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 StateListDrawable getStatus(Drawable draw, Drawable drawPress) {
StateListDrawable stateListDrawable = new StateListDrawable();
stateListDrawable.addState(new int[android.R.attr.state_pressed], draw);
stateListDrawable.addState(new int[0], drawPress);
return stateListDrawable;
}
public static float spToPpx(Float values, Context context) {
return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, values, context.getResources().getDisplayMetrics());
}
public static String fileToString(File file) throws IOException {
FileInputStream fileInputStream = new FileInputStream(file);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));
StringBuilder stringBuilder = new StringBuilder();
String lin = "";
while ((lin = bufferedReader.readLine()) != null) {
stringBuilder.append(lin);
}
bufferedReader.close();
String con = stringBuilder.toString();
return con;
}
public static void unZip(Context context, String urlpath, File resource, UnzipCallback callback) throws IOException {
if (!resource.exists()) {
Toast.makeText(context, context.getString(R.string.text_download_failed), Toast.LENGTH_SHORT).show();
} else {
String itemFilePath = "";
RandomAccessFile accessFile = new RandomAccessFile(resource, "r");
RandomAccessFileInStream inStream = new RandomAccessFileInStream(accessFile);
IInArchive iInArchive = SevenZip.openInArchive(ArchiveFormat.SEVEN_ZIP, inStream);
ISimpleInArchiveItem[] archiveItems = iInArchive.getSimpleInterface().getArchiveItems();
for (int d = 0; d < archiveItems.length; d++) {
ISimpleInArchiveItem simple = archiveItems[d];
File file = new File(urlpath, simple.getPath());
if (!simple.isFolder()) {
RandomAccessFileOutStream outStream = new RandomAccessFileOutStream(new RandomAccessFile(file, "rw"));
simple.extractSlow(outStream);
itemFilePath = file.getPath();
} else {
boolean mkdirs = file.mkdirs();
}
}
inStream.close();
iInArchive.close();
int res = itemFilePath.indexOf("res");
String substring = itemFilePath.substring(0, res + 3);
callback.onUnzipCall(true, substring);
}
}
public static void donwnZip(Context context, String url, DownloadCallback callback) {
Glide.with(context)
.asFile()
.load(url)
.listener(new RequestListener<File>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, @Nullable Object model, @NonNull Target<File> target, boolean isFirstResource) {
try {
callback.onDownloadCall(false, null);
} catch (FileNotFoundException ex) {
throw new RuntimeException(ex);
} catch (IOException ex) {
throw new RuntimeException(ex);
}
return false;
}
@Override
public boolean onResourceReady(@NonNull File resource, @NonNull Object model, Target<File> target, @NonNull DataSource dataSource, boolean isFirstResource) {
try {
callback.onDownloadCall(true, resource);
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
return false;
}
}).preload();
}
public static boolean isStep2() {
String string = Settings.Secure.getString(SimpleKeyboardSkins.app.getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD);
return string.startsWith(SimpleKeyboardSkins.app.getPackageName());
}
public static boolean isStep1() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
return methodManager.getEnabledInputMethodList().stream()
.anyMatch(inputMethodInfo -> inputMethodInfo.getId().startsWith(SimpleKeyboardSkins.app.getPackageName()));
} else {
InputMethodManager inputMethodManager = (InputMethodManager) SimpleKeyboardSkins.app.getSystemService(Context.INPUT_METHOD_SERVICE);
List<InputMethodInfo> inputMethodList = inputMethodManager.getEnabledInputMethodList();
if (inputMethodList != null) {
for (InputMethodInfo inputMethodInfo : inputMethodList) {
if (inputMethodInfo.getId().startsWith(SimpleKeyboardSkins.app.getPackageName())) {
return true;
}
}
}
return false;
}
}
public static int dp2Px(int dp) {
float scale = SimpleKeyboardSkins.getContext().getResources().getDisplayMetrics().density;
return (int) (dp * scale + 0.5f);
}
private static JSONArray loadJSONFromAsset(String filename) {
String json;
try {
AssetManager assetManager = SimpleKeyboardSkins.getContext().getAssets();
InputStream inputStream = assetManager.open(filename);
int size = inputStream.available();
byte[] buffer = new byte[size];
inputStream.read(buffer);
inputStream.close();
json = new String(buffer, StandardCharsets.UTF_8);
return new JSONArray(json);
} catch (IOException | JSONException e) {
e.printStackTrace();
return null;
}
}
public static List<Mydata> parseJsonToList(String filename) {
List<Mydata> dataList = new ArrayList<>();
try {
JSONArray jsonObject = loadJSONFromAsset(filename);
for (int a = 0; a < jsonObject.length(); a++) {
JSONObject list = jsonObject.getJSONObject(a);
Mydata myData = new Mydata();
List<Otherdata> otherdataList = new ArrayList<>();
myData.setName(list.getString("className"));
JSONArray classArray = list.getJSONArray("list");
for (int i = 0; i < classArray.length(); i++) {
JSONObject item = classArray.getJSONObject(i);
Otherdata otherdata = new Otherdata();
otherdata.setIslike(false);
otherdata.setClassName(myData.getName());
otherdata.setPreview(item.getString("preview"));
otherdata.setThumb(item.getString("thumb"));
otherdata.setTitle(item.getString("title"));
otherdata.setZipUrl(item.getString("zipUrl"));
otherdataList.add(otherdata);
}
myData.setList(otherdataList);
dataList.add(myData);
}
} catch (JSONException e) {
e.printStackTrace();
}
return dataList;
}
}

View File

@ -0,0 +1,56 @@
package com.key.simplekeyboard.tools;
import android.graphics.Rect;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
public class SpaceItem extends RecyclerView.ItemDecoration {
private int ex_space = 0;
private int v_space = 0;
private int h_space = 0;
@Override
public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
int position = parent.getChildAdapterPosition(view);
int spanSize = 1;
int spanIndex = 0;
int spanCount = 1;
RecyclerView.LayoutManager layoutManager = parent.getLayoutManager();
if (layoutManager instanceof GridLayoutManager) {
GridLayoutManager layoutManager1 = (GridLayoutManager) layoutManager;
GridLayoutManager.LayoutParams layoutParams = (GridLayoutManager.LayoutParams) view.getLayoutParams();
spanCount = layoutManager1.getSpanCount();
spanSize = layoutManager1.getSpanSizeLookup().getSpanSize(position);
spanIndex = layoutParams.getSpanIndex();
}
if (spanSize == spanCount) {
outRect.left = v_space + ex_space;
outRect.right = v_space + ex_space;
outRect.bottom = h_space;
} else {
int itemAllSpacing = (v_space * (spanCount + 1) + ex_space * 2) / spanCount;
int left = v_space * (spanIndex + 1) - itemAllSpacing * spanIndex + ex_space;
int right = itemAllSpacing - left;
outRect.left = left;
outRect.right = right;
outRect.bottom = h_space;
}
}
public SpaceItem(int v_space, int h_space, int ex_space) {
this.ex_space = ex_space;
this.h_space = h_space;
this.v_space = v_space;
}
}

View File

@ -0,0 +1,8 @@
package com.key.simplekeyboard.tools;
public class StaticValue {
public static String KEY_NAME = "key_name";
public static String KEY_URL = "key_url";
public static String KEY_PRE = "key_pre";
public static String PATH = "";
}

View File

@ -0,0 +1,48 @@
package com.key.simplekeyboard.tools;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.inputmethodservice.Keyboard;
import com.key.simplekeyboard.keyboard.MyKeyboard;
public class drawIcon {
public static void onDrawKeyIcon(Keyboard.Key currentKey,
Drawable drawKeyIcon,
Canvas myCanvas,
MyKeyboard myKeyboardView) {
currentKey.icon = drawKeyIcon;
currentKey.icon.setBounds(calculateIconBounds(currentKey, drawKeyIcon, myKeyboardView));
currentKey.icon.draw(myCanvas);
}
private static Rect calculateIconBounds(Keyboard.Key currentKey,
Drawable drawKeyIcon,
MyKeyboard myKeyboardView) {
float icon_w = drawKeyIcon.getIntrinsicWidth();
float icon_h = drawKeyIcon.getIntrinsicHeight();
float icon_wr = icon_w / currentKey.width;
float icon_hr = icon_h / currentKey.height;
float tep1, tep2;
if (icon_wr > icon_hr) {
tep2 = icon_wr;
tep1 = Math.max(icon_wr, 0.5f);
} else {
tep2 = icon_hr;
tep1 = Math.max(icon_hr, 0.5f);
}
icon_h = (icon_h / tep2) * tep1;
icon_w = (icon_w / tep2) * tep1;
int top = (int) (currentKey.y + myKeyboardView.getPaddingTop() + (currentKey.height - icon_h) / 2);
int left = (int) (currentKey.x + myKeyboardView.getPaddingLeft() + (currentKey.width - icon_w) / 2);
int bottom = top + (int) icon_h;
int right = left + (int) icon_w;
return new Rect(left, top, right, bottom);
}
}

View File

@ -0,0 +1,31 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="12dp"
android:height="13dp"
android:viewportWidth="12"
android:viewportHeight="13">
<group>
<clip-path
android:pathData="M0,0.5h12v12h-12z"/>
<path
android:strokeWidth="1"
android:pathData="M5,10.5C5,10.367 5.053,10.24 5.146,10.146C5.24,10.053 5.367,10 5.5,10H6.5C6.633,10 6.76,10.053 6.854,10.146C6.947,10.24 7,10.367 7,10.5V11C7,11.133 6.947,11.26 6.854,11.354C6.76,11.447 6.633,11.5 6.5,11.5H5.5C5.367,11.5 5.24,11.447 5.146,11.354C5.053,11.26 5,11.133 5,11V10.5Z"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M6,8.5C7.657,8.5 9,6.157 9,4.5C9,3.704 8.684,2.941 8.121,2.379C7.559,1.816 6.796,1.5 6,1.5C5.204,1.5 4.441,1.816 3.879,2.379C3.316,2.941 3,3.704 3,4.5C3,6.157 4.343,8.5 6,8.5Z"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M5,5C5,5.928 5.105,6.819 5.293,7.475C5.48,8.131 5.735,8.5 6,8.5C6.265,8.5 6.52,8.131 6.707,7.475C6.895,6.819 7,5.928 7,5C7,4.072 6.895,3.181 6.707,2.525C6.52,1.869 6.265,1.5 6,1.5C5.735,1.5 5.48,1.869 5.293,2.525C5.105,3.181 5,4.072 5,5Z"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
</group>
</vector>

View File

@ -0,0 +1,129 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="12dp"
android:height="13dp"
android:viewportWidth="12"
android:viewportHeight="13">
<group>
<clip-path
android:pathData="M0,0.5h12v12h-12z"/>
<path
android:strokeWidth="1"
android:pathData="M4,5C4,4.867 4.053,4.74 4.146,4.646C4.24,4.553 4.367,4.5 4.5,4.5H7.5C7.633,4.5 7.76,4.553 7.854,4.646C7.947,4.74 8,4.867 8,5V8C8,8.133 7.947,8.26 7.854,8.354C7.76,8.447 7.633,8.5 7.5,8.5H4.5C4.367,8.5 4.24,8.447 4.146,8.354C4.053,8.26 4,8.133 4,8V5Z"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M6,10.5V10.505"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M8,10.5V10.505"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M4,10.5V10.505"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M2,10.5V10.505"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M2,8.5V8.505"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M2,6.5V6.505"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M2,4.5V4.505"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M2,2.5V2.505"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M4,2.5V2.505"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M6,2.5V2.505"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M8,2.5V2.505"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M10,2.5V2.505"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M10,4.5V4.505"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M10,6.5V6.505"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M10,8.5V8.505"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M10,10.5V10.505"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
</group>
</vector>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/all_tab_check" android:state_selected="true" />
<item android:drawable="@drawable/all_tab_uncheck" android:state_selected="false" />
</selector>

View File

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

View File

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

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:color="@color/white" />
<item android:color="@color/black" />
</selector>

View File

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

View File

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

View File

@ -0,0 +1,31 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="12dp"
android:height="12dp"
android:viewportWidth="12"
android:viewportHeight="12">
<group>
<clip-path
android:pathData="M0,0h12v12h-12z"/>
<path
android:strokeWidth="1"
android:pathData="M1.5,6C1.5,6.591 1.616,7.176 1.843,7.722C2.069,8.268 2.4,8.764 2.818,9.182C3.236,9.6 3.732,9.931 4.278,10.158C4.824,10.384 5.409,10.5 6,10.5C6.591,10.5 7.176,10.384 7.722,10.158C8.268,9.931 8.764,9.6 9.182,9.182C9.6,8.764 9.931,8.268 10.158,7.722C10.384,7.176 10.5,6.591 10.5,6C10.5,5.409 10.384,4.824 10.158,4.278C9.931,3.732 9.6,3.236 9.182,2.818C8.764,2.4 8.268,2.069 7.722,1.843C7.176,1.616 6.591,1.5 6,1.5C5.409,1.5 4.824,1.616 4.278,1.843C3.732,2.069 3.236,2.4 2.818,2.818C2.4,3.236 2.069,3.732 1.843,4.278C1.616,4.824 1.5,5.409 1.5,6Z"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M6,3.5L8.38,5.225L7.5,8H4.5L3.62,5.225L6,3.5Z"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M6,3.5V1.5M7.5,8L8.75,9.5M8.38,5.225L10.25,4.5M4.53,8.025L3.25,9.5M3.62,5.225L1.75,4.5"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
</group>
</vector>

View File

@ -0,0 +1,31 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="12dp"
android:height="12dp"
android:viewportWidth="12"
android:viewportHeight="12">
<group>
<clip-path
android:pathData="M0,0h12v12h-12z"/>
<path
android:strokeWidth="1"
android:pathData="M5,10C5,9.867 5.053,9.74 5.146,9.646C5.24,9.553 5.367,9.5 5.5,9.5H6.5C6.633,9.5 6.76,9.553 6.854,9.646C6.947,9.74 7,9.867 7,10V10.5C7,10.633 6.947,10.76 6.854,10.854C6.76,10.947 6.633,11 6.5,11H5.5C5.367,11 5.24,10.947 5.146,10.854C5.053,10.76 5,10.633 5,10.5V10Z"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M6,8C7.657,8 9,5.657 9,4C9,3.204 8.684,2.441 8.121,1.879C7.559,1.316 6.796,1 6,1C5.204,1 4.441,1.316 3.879,1.879C3.316,2.441 3,3.204 3,4C3,5.657 4.343,8 6,8Z"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M5,4.5C5,5.428 5.105,6.319 5.293,6.975C5.48,7.631 5.735,8 6,8C6.265,8 6.52,7.631 6.707,6.975C6.895,6.319 7,5.428 7,4.5C7,3.572 6.895,2.681 6.707,2.025C6.52,1.369 6.265,1 6,1C5.735,1 5.48,1.369 5.293,2.025C5.105,2.681 5,3.572 5,4.5Z"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
</group>
</vector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

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

View File

@ -0,0 +1,52 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="12dp"
android:height="12dp"
android:viewportWidth="12"
android:viewportHeight="12">
<group>
<clip-path
android:pathData="M0,0h12v12h-12z"/>
<path
android:strokeWidth="1"
android:pathData="M1.5,7.5C1.5,8.296 1.816,9.059 2.379,9.621C2.941,10.184 3.704,10.5 4.5,10.5C5.296,10.5 6.059,10.184 6.621,9.621C7.184,9.059 7.5,8.296 7.5,7.5C7.5,6.704 7.184,5.941 6.621,5.379C6.059,4.816 5.296,4.5 4.5,4.5C3.704,4.5 2.941,4.816 2.379,5.379C1.816,5.941 1.5,6.704 1.5,7.5Z"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M3.5,7.5C3.5,7.765 3.605,8.02 3.793,8.207C3.98,8.395 4.235,8.5 4.5,8.5C4.765,8.5 5.02,8.395 5.207,8.207C5.395,8.02 5.5,7.765 5.5,7.5C5.5,7.235 5.395,6.98 5.207,6.793C5.02,6.605 4.765,6.5 4.5,6.5C4.235,6.5 3.98,6.605 3.793,6.793C3.605,6.98 3.5,7.235 3.5,7.5Z"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M8.5,2.5C8.5,2.765 8.605,3.02 8.793,3.207C8.98,3.395 9.235,3.5 9.5,3.5C9.765,3.5 10.02,3.395 10.207,3.207C10.395,3.02 10.5,2.765 10.5,2.5C10.5,2.235 10.395,1.98 10.207,1.793C10.02,1.605 9.765,1.5 9.5,1.5C9.235,1.5 8.98,1.605 8.793,1.793C8.605,1.98 8.5,2.235 8.5,2.5Z"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M7.109,8.987L10.418,2.9"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M3.039,4.878L9.148,1.563"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M3.5,7.5C3.5,7.765 3.605,8.02 3.793,8.207C3.98,8.395 4.235,8.5 4.5,8.5C4.765,8.5 5.02,8.395 5.207,8.207C5.395,8.02 5.5,7.765 5.5,7.5C5.5,7.235 5.395,6.98 5.207,6.793C5.02,6.605 4.765,6.5 4.5,6.5C4.235,6.5 3.98,6.605 3.793,6.793C3.605,6.98 3.5,7.235 3.5,7.5Z"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
</group>
</vector>

View File

@ -0,0 +1,45 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="12dp"
android:height="12dp"
android:viewportWidth="12"
android:viewportHeight="12">
<group>
<clip-path
android:pathData="M0,0h12v12h-12z"/>
<path
android:strokeWidth="1"
android:pathData="M5,6C5,6.265 5.105,6.52 5.293,6.707C5.48,6.895 5.735,7 6,7C6.265,7 6.52,6.895 6.707,6.707C6.895,6.52 7,6.265 7,6C7,5.735 6.895,5.48 6.707,5.293C6.52,5.105 6.265,5 6,5C5.735,5 5.48,5.105 5.293,5.293C5.105,5.48 5,5.735 5,6Z"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M7.5,7.5H7.75C9.269,7.5 10.5,6.828 10.5,6C10.5,5.172 9.269,4.5 7.75,4.5C6.832,4.5 6.019,4.745 5.52,5.122"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M4.5,4.5H4.25C2.731,4.5 1.5,5.172 1.5,6C1.5,6.828 2.731,7.5 4.25,7.5C5.172,7.5 5.988,7.253 6.487,6.872"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M7.5,4.5V4.25C7.5,2.731 6.828,1.5 6,1.5C5.172,1.5 4.5,2.731 4.5,4.25C4.5,5.167 4.745,5.978 5.121,6.478"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M4.5,7.5V7.75C4.5,9.269 5.172,10.5 6,10.5C6.828,10.5 7.5,9.269 7.5,7.75C7.5,6.829 7.253,6.014 6.874,5.515"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
</group>
</vector>

View File

@ -0,0 +1,24 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<group>
<clip-path
android:pathData="M0,0h24v24h-24z"/>
<path
android:pathData="M19,8.71L13.667,4.562C13.199,4.198 12.623,4 12.03,4C11.437,4 10.861,4.198 10.393,4.562L5.059,8.71C4.738,8.959 4.479,9.278 4.301,9.643C4.122,10.008 4.03,10.409 4.03,10.815V18.015C4.03,18.545 4.241,19.054 4.616,19.429C4.991,19.804 5.5,20.015 6.03,20.015H18.03C18.56,20.015 19.069,19.804 19.444,19.429C19.819,19.054 20.03,18.545 20.03,18.015V10.815C20.03,9.992 19.65,9.215 19,8.71Z"
android:strokeLineJoin="round"
android:strokeWidth="1.77"
android:fillColor="#ffffff"
android:strokeColor="#ffffff"
android:strokeLineCap="round"/>
<path
android:pathData="M16,15C13.79,16.333 10.208,16.333 8,15"
android:strokeLineJoin="round"
android:strokeWidth="1.77"
android:fillColor="#00000000"
android:strokeColor="#6C31D2"
android:strokeLineCap="round"/>
</group>
</vector>

View File

@ -0,0 +1,24 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<group>
<clip-path
android:pathData="M0,0h24v24h-24z"/>
<path
android:pathData="M19,8.71L13.667,4.562C13.199,4.198 12.623,4 12.03,4C11.437,4 10.861,4.198 10.393,4.562L5.059,8.71C4.738,8.959 4.479,9.278 4.301,9.643C4.122,10.008 4.03,10.409 4.03,10.815V18.015C4.03,18.545 4.241,19.054 4.616,19.429C4.991,19.804 5.5,20.015 6.03,20.015H18.03C18.56,20.015 19.069,19.804 19.444,19.429C19.819,19.054 20.03,18.545 20.03,18.015V10.815C20.03,9.992 19.65,9.215 19,8.71Z"
android:strokeLineJoin="round"
android:strokeWidth="1.77"
android:fillColor="#00000000"
android:strokeColor="#6C31D2"
android:strokeLineCap="round"/>
<path
android:pathData="M16,15C13.79,16.333 10.208,16.333 8,15"
android:strokeLineJoin="round"
android:strokeWidth="1.77"
android:fillColor="#00000000"
android:strokeColor="#6C31D2"
android:strokeLineCap="round"/>
</group>
</vector>

View File

@ -0,0 +1,170 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillColor="#3DDC84"
android:pathData="M0,0h108v108h-108z" />
<path
android:fillColor="#00000000"
android:pathData="M9,0L9,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,0L19,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,0L29,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,0L39,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,0L49,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,0L59,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,0L69,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,0L79,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M89,0L89,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M99,0L99,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,9L108,9"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,19L108,19"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,29L108,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,39L108,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,49L108,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,59L108,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,69L108,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,79L108,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,89L108,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,99L108,99"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,29L89,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,39L89,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,49L89,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,59L89,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,69L89,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,79L89,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,19L29,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,19L39,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,19L49,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,19L59,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,19L69,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,19L79,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
</vector>

View File

@ -0,0 +1,30 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="85.84757"
android:endY="92.4963"
android:startX="42.9492"
android:startY="49.59793"
android:type="linear">
<item
android:color="#44000000"
android:offset="0.0" />
<item
android:color="#00000000"
android:offset="1.0" />
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FFFFFF"
android:fillType="nonZero"
android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
android:strokeWidth="1"
android:strokeColor="#00000000" />
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="32dp"
android:height="32dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M459.7,155.7l-5.5,4.1 -2.4,2 -3.8,3.5 -2.2,2.2 -3.5,3.8 -258.1,305.9 -4.2,5.4c-28.1,40.2 -20.7,93.3 16,123.6l5.9,4.4 3,2 4.9,2.9 5.6,2.8c13,6.1 26.2,8.9 39.5,8.9l58.6,-0 0,142.6 0.2,6.1c4,48.9 44,85.3 91.9,85.3h212.4l6.1,-0.2 2.7,-0.2 4.8,-0.6 4.7,-0.9c43.4,-9.4 73.7,-46.3 73.7,-89.5l-0,-142.6h58.8l6.1,-0.2c35.6,-2.9 65.4,-24.3 78.7,-55.7a90.9,90.9 0,0 0,-14.2 -94.1L582.4,172.4l-4.6,-5 -1.1,-1.1a92.6,92.6 0,0 0,-117.1 -10.6zM525.3,213.9l2.1,1.8 2.7,2.9 255.9,303.5a21,21 0,0 1,3.4 21.9,22.2 22.2,0 0,1 -18.7,13.3l-3.3,0.1 -127.1,-0v212.4l-0.2,2.6a21.9,21.9 0,0 1,-18.3 18.7l-1.5,0.2 -3.7,0.2L405.6,791.3a22,22 0,0 1,-22.2 -19.9l-0.1,-3.2v-210.9h-128.5l-2.8,-0.2a22.8,22.8 0,0 1,-8 -2.5l-1.7,-1 -3.3,-2.4c-7.4,-6.1 -9.1,-18.4 -2.7,-27.5l2.2,-2.9L494.6,217.4l1.4,-1.5 1.5,-1.3 2.9,-2.2c6.8,-4.6 17.3,-4.1 24.9,1.5z"
android:fillColor="#FFFFFF"/>
</vector>

View File

@ -0,0 +1,31 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<group>
<clip-path
android:pathData="M24,0l-24,0l-0,24l24,0z"/>
<path
android:pathData="M5,12L19,12"
android:strokeLineJoin="round"
android:strokeWidth="2"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M5,12L11,6"
android:strokeLineJoin="round"
android:strokeWidth="2"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M5,12L11,18"
android:strokeLineJoin="round"
android:strokeWidth="2"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
</group>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="25dp"
android:height="24dp"
android:viewportWidth="25"
android:viewportHeight="24">
<path
android:pathData="M19.518,5.997C19.262,5.997 18.995,6.081 18.8,6.273L10.093,14.867C9.836,15.12 9.578,15.073 9.376,14.775L6.38,10.355C6.074,9.904 5.434,9.778 4.975,10.079C4.517,10.38 4.389,11.009 4.695,11.46L7.69,15.88C8.592,17.209 10.349,17.378 11.498,16.248L20.236,7.685C20.625,7.301 20.625,6.657 20.236,6.273C20.041,6.081 19.773,5.997 19.518,5.997Z"
android:fillColor="#ffffff"/>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="32dp"
android:height="32dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:fillColor="#FFFFFFFF"
android:pathData="M830.3,170.3H437.6A178.3,178.3 0,0 0,310.7 223L58.2,475.3a61.5,61.5 0,0 0,0 86.9l252.3,252.3a178.3,178.3 0,0 0,127.1 52.7h392.7A152.9,152.9 0,0 0,983 714.5V323a152.9,152.9 0,0 0,-152.7 -152.7zM760.2,628.8a25.6,25.6 0,0 1,-36.1 36.1L614.1,554.8 504,664.9a25.6,25.6 0,1 1,-36.1 -36.1L578,518.7 467.9,408.5A25.6,25.6 0,1 1,504 372.4l110.1,110.3L724.1,372.4a25.6,25.6 0,0 1,36.1 0,25.6 25.6,0 0,1 0,36.3L650.1,518.7z"/>
</vector>

View File

@ -0,0 +1,31 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="21dp"
android:height="20dp"
android:viewportWidth="21"
android:viewportHeight="20">
<group>
<clip-path
android:pathData="M0.5,0h20v20h-20z"/>
<path
android:pathData="M10.5,2.5V12.5"
android:strokeLineJoin="round"
android:strokeWidth="1.66667"
android:fillColor="#00000000"
android:strokeColor="#ffffff"
android:strokeLineCap="round"/>
<path
android:pathData="M13.833,9.167L10.5,12.5L7.167,9.167"
android:strokeLineJoin="round"
android:strokeWidth="1.66667"
android:fillColor="#00000000"
android:strokeColor="#ffffff"
android:strokeLineCap="round"/>
<path
android:pathData="M3,10C3,11.989 3.79,13.897 5.197,15.303C6.603,16.71 8.511,17.5 10.5,17.5C12.489,17.5 14.397,16.71 15.803,15.303C17.21,13.897 18,11.989 18,10"
android:strokeLineJoin="round"
android:strokeWidth="1.66667"
android:fillColor="#00000000"
android:strokeColor="#ffffff"
android:strokeLineCap="round"/>
</group>
</vector>

View File

@ -0,0 +1,80 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="21dp"
android:height="20dp"
android:viewportWidth="21"
android:viewportHeight="20">
<path
android:pathData="M5.141,13.817L7.672,10.443C7.766,10.317 7.886,10.213 8.024,10.138C8.162,10.063 8.314,10.018 8.471,10.007C8.628,9.995 8.785,10.018 8.932,10.073C9.08,10.128 9.213,10.214 9.324,10.325L10.075,11.076L12.487,7.859C12.589,7.723 12.722,7.613 12.874,7.537C13.026,7.461 13.194,7.421 13.364,7.421C13.535,7.421 13.703,7.461 13.855,7.537C14.007,7.613 14.139,7.723 14.242,7.859L18.052,13.817"
android:strokeLineJoin="round"
android:strokeWidth="1.08108"
android:fillColor="#00000000"
android:strokeColor="#342121"
android:strokeLineCap="round"/>
<path
android:pathData="M6.512,7.812C7.269,7.812 7.882,7.199 7.882,6.442C7.882,5.685 7.269,5.071 6.512,5.071C5.755,5.071 5.141,5.685 5.141,6.442C5.141,7.199 5.755,7.812 6.512,7.812Z"
android:strokeLineJoin="round"
android:strokeWidth="1.08108"
android:fillColor="#00000000"
android:strokeColor="#342121"
android:strokeLineCap="round"/>
<path
android:pathData="M20.058,18.699L19.304,18.509"
android:strokeWidth="1.08108"
android:fillColor="#00000000"
android:strokeColor="#342121"
android:strokeLineCap="round"/>
<path
android:pathData="M17.527,18.042C17.236,17.968 16.944,17.9 16.653,17.836"
android:strokeWidth="1.08108"
android:fillColor="#00000000"
android:strokeColor="#342121"
android:strokeLineCap="round"/>
<path
android:pathData="M6.103,17.49C9.033,16.996 11.971,16.996 14.901,17.49"
android:strokeWidth="1.08108"
android:fillColor="#00000000"
android:strokeColor="#342121"
android:strokeLineCap="round"/>
<path
android:pathData="M3.451,18.052C3.742,17.979 4.033,17.911 4.325,17.847"
android:strokeWidth="1.08108"
android:fillColor="#00000000"
android:strokeColor="#342121"
android:strokeLineCap="round"/>
<path
android:pathData="M0.942,18.7L1.697,18.51"
android:strokeWidth="1.08108"
android:fillColor="#00000000"
android:strokeColor="#342121"
android:strokeLineCap="round"/>
<path
android:pathData="M20.058,1.301L19.304,1.491"
android:strokeWidth="1.08108"
android:fillColor="#00000000"
android:strokeColor="#342121"
android:strokeLineCap="round"/>
<path
android:pathData="M17.527,1.959C17.236,2.032 16.944,2.1 16.653,2.164"
android:strokeWidth="1.08108"
android:fillColor="#00000000"
android:strokeColor="#342121"
android:strokeLineCap="round"/>
<path
android:pathData="M6.103,2.51C9.033,3.005 11.971,3.005 14.901,2.51"
android:strokeWidth="1.08108"
android:fillColor="#00000000"
android:strokeColor="#342121"
android:strokeLineCap="round"/>
<path
android:pathData="M3.451,1.948C3.742,2.021 4.033,2.089 4.325,2.153"
android:strokeWidth="1.08108"
android:fillColor="#00000000"
android:strokeColor="#342121"
android:strokeLineCap="round"/>
<path
android:pathData="M0.942,1.3L1.697,1.49"
android:strokeWidth="1.08108"
android:fillColor="#00000000"
android:strokeColor="#342121"
android:strokeLineCap="round"/>
</vector>

View File

@ -0,0 +1,13 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<group>
<clip-path
android:pathData="M0,0h24v24h-24z"/>
<path
android:pathData="M6.979,3.074C7.864,2.923 8.772,2.973 9.635,3.22C10.498,3.466 11.295,3.903 11.967,4.499L12.004,4.532L12.038,4.502C12.679,3.939 13.433,3.52 14.249,3.271C15.065,3.023 15.925,2.952 16.771,3.062L17.017,3.098C18.083,3.282 19.08,3.751 19.902,4.455C20.723,5.16 21.339,6.073 21.684,7.099C22.028,8.125 22.089,9.224 21.86,10.282C21.631,11.339 21.12,12.315 20.381,13.106L20.201,13.291L20.153,13.332L12.703,20.711C12.531,20.881 12.303,20.983 12.062,20.998C11.821,21.013 11.582,20.941 11.39,20.793L11.296,20.711L3.803,13.289C3.009,12.517 2.445,11.54 2.172,10.466C1.899,9.393 1.929,8.265 2.258,7.207C2.587,6.15 3.202,5.204 4.035,4.474C4.868,3.745 5.887,3.26 6.979,3.074Z"
android:fillColor="#FF4471"/>
</group>
</vector>

View File

@ -0,0 +1,14 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<group>
<clip-path
android:pathData="M0,0h24v24h-24z"/>
<path
android:pathData="M6.979,3.074C7.864,2.923 8.772,2.973 9.635,3.22C10.498,3.466 11.295,3.903 11.967,4.499L12.004,4.532L12.038,4.502C12.679,3.939 13.433,3.52 14.249,3.271C15.065,3.023 15.925,2.952 16.771,3.062L17.017,3.098C18.083,3.282 19.08,3.751 19.902,4.455C20.723,5.16 21.339,6.073 21.684,7.099C22.028,8.125 22.089,9.224 21.86,10.282C21.631,11.339 21.12,12.315 20.381,13.106L20.201,13.291L20.153,13.332L12.703,20.711C12.531,20.881 12.303,20.983 12.062,20.998C11.821,21.013 11.582,20.941 11.39,20.793L11.296,20.711L3.803,13.289C3.009,12.517 2.445,11.54 2.172,10.466C1.899,9.393 1.929,8.265 2.258,7.207C2.587,6.15 3.202,5.204 4.035,4.474C4.868,3.745 5.887,3.26 6.979,3.074Z"
android:fillColor="#3E05A1"
android:fillAlpha="0.1"/>
</group>
</vector>

View File

@ -0,0 +1,24 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<group>
<clip-path
android:pathData="M0,0h24v24h-24z"/>
<path
android:pathData="M3,10C3,10.919 3.181,11.83 3.533,12.679C3.885,13.528 4.4,14.3 5.05,14.95C5.7,15.6 6.472,16.115 7.321,16.467C8.17,16.819 9.081,17 10,17C10.919,17 11.83,16.819 12.679,16.467C13.528,16.115 14.3,15.6 14.95,14.95C15.6,14.3 16.115,13.528 16.467,12.679C16.819,11.83 17,10.919 17,10C17,9.081 16.819,8.17 16.467,7.321C16.115,6.472 15.6,5.7 14.95,5.05C14.3,4.4 13.528,3.885 12.679,3.533C11.83,3.181 10.919,3 10,3C9.081,3 8.17,3.181 7.321,3.533C6.472,3.885 5.7,4.4 5.05,5.05C4.4,5.7 3.885,6.472 3.533,7.321C3.181,8.17 3,9.081 3,10Z"
android:strokeLineJoin="round"
android:strokeWidth="2"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M21,21L15,15"
android:strokeLineJoin="round"
android:strokeWidth="2"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
</group>
</vector>

View File

@ -0,0 +1,31 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="20dp"
android:height="20dp"
android:viewportWidth="20"
android:viewportHeight="20">
<group>
<clip-path
android:pathData="M0,0h20v20h-20z"/>
<path
android:pathData="M9.538,17.427C9.306,17.354 9.097,17.22 8.934,17.04C8.77,16.86 8.656,16.64 8.604,16.403C8.551,16.183 8.446,15.979 8.299,15.807C8.152,15.635 7.967,15.5 7.758,15.413C7.549,15.327 7.322,15.291 7.097,15.308C6.871,15.326 6.653,15.396 6.46,15.514C5.174,16.298 3.702,14.826 4.485,13.539C4.603,13.346 4.673,13.128 4.69,12.903C4.708,12.677 4.672,12.451 4.585,12.242C4.499,12.033 4.364,11.848 4.193,11.701C4.021,11.554 3.817,11.449 3.598,11.396C2.134,11.041 2.134,8.959 3.598,8.604C3.817,8.551 4.021,8.446 4.193,8.299C4.365,8.152 4.5,7.967 4.586,7.758C4.673,7.549 4.709,7.322 4.692,7.097C4.674,6.871 4.604,6.653 4.486,6.46C3.703,5.174 5.174,3.702 6.461,4.485C7.294,4.992 8.374,4.543 8.604,3.598C8.959,2.134 11.041,2.134 11.396,3.598C11.449,3.817 11.554,4.021 11.701,4.193C11.848,4.365 12.033,4.5 12.242,4.586C12.451,4.673 12.678,4.709 12.903,4.692C13.129,4.674 13.347,4.604 13.54,4.486C14.826,3.703 16.298,5.174 15.515,6.461C15.397,6.654 15.327,6.872 15.31,7.097C15.292,7.323 15.328,7.549 15.415,7.758C15.501,7.967 15.636,8.152 15.807,8.299C15.979,8.446 16.183,8.551 16.403,8.604C17.494,8.869 17.772,10.096 17.233,10.849"
android:strokeLineJoin="round"
android:strokeWidth="1.5"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M12.5,15.833L14.167,17.5L17.5,14.167"
android:strokeLineJoin="round"
android:strokeWidth="1.5"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M7.5,10C7.5,10.663 7.763,11.299 8.232,11.768C8.701,12.237 9.337,12.5 10,12.5C10.663,12.5 11.299,12.237 11.768,11.768C12.237,11.299 12.5,10.663 12.5,10C12.5,9.337 12.237,8.701 11.768,8.232C11.299,7.763 10.663,7.5 10,7.5C9.337,7.5 8.701,7.763 8.232,8.232C7.763,8.701 7.5,9.337 7.5,10Z"
android:strokeLineJoin="round"
android:strokeWidth="1.5"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
</group>
</vector>

View File

@ -0,0 +1,17 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="16dp"
android:height="16dp"
android:viewportWidth="16"
android:viewportHeight="16">
<group>
<clip-path
android:pathData="M0,0h16v16h-16z"/>
<path
android:pathData="M6,4L10,8L6,12"
android:strokeLineJoin="round"
android:strokeWidth="1.33333"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
</group>
</vector>

View File

@ -0,0 +1,24 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="16dp"
android:height="16dp"
android:viewportWidth="16"
android:viewportHeight="16">
<group>
<clip-path
android:pathData="M0,0h16v16h-16z"/>
<path
android:pathData="M2,6.667C2,7.28 2.121,7.886 2.355,8.453C2.59,9.019 2.933,9.533 3.367,9.967C3.8,10.4 4.315,10.744 4.881,10.978C5.447,11.213 6.054,11.333 6.667,11.333C7.28,11.333 7.886,11.213 8.453,10.978C9.019,10.744 9.533,10.4 9.967,9.967C10.4,9.533 10.744,9.019 10.978,8.453C11.213,7.886 11.333,7.28 11.333,6.667C11.333,6.054 11.213,5.447 10.978,4.881C10.744,4.315 10.4,3.8 9.967,3.367C9.533,2.933 9.019,2.59 8.453,2.355C7.886,2.121 7.28,2 6.667,2C6.054,2 5.447,2.121 4.881,2.355C4.315,2.59 3.8,2.933 3.367,3.367C2.933,3.8 2.59,4.315 2.355,4.881C2.121,5.447 2,6.054 2,6.667Z"
android:strokeLineJoin="round"
android:strokeWidth="1.33333"
android:fillColor="#00000000"
android:strokeColor="#6B6D6F"
android:strokeLineCap="round"/>
<path
android:pathData="M14,14L10,10"
android:strokeLineJoin="round"
android:strokeWidth="1.33333"
android:fillColor="#00000000"
android:strokeColor="#6B6D6F"
android:strokeLineCap="round"/>
</group>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="20dp"
android:height="20dp"
android:viewportWidth="20"
android:viewportHeight="20">
<path
android:pathData="M15,18.333C14.306,18.333 13.715,18.09 13.229,17.604C12.743,17.118 12.5,16.528 12.5,15.833C12.5,15.736 12.507,15.635 12.521,15.531C12.535,15.427 12.556,15.333 12.583,15.25L6.708,11.833C6.472,12.042 6.208,12.205 5.917,12.323C5.625,12.441 5.319,12.5 5,12.5C4.306,12.5 3.715,12.257 3.229,11.771C2.743,11.285 2.5,10.694 2.5,10C2.5,9.305 2.743,8.715 3.229,8.229C3.715,7.743 4.306,7.5 5,7.5C5.319,7.5 5.625,7.559 5.917,7.677C6.208,7.795 6.472,7.958 6.708,8.167L12.583,4.75C12.556,4.667 12.535,4.573 12.521,4.469C12.507,4.364 12.5,4.264 12.5,4.167C12.5,3.472 12.743,2.882 13.229,2.396C13.715,1.91 14.306,1.666 15,1.666C15.694,1.666 16.285,1.91 16.771,2.396C17.257,2.882 17.5,3.472 17.5,4.167C17.5,4.861 17.257,5.451 16.771,5.937C16.285,6.423 15.694,6.667 15,6.667C14.681,6.667 14.375,6.607 14.083,6.489C13.792,6.371 13.528,6.208 13.292,6L7.417,9.417C7.444,9.5 7.465,9.594 7.479,9.698C7.493,9.802 7.5,9.903 7.5,10C7.5,10.097 7.493,10.198 7.479,10.302C7.465,10.406 7.444,10.5 7.417,10.583L13.292,14C13.528,13.792 13.792,13.628 14.083,13.51C14.375,13.392 14.681,13.333 15,13.333C15.694,13.333 16.285,13.576 16.771,14.062C17.257,14.548 17.5,15.139 17.5,15.833C17.5,16.528 17.257,17.118 16.771,17.604C16.285,18.09 15.694,18.333 15,18.333ZM15,5C15.236,5 15.434,4.92 15.594,4.76C15.753,4.601 15.833,4.403 15.833,4.167C15.833,3.93 15.753,3.732 15.594,3.573C15.434,3.413 15.236,3.333 15,3.333C14.764,3.333 14.566,3.413 14.406,3.573C14.247,3.732 14.167,3.93 14.167,4.167C14.167,4.403 14.247,4.601 14.406,4.76C14.566,4.92 14.764,5 15,5ZM5,10.833C5.236,10.833 5.434,10.753 5.594,10.594C5.753,10.434 5.833,10.236 5.833,10C5.833,9.764 5.753,9.566 5.594,9.406C5.434,9.246 5.236,9.167 5,9.167C4.764,9.167 4.566,9.246 4.406,9.406C4.247,9.566 4.167,9.764 4.167,10C4.167,10.236 4.247,10.434 4.406,10.594C4.566,10.753 4.764,10.833 5,10.833ZM15,16.667C15.236,16.667 15.434,16.587 15.594,16.427C15.753,16.267 15.833,16.069 15.833,15.833C15.833,15.597 15.753,15.399 15.594,15.239C15.434,15.08 15.236,15 15,15C14.764,15 14.566,15.08 14.406,15.239C14.247,15.399 14.167,15.597 14.167,15.833C14.167,16.069 14.247,16.267 14.406,16.427C14.566,16.587 14.764,16.667 15,16.667Z"
android:fillColor="#1D1B20"/>
</vector>

View File

@ -0,0 +1,31 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="20dp"
android:height="20dp"
android:viewportWidth="20"
android:viewportHeight="20">
<group>
<clip-path
android:pathData="M0,0h20v20h-20z"/>
<path
android:pathData="M16.563,5.225C17.146,5.557 17.504,6.177 17.5,6.848V12.918C17.5,13.592 17.131,14.214 16.535,14.542L10.91,18.1C10.631,18.253 10.318,18.333 10,18.333C9.682,18.333 9.369,18.253 9.09,18.1L3.465,14.542C3.173,14.382 2.93,14.148 2.76,13.862C2.591,13.576 2.501,13.25 2.5,12.918V6.847C2.5,6.173 2.869,5.552 3.465,5.225L9.09,1.908C9.377,1.75 9.7,1.667 10.028,1.667C10.355,1.667 10.678,1.75 10.965,1.908L16.59,5.225H16.563Z"
android:strokeLineJoin="round"
android:strokeWidth="1.5"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M10,7.5H10.008"
android:strokeLineJoin="round"
android:strokeWidth="1.5"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M9.167,10H10V13.333H10.833"
android:strokeLineJoin="round"
android:strokeWidth="1.5"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
</group>
</vector>

View File

@ -0,0 +1,17 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="16dp"
android:height="16dp"
android:viewportWidth="16"
android:viewportHeight="16">
<group>
<clip-path
android:pathData="M0,0h16v16h-16z"/>
<path
android:pathData="M6,4L10,8L6,12"
android:strokeLineJoin="round"
android:strokeWidth="1.33333"
android:fillColor="#00000000"
android:strokeColor="#3E05A1"
android:strokeLineCap="round"/>
</group>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="200dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M244.1,960q19.1,0 32.4,-12.2a182.3,182.3 0,0 0,24.1 -27.1L490.4,643q5,-7.9 10,-17.5t9.2,-19.2L640.1,920.7a83.8,83.8 0,0 0,18.7 27.5Q670.9,960 691.7,960H878.9L659.3,476.2 959.6,64H773.2a41.3,41.3 0,0 0,-25 7.9q-10.8,7.9 -20.8,22.7L577.7,314.6q-7.5,11.4 -13.3,22.3t-10.8,21.4L436.3,91.1q-6.7,-14.9 -15.8,-21T390.5,64H204.2l198,411.3L63.6,960z"
android:fillColor="#333333"/>
</vector>

View File

@ -0,0 +1,16 @@
<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.688,3.446C8.536,3.301 9.406,3.349 10.233,3.585C11.061,3.822 11.825,4.241 12.468,4.812L12.504,4.843L12.536,4.814C13.151,4.275 13.873,3.873 14.655,3.635C15.438,3.397 16.261,3.329 17.072,3.434L17.308,3.469C18.33,3.645 19.285,4.095 20.072,4.77C20.859,5.445 21.449,6.32 21.78,7.303C22.11,8.286 22.169,9.34 21.949,10.354C21.729,11.367 21.24,12.302 20.532,13.06L20.359,13.237L20.313,13.276L13.174,20.348C13.009,20.511 12.791,20.609 12.559,20.623C12.328,20.638 12.099,20.568 11.915,20.427L11.825,20.348L4.644,13.235C3.884,12.495 3.343,11.559 3.081,10.53C2.82,9.502 2.848,8.421 3.164,7.407C3.479,6.394 4.068,5.487 4.867,4.788C5.665,4.089 6.642,3.624 7.688,3.446Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M15.636,11.085C13.903,12.131 11.095,12.131 9.364,11.085"
android:strokeLineJoin="round"
android:strokeWidth="1.77"
android:fillColor="#00000000"
android:strokeColor="#6C31D2"
android:strokeLineCap="round"/>
</vector>

View 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="M19.688,12.548L12.5,19.667L5.313,12.548C4.839,12.087 4.465,11.532 4.216,10.92C3.967,10.307 3.847,9.649 3.864,8.988C3.882,8.326 4.036,7.676 4.317,7.077C4.598,6.478 5,5.944 5.498,5.509C5.996,5.073 6.578,4.745 7.209,4.545C7.84,4.346 8.505,4.279 9.163,4.349C9.82,4.419 10.457,4.625 11.031,4.953C11.605,5.281 12.106,5.725 12.5,6.256C12.896,5.729 13.397,5.289 13.971,4.964C14.545,4.64 15.18,4.437 15.836,4.369C16.492,4.301 17.155,4.369 17.783,4.569C18.412,4.769 18.992,5.097 19.488,5.531C19.984,5.966 20.385,6.498 20.666,7.095C20.946,7.692 21.101,8.34 21.12,8.999C21.138,9.658 21.021,10.314 20.774,10.926C20.528,11.538 20.158,12.092 19.688,12.554"
android:strokeLineJoin="round"
android:strokeWidth="1.77"
android:fillColor="#00000000"
android:strokeColor="#6C31D2"
android:strokeLineCap="round"/>
<path
android:pathData="M15.636,11.085C13.903,12.131 11.095,12.131 9.364,11.085"
android:strokeLineJoin="round"
android:strokeWidth="1.77"
android:fillColor="#00000000"
android:strokeColor="#6C31D2"
android:strokeLineCap="round"/>
</vector>

View File

@ -0,0 +1,24 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="12dp"
android:height="12dp"
android:viewportWidth="12"
android:viewportHeight="12">
<group>
<clip-path
android:pathData="M0,0h12v12h-12z"/>
<path
android:strokeWidth="1"
android:pathData="M7.009,9L6,10L2.25,6.286C2.003,6.045 1.808,5.756 1.678,5.436C1.548,5.116 1.485,4.773 1.494,4.428C1.503,4.083 1.584,3.744 1.731,3.432C1.877,3.119 2.087,2.84 2.347,2.613C2.606,2.386 2.91,2.215 3.239,2.111C3.568,2.006 3.916,1.972 4.259,2.008C4.602,2.045 4.934,2.152 5.233,2.323C5.533,2.494 5.794,2.726 6,3.003C6.391,2.482 6.97,2.135 7.614,2.034C8.257,1.934 8.914,2.088 9.445,2.465C9.977,2.842 10.34,3.411 10.458,4.052C10.575,4.692 10.439,5.354 10.076,5.895"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M7.995,10L10.094,7.888C10.353,7.625 10.499,7.271 10.499,6.901C10.499,6.532 10.353,6.177 10.094,5.914C9.966,5.785 9.814,5.682 9.646,5.611C9.479,5.541 9.299,5.504 9.117,5.504C8.935,5.504 8.755,5.539 8.587,5.609C8.419,5.679 8.267,5.782 8.139,5.911L7.999,6.052L7.859,5.91C7.731,5.781 7.579,5.678 7.412,5.607C7.244,5.537 7.064,5.5 6.882,5.5C6.7,5.5 6.52,5.535 6.352,5.605C6.184,5.675 6.032,5.778 5.904,5.907C5.644,6.169 5.498,6.524 5.497,6.893C5.497,7.263 5.641,7.617 5.901,7.881L7.992,10H7.995Z"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
</group>
</vector>

View File

@ -0,0 +1,31 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="12dp"
android:height="12dp"
android:viewportWidth="12"
android:viewportHeight="12">
<group>
<clip-path
android:pathData="M0,0h12v12h-12z"/>
<path
android:strokeWidth="1"
android:pathData="M5.5,6C5.5,6.663 5.763,7.299 6.232,7.768C6.701,8.237 7.337,8.5 8,8.5C8.663,8.5 9.299,8.237 9.768,7.768C10.237,7.299 10.5,6.663 10.5,6C10.5,5.337 10.237,4.701 9.768,4.232C9.299,3.763 8.663,3.5 8,3.5C7.337,3.5 6.701,3.763 6.232,4.232C5.763,4.701 5.5,5.337 5.5,6Z"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M5.5,6H4"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M4,6L1.5,4V8L4,6Z"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
</group>
</vector>

View File

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

View File

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

View File

@ -0,0 +1,16 @@
<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="M18.891,6.986C19.191,7.157 19.441,7.405 19.614,7.705C19.787,8.005 19.877,8.345 19.875,8.691V15.064C19.875,15.772 19.487,16.425 18.862,16.769L12.955,20.505C12.663,20.666 12.334,20.75 12,20.75C11.666,20.75 11.337,20.666 11.045,20.505L5.138,16.769C4.832,16.602 4.577,16.355 4.398,16.055C4.22,15.755 4.126,15.413 4.125,15.064V8.69C4.125,7.982 4.513,7.33 5.138,6.986L11.045,3.504C11.346,3.338 11.685,3.25 12.029,3.25C12.373,3.25 12.712,3.338 13.013,3.504L18.92,6.986H18.891Z"
android:strokeLineJoin="round"
android:strokeWidth="1.77"
android:fillColor="#ffffff"
android:strokeColor="#ffffff"
android:strokeLineCap="round"/>
<path
android:pathData="M9.375,12C9.375,12.696 9.652,13.364 10.144,13.856C10.636,14.348 11.304,14.625 12,14.625C12.696,14.625 13.364,14.348 13.856,13.856C14.348,13.364 14.625,12.696 14.625,12C14.625,11.304 14.348,10.636 13.856,10.144C13.364,9.652 12.696,9.375 12,9.375C11.304,9.375 10.636,9.652 10.144,10.144C9.652,10.636 9.375,11.304 9.375,12Z"
android:fillColor="#6C31D2"/>
</vector>

View File

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

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<solid android:color="@color/white"/>
</shape>
</item>
<item android:right="-2dp" android:left="-2dp" android:top="-2dp">
<shape>
<stroke android:width="1dp" android:color="@color/gray" />
</shape>
</item>
</layer-list>

View File

@ -0,0 +1,20 @@
<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="M18.891,6.986C19.191,7.157 19.441,7.405 19.614,7.705C19.787,8.005 19.877,8.345 19.875,8.691V15.064C19.875,15.772 19.487,16.425 18.862,16.769L12.955,20.505C12.663,20.666 12.334,20.75 12,20.75C11.666,20.75 11.337,20.666 11.045,20.505L5.138,16.769C4.832,16.602 4.577,16.355 4.398,16.055C4.22,15.755 4.126,15.413 4.125,15.064V8.69C4.125,7.982 4.513,7.33 5.138,6.986L11.045,3.504C11.346,3.338 11.685,3.25 12.029,3.25C12.373,3.25 12.712,3.338 13.013,3.504L18.92,6.986H18.891Z"
android:strokeLineJoin="round"
android:strokeWidth="1.77"
android:fillColor="#00000000"
android:strokeColor="#6C31D2"
android:strokeLineCap="round"/>
<path
android:pathData="M9.375,12C9.375,12.696 9.652,13.364 10.144,13.856C10.636,14.348 11.304,14.625 12,14.625C12.696,14.625 13.364,14.348 13.856,13.856C14.348,13.364 14.625,12.696 14.625,12C14.625,11.304 14.348,10.636 13.856,10.144C13.364,9.652 12.696,9.375 12,9.375C11.304,9.375 10.636,9.652 10.144,10.144C9.652,10.636 9.375,11.304 9.375,12Z"
android:strokeLineJoin="round"
android:strokeWidth="1.77"
android:fillColor="#00000000"
android:strokeColor="#6C31D2"
android:strokeLineCap="round"/>
</vector>

View File

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

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/step_uncheck" android:state_selected="false" />
<item android:drawable="@drawable/step_check" android:state_selected="true" />
</selector>

View File

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

View File

@ -0,0 +1,38 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="12dp"
android:height="12dp"
android:viewportWidth="12"
android:viewportHeight="12">
<group>
<clip-path
android:pathData="M0,0h12v12h-12z"/>
<path
android:strokeWidth="1"
android:pathData="M2.5,6C2.5,6.46 2.591,6.915 2.766,7.339C2.942,7.764 3.2,8.15 3.525,8.475C3.85,8.8 4.236,9.058 4.661,9.234C5.085,9.409 5.54,9.5 6,9.5C6.46,9.5 6.915,9.409 7.339,9.234C7.764,9.058 8.15,8.8 8.475,8.475C8.8,8.15 9.058,7.764 9.234,7.339C9.409,6.915 9.5,6.46 9.5,6C9.5,5.54 9.409,5.085 9.234,4.661C9.058,4.236 8.8,3.85 8.475,3.525C8.15,3.2 7.764,2.942 7.339,2.766C6.915,2.591 6.46,2.5 6,2.5C5.54,2.5 5.085,2.591 4.661,2.766C4.236,2.942 3.85,3.2 3.525,3.525C3.2,3.85 2.942,4.236 2.766,4.661C2.591,5.085 2.5,5.54 2.5,6Z"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M2.5,6H1"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M9.5,6H11"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
<path
android:strokeWidth="1"
android:pathData="M5,7V5L6,6L7,5V7"
android:strokeLineJoin="round"
android:fillColor="#00000000"
android:strokeColor="#121113"
android:strokeLineCap="round"/>
</group>
</vector>

View File

@ -0,0 +1,64 @@
<?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_all"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/activity_bg"
tools:context=".activity.AllActivity">
<ImageView
android:id="@+id/all_back"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginStart="12dp"
android:background="@drawable/icon_back"
app:layout_constraintBottom_toBottomOf="@id/all_title"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/all_title" />
<TextView
android:id="@+id/all_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:text="@string/allactivity_title"
android:textColor="@color/text_color"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/all_search"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginEnd="32dp"
android:src="@drawable/icon_search"
app:layout_constraintBottom_toBottomOf="@id/all_title"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/all_title" />
<com.google.android.material.tabs.TabLayout
android:id="@+id/all_tabLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="11dp"
android:background="@android:color/transparent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/all_title"
app:tabIndicatorHeight="0dp"
app:tabMode="scrollable" />
<androidx.viewpager.widget.ViewPager
android:id="@+id/all_viewpager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="16dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/all_tabLayout" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,30 @@
<?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:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/main_activity"
android:background="@mipmap/activity_bg"
tools:context=".activity.MainActivity">
<androidx.viewpager.widget.ViewPager
android:id="@+id/main_viewpager"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/main_tabLayout"
android:layout_marginBottom="6dp" />
<com.google.android.material.tabs.TabLayout
android:id="@+id/main_tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/butoon_tablayout"
android:paddingTop="16dp"
android:paddingBottom="16dp"
app:layout_constraintBottom_toBottomOf="parent"
app:tabIndicatorHeight="0dp" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,168 @@
<?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_pre"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity.PreviewActivity">
<TextView
android:id="@+id/pre_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="14dp"
android:textColor="@color/text_color"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/pre_back"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginStart="12dp"
android:src="@drawable/icon_back"
app:layout_constraintBottom_toBottomOf="@id/pre_title"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/pre_title" />
<ImageView
android:id="@+id/pre_like"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginEnd="32dp"
android:background="@drawable/icon_pre_like_uncheck"
app:layout_constraintBottom_toBottomOf="@id/pre_title"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/pre_title" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/pre_cons"
android:layout_width="match_parent"
android:layout_height="250dp"
android:layout_marginStart="12dp"
android:layout_marginTop="14dp"
android:layout_marginEnd="12dp"
app:layout_constraintTop_toBottomOf="@id/pre_title">
<ProgressBar
android:id="@+id/image_progress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/preview_image"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/download"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginBottom="20dp"
android:background="@drawable/download_background"
android:paddingStart="16dp"
android:paddingTop="10dp"
android:paddingEnd="16dp"
android:paddingBottom="10dp"
app:layout_constraintEnd_toEndOf="@id/pre_cons"
app:layout_constraintStart_toStartOf="@id/pre_cons"
app:layout_constraintTop_toBottomOf="@id/pre_cons">
<ProgressBar
android:id="@+id/download_progress"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginEnd="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/download_text"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/download_image"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginEnd="8dp"
android:background="@drawable/icon_download"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/download_text"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/download_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:text="@string/down_text"
android:textColor="@color/white"
android:textSize="16sp"
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/text_more"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:paddingStart="12dp"
android:paddingEnd="12dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/download">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@string/text_more"
android:textColor="@color/black"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<LinearLayout
android:id="@+id/pre_all"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/view_all"
android:textColor="@color/text_color"
android:textSize="12sp" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginStart="2dp"
android:background="@drawable/icon_viewall" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/pre_rv"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="12dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/text_more" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,93 @@
<?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/search_activity"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/activity_bg"
tools:context="com.key.simplekeyboard.activity.SearchActivity">
<ImageView
android:id="@+id/search_back"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginStart="12dp"
android:background="@drawable/icon_back"
app:layout_constraintBottom_toBottomOf="@id/cancel"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/cancel" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_marginTop="6dp"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_marginStart="12dp"
android:layout_marginEnd="12dp"
android:background="@drawable/search_edit"
android:paddingStart="12dp"
android:paddingEnd="12dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
app:layout_constraintBottom_toBottomOf="@id/cancel"
app:layout_constraintStart_toEndOf="@id/search_back"
app:layout_constraintEnd_toStartOf="@id/cancel"
app:layout_constraintTop_toTopOf="@id/cancel">
<ImageView
android:id="@+id/min_search"
android:layout_width="16dp"
android:layout_height="16dp"
android:src="@drawable/icon_sh_search"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
<EditText
app:layout_constraintStart_toEndOf="@id/min_search"
android:id="@+id/edit_search"
android:layout_width="0dp"
app:layout_constraintEnd_toEndOf="parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_marginStart="8dp"
android:background="@android:color/transparent"
android:lines="1"
android:maxLines="1"
android:hint="@string/search_hint_text"
android:textColorHint="@color/search_hint_text_color"
android:textColor="@color/search_text_color"
android:textSize="12sp" />
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
android:id="@+id/cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="17dp"
android:layout_marginEnd="12dp"
android:text="@string/search"
android:textColor="@color/search_text_color"
android:textSize="14sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.recyclerview.widget.RecyclerView
android:layout_marginTop="20dp"
android:id="@+id/searc_rv"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cancel" />
<TextView
android:layout_marginTop="20dp"
android:id="@+id/faile"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/search_text_color"
android:textSize="25sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cancel" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,120 @@
<?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/setting_activity"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/activity_bg"
tools:context=".activity.SettingActivity">
<ImageView
android:id="@+id/setting_back"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginStart="12dp"
android:background="@drawable/icon_back"
app:layout_constraintBottom_toBottomOf="@id/setting_title"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/setting_title" />
<TextView
android:id="@+id/setting_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:text="@string/setting_title"
android:textColor="@color/text_color"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/setting_hint_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="130dp"
android:gravity="center"
android:text="@string/setting_text"
android:textColor="@color/black"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/setting_title" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/step1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
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_text">
<ImageView
android:id="@+id/step1_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
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="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="24dp"
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/step1">
<ImageView
android:id="@+id/step2_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:background="@drawable/icon_check"
app:layout_constraintBottom_toBottomOf="@id/step2_text"
app:layout_constraintStart_toEndOf="@id/step2_text"
app:layout_constraintTop_toTopOf="@id/step2_text" />
<TextView
android:id="@+id/step2_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/step2"
android:textColor="@color/white"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,45 @@
<?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:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/splash_activity"
tools:context=".activity.SplashActivity">
<androidx.cardview.widget.CardView
android:id="@+id/logo"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_marginBottom="30dp"
app:cardCornerRadius="15dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/icon_logo" />
</androidx.cardview.widget.CardView>
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/app_name"
android:textColor="@color/black"
android:textSize="26sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/logo" />
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/text" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,32 @@
<?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:id="@+id/custom_tablayout"
android:layout_width="match_parent"
android:paddingStart="12dp"
android:paddingEnd="12dp"
android:paddingTop="4dp"
android:paddingBottom="4dp"
android:layout_height="match_parent">
<ImageView
android:id="@+id/tab_image"
android:layout_width="20dp"
android:layout_height="20dp"
app:layout_constraintBottom_toBottomOf="@id/tab_text"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/tab_text" />
<TextView
android:id="@+id/tab_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="12sp"
android:layout_marginStart="4dp"
android:textColor="@drawable/all_tabtext_selector"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/tab_image"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,77 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="300dp"
android:layout_height="wrap_content"
android:background="@color/white"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/bt_close"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="end"
android:layout_marginTop="12dp"
android:layout_marginEnd="12dp"
android:src="@drawable/icon_x" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusableInTouchMode="true"
android:gravity="center"
android:orientation="vertical"
android:theme="@style/ThemeOverlay.AppCompat.Dark">
<androidx.cardview.widget.CardView
android:id="@+id/logo"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_marginBottom="30dp"
app:cardCornerRadius="15dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/imageview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/icon_logo" />
</androidx.cardview.widget.CardView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="11dp"
android:text="@string/app_name"
android:textColor="@color/black"
android:textStyle="bold" />
<TextView
android:id="@+id/tv_version"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:textColor="@color/black" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</FrameLayout>

View File

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

View File

@ -0,0 +1,44 @@
<?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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".fragment.LikeFragment">
<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/text_color"
android:textSize="24sp"
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/search_hint_text_color"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<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>

View File

@ -0,0 +1,106 @@
<?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:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/activity_bg"
tools:context=".fragment.MainFragment">
<TextView
android:id="@+id/main_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:text="@string/app_name"
android:textColor="@color/text_color"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/main_search"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginEnd="32dp"
android:src="@drawable/icon_search"
app:layout_constraintBottom_toBottomOf="@id/main_title"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/main_title" />
<com.youth.banner.Banner
android:id="@+id/banner"
android:layout_width="match_parent"
android:layout_height="150dp"
android:layout_marginStart="12dp"
android:layout_marginTop="17dp"
android:layout_marginEnd="12dp"
android:background="@drawable/banner_bg"
app:layout_constraintTop_toBottomOf="@id/main_title" />
<LinearLayout
android:id="@+id/main_linear"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:orientation="horizontal"
android:paddingStart="12dp"
android:paddingEnd="12dp"
app:layout_constraintTop_toBottomOf="@id/banner">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/for_you"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name"
android:textColor="@color/black"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<LinearLayout
android:id="@+id/view_all"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingStart="10dp"
android:paddingTop="4dp"
android:paddingEnd="10dp"
android:paddingBottom="4dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/view_all"
android:textColor="@color/text_color"
android:textSize="12sp" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginStart="2dp"
android:background="@drawable/icon_viewall" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/main_rv"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="12dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/main_linear" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,161 @@
<?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:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingStart="12dp"
android:paddingEnd="12dp"
tools:context=".fragment.SettingFragment">
<TextView
android:id="@+id/setting_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:text="@string/setting_title"
android:textColor="@color/text_color"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="17dp"
android:paddingTop="16dp"
android:background="@drawable/setting_linear_bg"
android:orientation="vertical"
app:layout_constraintTop_toBottomOf="@id/setting_title">
<LinearLayout
android:id="@+id/keyboard_setting"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/setting_linear_item_bg"
android:paddingBottom="20dp">
<ImageView
android:id="@+id/keyboard"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginBottom="20dp"
android:src="@drawable/icon_setting"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:text="@string/keyboardsettings"
android:textColor="@color/black"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="@id/keyboard"
app:layout_constraintStart_toEndOf="@id/keyboard"
app:layout_constraintTop_toTopOf="@id/keyboard" />
<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:background="@drawable/icon_settingfg"
app:layout_constraintBottom_toBottomOf="@id/keyboard"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/keyboard" />
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/keyboard_share"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/setting_linear_item_bg"
android:paddingBottom="20dp">
<ImageView
android:id="@+id/img_share"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginBottom="20dp"
android:src="@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_marginStart="12dp"
android:text="@string/share_text"
android:textColor="@color/black"
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="16dp"
android:layout_height="16dp"
android:background="@drawable/icon_settingfg"
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/keyboard_version"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="20dp">
<ImageView
android:id="@+id/share"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginBottom="20dp"
android:src="@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_marginStart="12dp"
android:text="@string/version_text"
android:textColor="@color/black"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="@id/share"
app:layout_constraintStart_toEndOf="@id/share"
app:layout_constraintTop_toTopOf="@id/share" />
<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:background="@drawable/icon_settingfg"
app:layout_constraintBottom_toBottomOf="@id/share"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/share" />
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,17 @@
<?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:id="@+id/constraint_layout_id"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/image_view_thumb_id"
android:layout_width="match_parent"
android:layout_height="130dp"
android:scaleType="fitXY"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

Some files were not shown because too many files have changed in this diff Show More