V1.0.0(1)
This commit is contained in:
commit
65a0d83ce2
18
.gitignore
vendored
Normal file
18
.gitignore
vendored
Normal 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
1
app/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
/build
|
||||
64
app/build.gradle.kts
Normal file
64
app/build.gradle.kts
Normal 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
34
app/proguard-rules.pro
vendored
Normal 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.** { *; }
|
||||
20
app/release/output-metadata.json
Normal file
20
app/release/output-metadata.json
Normal 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"
|
||||
}
|
||||
20
app/release/output-metadata_1.json
Normal file
20
app/release/output-metadata_1.json
Normal 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
BIN
app/simplekeyboard.jks
Normal file
Binary file not shown.
BIN
app/simplekeyboardtest.jks
Normal file
BIN
app/simplekeyboardtest.jks
Normal file
Binary file not shown.
@ -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());
|
||||
}
|
||||
}
|
||||
59
app/src/main/AndroidManifest.xml
Normal file
59
app/src/main/AndroidManifest.xml
Normal 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>
|
||||
BIN
app/src/main/assets/DenkOne-Regular.ttf
Normal file
BIN
app/src/main/assets/DenkOne-Regular.ttf
Normal file
Binary file not shown.
5554
app/src/main/assets/keyboard.json
Normal file
5554
app/src/main/assets/keyboard.json
Normal file
File diff suppressed because it is too large
Load Diff
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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");
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -0,0 +1,6 @@
|
||||
package com.key.simplekeyboard.callback;
|
||||
|
||||
public interface UnzipCallback {
|
||||
|
||||
void onUnzipCall(boolean successful, String resDirPath);
|
||||
}
|
||||
29
app/src/main/java/com/key/simplekeyboard/data/MyDAO.java
Normal file
29
app/src/main/java/com/key/simplekeyboard/data/MyDAO.java
Normal 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);
|
||||
}
|
||||
24
app/src/main/java/com/key/simplekeyboard/data/Mydata.java
Normal file
24
app/src/main/java/com/key/simplekeyboard/data/Mydata.java
Normal 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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
81
app/src/main/java/com/key/simplekeyboard/data/Otherdata.java
Normal file
81
app/src/main/java/com/key/simplekeyboard/data/Otherdata.java
Normal 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;
|
||||
}
|
||||
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -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() {
|
||||
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
242
app/src/main/java/com/key/simplekeyboard/tools/Mytools.java
Normal file
242
app/src/main/java/com/key/simplekeyboard/tools/Mytools.java
Normal 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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
}
|
||||
@ -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 = "";
|
||||
}
|
||||
48
app/src/main/java/com/key/simplekeyboard/tools/drawIcon.java
Normal file
48
app/src/main/java/com/key/simplekeyboard/tools/drawIcon.java
Normal 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);
|
||||
}
|
||||
}
|
||||
31
app/src/main/res/drawable/aesthetic_image.xml
Normal file
31
app/src/main/res/drawable/aesthetic_image.xml
Normal 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>
|
||||
129
app/src/main/res/drawable/all_image.xml
Normal file
129
app/src/main/res/drawable/all_image.xml
Normal 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>
|
||||
5
app/src/main/res/drawable/all_selector.xml
Normal file
5
app/src/main/res/drawable/all_selector.xml
Normal 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>
|
||||
8
app/src/main/res/drawable/all_tab_check.xml
Normal file
8
app/src/main/res/drawable/all_tab_check.xml
Normal 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>
|
||||
8
app/src/main/res/drawable/all_tab_uncheck.xml
Normal file
8
app/src/main/res/drawable/all_tab_uncheck.xml
Normal 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>
|
||||
5
app/src/main/res/drawable/all_tabtext_selector.xml
Normal file
5
app/src/main/res/drawable/all_tabtext_selector.xml
Normal 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>
|
||||
10
app/src/main/res/drawable/banner_bg.xml
Normal file
10
app/src/main/res/drawable/banner_bg.xml
Normal 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>
|
||||
8
app/src/main/res/drawable/butoon_tablayout.xml
Normal file
8
app/src/main/res/drawable/butoon_tablayout.xml
Normal 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>
|
||||
31
app/src/main/res/drawable/cool_image.xml
Normal file
31
app/src/main/res/drawable/cool_image.xml
Normal 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>
|
||||
31
app/src/main/res/drawable/cute_image.xml
Normal file
31
app/src/main/res/drawable/cute_image.xml
Normal 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>
|
||||
BIN
app/src/main/res/drawable/de_keybg.9.png
Normal file
BIN
app/src/main/res/drawable/de_keybg.9.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.8 KiB |
BIN
app/src/main/res/drawable/de_keybg_press.9.png
Normal file
BIN
app/src/main/res/drawable/de_keybg_press.9.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.5 KiB |
9
app/src/main/res/drawable/download_background.xml
Normal file
9
app/src/main/res/drawable/download_background.xml
Normal 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>
|
||||
52
app/src/main/res/drawable/festival_image.xml
Normal file
52
app/src/main/res/drawable/festival_image.xml
Normal 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>
|
||||
45
app/src/main/res/drawable/gravity_image.xml
Normal file
45
app/src/main/res/drawable/gravity_image.xml
Normal 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>
|
||||
24
app/src/main/res/drawable/home_check.xml
Normal file
24
app/src/main/res/drawable/home_check.xml
Normal 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>
|
||||
24
app/src/main/res/drawable/home_uncheck.xml
Normal file
24
app/src/main/res/drawable/home_uncheck.xml
Normal 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>
|
||||
170
app/src/main/res/drawable/ic_launcher_background.xml
Normal file
170
app/src/main/res/drawable/ic_launcher_background.xml
Normal 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>
|
||||
30
app/src/main/res/drawable/ic_launcher_foreground.xml
Normal file
30
app/src/main/res/drawable/ic_launcher_foreground.xml
Normal 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>
|
||||
9
app/src/main/res/drawable/ico_shift_lit.xml
Normal file
9
app/src/main/res/drawable/ico_shift_lit.xml
Normal 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>
|
||||
31
app/src/main/res/drawable/icon_back.xml
Normal file
31
app/src/main/res/drawable/icon_back.xml
Normal 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>
|
||||
9
app/src/main/res/drawable/icon_check.xml
Normal file
9
app/src/main/res/drawable/icon_check.xml
Normal 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>
|
||||
9
app/src/main/res/drawable/icon_del.xml
Normal file
9
app/src/main/res/drawable/icon_del.xml
Normal 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>
|
||||
31
app/src/main/res/drawable/icon_download.xml
Normal file
31
app/src/main/res/drawable/icon_download.xml
Normal 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>
|
||||
80
app/src/main/res/drawable/icon_load.xml
Normal file
80
app/src/main/res/drawable/icon_load.xml
Normal 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>
|
||||
13
app/src/main/res/drawable/icon_pre_like_check.xml
Normal file
13
app/src/main/res/drawable/icon_pre_like_check.xml
Normal 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>
|
||||
14
app/src/main/res/drawable/icon_pre_like_uncheck.xml
Normal file
14
app/src/main/res/drawable/icon_pre_like_uncheck.xml
Normal 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>
|
||||
24
app/src/main/res/drawable/icon_search.xml
Normal file
24
app/src/main/res/drawable/icon_search.xml
Normal 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>
|
||||
31
app/src/main/res/drawable/icon_setting.xml
Normal file
31
app/src/main/res/drawable/icon_setting.xml
Normal 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>
|
||||
17
app/src/main/res/drawable/icon_settingfg.xml
Normal file
17
app/src/main/res/drawable/icon_settingfg.xml
Normal 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>
|
||||
24
app/src/main/res/drawable/icon_sh_search.xml
Normal file
24
app/src/main/res/drawable/icon_sh_search.xml
Normal 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>
|
||||
9
app/src/main/res/drawable/icon_share.xml
Normal file
9
app/src/main/res/drawable/icon_share.xml
Normal file
@ -0,0 +1,9 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="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>
|
||||
31
app/src/main/res/drawable/icon_version.xml
Normal file
31
app/src/main/res/drawable/icon_version.xml
Normal 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>
|
||||
17
app/src/main/res/drawable/icon_viewall.xml
Normal file
17
app/src/main/res/drawable/icon_viewall.xml
Normal 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>
|
||||
9
app/src/main/res/drawable/icon_x.xml
Normal file
9
app/src/main/res/drawable/icon_x.xml
Normal 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>
|
||||
16
app/src/main/res/drawable/like_check.xml
Normal file
16
app/src/main/res/drawable/like_check.xml
Normal 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>
|
||||
20
app/src/main/res/drawable/like_uncheck.xml
Normal file
20
app/src/main/res/drawable/like_uncheck.xml
Normal file
@ -0,0 +1,20 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="25dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="25"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="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>
|
||||
24
app/src/main/res/drawable/love_image.xml
Normal file
24
app/src/main/res/drawable/love_image.xml
Normal 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>
|
||||
31
app/src/main/res/drawable/neon_image.xml
Normal file
31
app/src/main/res/drawable/neon_image.xml
Normal 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>
|
||||
8
app/src/main/res/drawable/pre_load_bg.xml
Normal file
8
app/src/main/res/drawable/pre_load_bg.xml
Normal 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>
|
||||
9
app/src/main/res/drawable/search_edit.xml
Normal file
9
app/src/main/res/drawable/search_edit.xml
Normal 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>
|
||||
16
app/src/main/res/drawable/setting_check.xml
Normal file
16
app/src/main/res/drawable/setting_check.xml
Normal 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>
|
||||
10
app/src/main/res/drawable/setting_linear_bg.xml
Normal file
10
app/src/main/res/drawable/setting_linear_bg.xml
Normal 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>
|
||||
13
app/src/main/res/drawable/setting_linear_item_bg.xml
Normal file
13
app/src/main/res/drawable/setting_linear_item_bg.xml
Normal 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>
|
||||
20
app/src/main/res/drawable/setting_uncheck.xml
Normal file
20
app/src/main/res/drawable/setting_uncheck.xml
Normal 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>
|
||||
11
app/src/main/res/drawable/step_check.xml
Normal file
11
app/src/main/res/drawable/step_check.xml
Normal 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>
|
||||
6
app/src/main/res/drawable/step_selector.xml
Normal file
6
app/src/main/res/drawable/step_selector.xml
Normal 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>
|
||||
9
app/src/main/res/drawable/step_uncheck.xml
Normal file
9
app/src/main/res/drawable/step_uncheck.xml
Normal 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>
|
||||
38
app/src/main/res/drawable/super_theme_image.xml
Normal file
38
app/src/main/res/drawable/super_theme_image.xml
Normal 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>
|
||||
64
app/src/main/res/layout/activity_all.xml
Normal file
64
app/src/main/res/layout/activity_all.xml
Normal 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>
|
||||
30
app/src/main/res/layout/activity_main.xml
Normal file
30
app/src/main/res/layout/activity_main.xml
Normal 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>
|
||||
168
app/src/main/res/layout/activity_preview.xml
Normal file
168
app/src/main/res/layout/activity_preview.xml
Normal 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>
|
||||
93
app/src/main/res/layout/activity_search.xml
Normal file
93
app/src/main/res/layout/activity_search.xml
Normal 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>
|
||||
120
app/src/main/res/layout/activity_setting.xml
Normal file
120
app/src/main/res/layout/activity_setting.xml
Normal 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>
|
||||
45
app/src/main/res/layout/activity_splash.xml
Normal file
45
app/src/main/res/layout/activity_splash.xml
Normal 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>
|
||||
32
app/src/main/res/layout/custom_tablayout.xml
Normal file
32
app/src/main/res/layout/custom_tablayout.xml
Normal 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>
|
||||
77
app/src/main/res/layout/dia_about.xml
Normal file
77
app/src/main/res/layout/dia_about.xml
Normal 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>
|
||||
14
app/src/main/res/layout/fragment_all.xml
Normal file
14
app/src/main/res/layout/fragment_all.xml
Normal file
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns: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>
|
||||
44
app/src/main/res/layout/fragment_like.xml
Normal file
44
app/src/main/res/layout/fragment_like.xml
Normal 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>
|
||||
106
app/src/main/res/layout/fragment_main.xml
Normal file
106
app/src/main/res/layout/fragment_main.xml
Normal 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>
|
||||
161
app/src/main/res/layout/fragment_setting.xml
Normal file
161
app/src/main/res/layout/fragment_setting.xml
Normal 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>
|
||||
17
app/src/main/res/layout/image_list.xml
Normal file
17
app/src/main/res/layout/image_list.xml
Normal 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
Loading…
Reference in New Issue
Block a user