commit 9abaeb47769af6011fa773f99feef03fca36e340 Author: Jerry Date: Fri Aug 18 12:24:07 2023 +0800 init diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..aa724b7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +*.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 diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..b15dbad --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,40 @@ +plugins { + id 'com.android.application' + id 'org.jetbrains.kotlin.android' +} + +android { + namespace 'cc.jerryxiao.easterscrsaver' + compileSdk 33 + + defaultConfig { + applicationId "cc.jerryxiao.easterscrsaver" + minSdk 21 + targetSdk 32 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } +} + +dependencies { + + implementation 'androidx.appcompat:appcompat:1.4.1' + implementation 'com.google.android.material:material:1.5.0' + implementation 'androidx.core:core-ktx:1.10.1' + testImplementation 'junit:junit:4.13.2' + androidTestImplementation 'androidx.test.ext:junit:1.1.3' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' +} \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# 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 \ No newline at end of file diff --git a/app/src/androidTest/java/cc/jerryxiao/easterscrsaver/ExampleInstrumentedTest.java b/app/src/androidTest/java/cc/jerryxiao/easterscrsaver/ExampleInstrumentedTest.java new file mode 100644 index 0000000..acec06d --- /dev/null +++ b/app/src/androidTest/java/cc/jerryxiao/easterscrsaver/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package cc.jerryxiao.easterscrsaver; + +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 Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + assertEquals("cc.jerryxiao.easterscrsaver", appContext.getPackageName()); + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..08aa5fa --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/cc/jerryxiao/easterscrsaver/COLREmojiCompat.kt b/app/src/main/java/cc/jerryxiao/easterscrsaver/COLREmojiCompat.kt new file mode 100644 index 0000000..1c8aeb4 --- /dev/null +++ b/app/src/main/java/cc/jerryxiao/easterscrsaver/COLREmojiCompat.kt @@ -0,0 +1,69 @@ +@file:JvmName("COLREmojiCompat") + +package cc.jerryxiao.easterscrsaver + +import android.app.Activity +import android.content.Context +import android.graphics.Canvas +import android.graphics.drawable.Drawable +import cc.jerryxiao.easterscrsaver.EasterDream.Bubble +import java.util.WeakHashMap + +/** + * COLR Emoji Compat + * + * @author shhu + * @since 2023/2/10 + */ + +fun Canvas.drawCOLREmoji(bubble: Bubble, p: Float) { + val drawable = bubble.drawable ?: return + if (bubble.r <= 0f) return + drawable.setBounds( + (bubble.x - bubble.r * p).toInt(), + (bubble.y - bubble.r * p).toInt(), + (bubble.x + bubble.r * p).toInt(), + (bubble.y + bubble.r * p).toInt() + ) + drawable.draw(this) +} + +private val cachedDrawable = WeakHashMap() + +fun Context.identifierEmojiDrawable( + emoji: CharSequence?, + temp: MutableList? = null, +): Drawable? { + if (emoji.isNullOrEmpty()) return null + val cache = cachedDrawable[emoji] + if (cache != null) return cache + + val drawableName = getEmojiUnicode( + emoji, + separator = "_", + prefix = "t_emoji_u", + temp = temp + ).toString() + val id: Int = this.getIdentifier(drawableName, DefType.DRAWABLE, this.packageName) + if (id == 0) { + throw IllegalStateException("Emoji xml not found, name: %s".format(drawableName)) + } + return createVectorDrawableCompat(id).apply { + cachedDrawable[emoji] = this + } +} + +fun releaseIdentifiedCOLREmoji() { + cachedDrawable.clear() +} + +fun Array.identifierCOLREmoji(activity: Activity) { + val list = ArrayList() + for (bubble in this) { + val drawable = activity.identifierEmojiDrawable(bubble.text, list) + if (drawable != null) { + bubble.drawable = drawable + bubble.text = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/cc/jerryxiao/easterscrsaver/DrawableKt.kt b/app/src/main/java/cc/jerryxiao/easterscrsaver/DrawableKt.kt new file mode 100644 index 0000000..1f7d51b --- /dev/null +++ b/app/src/main/java/cc/jerryxiao/easterscrsaver/DrawableKt.kt @@ -0,0 +1,87 @@ +@file:JvmName("DrawableKt") +@file:JvmMultifileClass + +package cc.jerryxiao.easterscrsaver + +import android.annotation.SuppressLint +import android.content.Context +import android.content.res.Resources +import android.graphics.drawable.Drawable +import android.util.LruCache +import android.util.Xml +import androidx.annotation.DrawableRes +import androidx.annotation.XmlRes +import androidx.core.content.ContextCompat +import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat +import org.xmlpull.v1.XmlPullParser +import org.xmlpull.v1.XmlPullParserException + +@SuppressLint("DiscouragedApi") +@Throws(Resources.NotFoundException::class) +fun Context.getSystemColor(resName: String): Int { + val id = getIdentifier(resName, DefType.COLOR, "android") + return ContextCompat.getColor(this, id) +} + +enum class DefType { + DRAWABLE, + COLOR, + RAW, + XML + ; + + override fun toString(): String { + return when (this) { + DRAWABLE -> "drawable" + COLOR -> "color" + RAW -> "raw" + XML -> "xml" + } + } +} + +private val identifierCache = LruCache(50) + +private fun makeKey(name: String, defType: DefType, packageName: String): String { + return "$packageName:$defType/$name" +} + +@JvmOverloads +@SuppressLint("DiscouragedApi") +fun Context.getIdentifier(name: String, defType: DefType, defPackage: String = packageName): Int { + val key = makeKey(name, defType, defPackage) + var id = identifierCache.get(key) + if (id == null) { + val type = defType.toString() + id = resources.getIdentifier(name, type, defPackage) + identifierCache.put(key, id) + } + return id +} + +fun Context.requireDrawable(@DrawableRes id: Int): Drawable { + return requireNotNull(ContextCompat.getDrawable(this, id)) +} + +fun Context.createVectorDrawableCompat(@DrawableRes id: Int): VectorDrawableCompat { + return requireNotNull(VectorDrawableCompat.create(this.resources, id, this.theme)) +} + +/** + * Some Egg can't enable `useSupportLibrary = true` + */ +fun Context.createVectorDrawableCompatFromXml( + @XmlRes id: Int, +): VectorDrawableCompat { + val parser = resources.getXml(id) + val attrs = Xml.asAttributeSet(parser) + var type: Int + while (parser.next().also { type = it } != XmlPullParser.START_TAG && + type != XmlPullParser.END_DOCUMENT) { + // Empty loop + } + if (type != XmlPullParser.START_TAG) { + throw XmlPullParserException("No start tag found") + } + return VectorDrawableCompat.createFromXmlInner(resources, parser, attrs, theme) +} \ No newline at end of file diff --git a/app/src/main/java/cc/jerryxiao/easterscrsaver/EasterDream.java b/app/src/main/java/cc/jerryxiao/easterscrsaver/EasterDream.java new file mode 100644 index 0000000..a04d47b --- /dev/null +++ b/app/src/main/java/cc/jerryxiao/easterscrsaver/EasterDream.java @@ -0,0 +1,345 @@ +package cc.jerryxiao.easterscrsaver; + +import static android.graphics.PixelFormat.TRANSLUCENT; + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.app.WallpaperManager; +import android.content.pm.PackageManager; +import android.graphics.Canvas; +import android.graphics.ColorFilter; +import android.graphics.Paint; +import android.graphics.Point; +import android.graphics.Rect; +import android.graphics.drawable.Drawable; +import android.graphics.drawable.LayerDrawable; +import android.os.Build; +import android.os.Handler; +import android.os.Looper; +import android.service.dreams.DreamService; +import android.util.DisplayMetrics; +import android.util.Log; +import android.view.Gravity; +import android.view.View; +import android.view.ViewGroup; +import android.widget.FrameLayout; +import android.widget.ImageView; + +import androidx.annotation.ChecksSdkIntAtLeast; +import androidx.core.app.ActivityCompat; + +import java.util.Timer; +import java.util.TimerTask; + +public class EasterDream extends DreamService { + private static String TAG = "easter_daydream"; + private Drawable wallPaperDrawable = null; + private FrameLayout last = null; + public void refresh() { + final ImageView mLogo; + final BubblesDrawable mBg; + final FrameLayout layout = new FrameLayout(this); + + Point size = new Point(); + getWindowManager().getDefaultDisplay().getRealSize(size); + + final DisplayMetrics dm = getResources().getDisplayMetrics(); + final float dp = dm.density; + //final int minSide = Math.min(dm.widthPixels, dm.heightPixels); + final int minSide = Math.min(size.x, size.y); + final int widgetSize = (int) (minSide * 0.75); + + final FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(widgetSize, widgetSize); + lp.gravity = Gravity.CENTER; + + mLogo = new ImageView(this); + mLogo.setVisibility(View.GONE); + mLogo.setImageResource(R.drawable.t_platlogo); + layout.addView(mLogo, lp); + + mBg = new BubblesDrawable(this); + mBg.setLevel(0); + mBg.avoid = widgetSize / 2; + mBg.padding = 0.5f * dp; + mBg.minR = 1 * dp; + if (wallPaperDrawable != null) { + layout.setBackground(new LayerDrawable(new Drawable[]{wallPaperDrawable, mBg})); + } + else { + layout.setBackground(mBg); + } + + mBg.chooseEmojiSet(); + mLogo.setVisibility(View.VISIBLE); + mBg.setLevel(10000); + + if (last == null) setContentView(layout); + else { + layout.setAlpha(0f); + layout.setVisibility(View.VISIBLE); + addContentView(layout, new ViewGroup.LayoutParams(size.x, size.y)); + int animDuration = getResources().getInteger(android.R.integer.config_longAnimTime); + animDuration = Math.max(animDuration, 1500); + layout.animate().alpha(1f).setDuration(animDuration).setListener(null); + last.animate() + .alpha(0f) + .setDuration(animDuration) + .setListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + last.setVisibility(View.GONE); + setContentView(layout); + layout.setVisibility(View.VISIBLE); + } + }); + } + last = layout; + } + + @Override + public void onAttachedToWindow() { + super.onAttachedToWindow(); + + // Exit dream upon user touch + setInteractive(false); + // Hide system UI + setFullscreen(true); + // Set the dream layout + + WallpaperManager wallPaperManager = WallpaperManager.getInstance(this); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && wallPaperManager.isWallpaperSupported()) { + if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) { + wallPaperDrawable = wallPaperManager.getDrawable(); + } + } + refresh(); + } + + private static final String[][] EMOJI_SETS = { + {"๐Ÿ‡", "๐Ÿˆ", "๐Ÿ‰", "๐ŸŠ", "๐Ÿ‹", "๐ŸŒ", "๐Ÿ", "๐Ÿฅญ", "๐ŸŽ", "๐Ÿ", "๐Ÿ", "๐Ÿ‘", + "๐Ÿ’", "๐Ÿ“", "๐Ÿซ", "๐Ÿฅ"}, + {"๐Ÿ˜บ", "๐Ÿ˜ธ", "๐Ÿ˜น", "๐Ÿ˜ป", "๐Ÿ˜ผ", "๐Ÿ˜ฝ", "๐Ÿ™€", "๐Ÿ˜ฟ", "๐Ÿ˜พ"}, + {"๐Ÿ˜€", "๐Ÿ˜ƒ", "๐Ÿ˜„", "๐Ÿ˜", "๐Ÿ˜†", "๐Ÿ˜…", "๐Ÿคฃ", "๐Ÿ˜‚", "๐Ÿ™‚", "๐Ÿ™ƒ", "๐Ÿซ ", "๐Ÿ˜‰", "๐Ÿ˜Š", + "๐Ÿ˜‡", "๐Ÿฅฐ", "๐Ÿ˜", "๐Ÿคฉ", "๐Ÿ˜˜", "๐Ÿ˜—", "โ˜บ๏ธ", "๐Ÿ˜š", "๐Ÿ˜™", "๐Ÿฅฒ", "๐Ÿ˜‹", "๐Ÿ˜›", "๐Ÿ˜œ", + "๐Ÿคช", "๐Ÿ˜", "๐Ÿค‘", "๐Ÿค—", "๐Ÿคญ", "๐Ÿซข", "๐Ÿซฃ", "๐Ÿคซ", "๐Ÿค”", "๐Ÿซก", "๐Ÿค", "๐Ÿคจ", "๐Ÿ˜", + "๐Ÿ˜‘", "๐Ÿ˜ถ", "๐Ÿซฅ", "๐Ÿ˜", "๐Ÿ˜’", "๐Ÿ™„", "๐Ÿ˜ฌ", "๐Ÿคฅ", "๐Ÿ˜Œ", "๐Ÿ˜”", "๐Ÿ˜ช", "๐Ÿคค", "๐Ÿ˜ด", + "๐Ÿ˜ท"}, + {"๐Ÿคฉ", "๐Ÿ˜", "๐Ÿฅฐ", "๐Ÿ˜˜", "๐Ÿฅณ", "๐Ÿฅฒ", "๐Ÿฅน"}, + {"๐Ÿซ "}, + {"๐Ÿ’˜", "๐Ÿ’", "๐Ÿ’–", "๐Ÿ’—", "๐Ÿ’“", "๐Ÿ’ž", "๐Ÿ’•", "โฃ", "๐Ÿ’”", "โค", "๐Ÿงก", "๐Ÿ’›", + "๐Ÿ’š", "๐Ÿ’™", "๐Ÿ’œ", "๐ŸคŽ", "๐Ÿ–ค", "๐Ÿค"}, + {"๐Ÿ‘", "๏ธ๐Ÿซฆ", "๐Ÿ‘๏ธ"}, // this one is too much + {"๐Ÿ‘ฝ", "๐Ÿ›ธ", "โœจ", "๐ŸŒŸ", "๐Ÿ’ซ", "๐Ÿš€", "๐Ÿช", "๐ŸŒ™", "โญ", "๐ŸŒ"}, + {"๐ŸŒ‘", "๐ŸŒ’", "๐ŸŒ“", "๐ŸŒ”", "๐ŸŒ•", "๐ŸŒ–", "๐ŸŒ—", "๐ŸŒ˜"}, + {"๐Ÿ™", "๐Ÿชธ", "๐Ÿฆ‘", "๐Ÿฆ€", "๐Ÿฆ", "๐Ÿก", "๐Ÿฆž", "๐Ÿ ", "๐ŸŸ", "๐Ÿณ", "๐Ÿ‹", "๐Ÿฌ", "๐Ÿซง", "๐ŸŒŠ", + "๐Ÿฆˆ"}, + {"๐Ÿ™ˆ", "๐Ÿ™‰", "๐Ÿ™Š", "๐Ÿต", "๐Ÿ’"}, + {"โ™ˆ", "โ™‰", "โ™Š", "โ™‹", "โ™Œ", "โ™", "โ™Ž", "โ™", "โ™", "โ™‘", "โ™’", "โ™“"}, + {"๐Ÿ•›", "๐Ÿ•ง", "๐Ÿ•", "๐Ÿ•œ", "๐Ÿ•‘", "๐Ÿ•", "๐Ÿ•’", "๐Ÿ•ž", "๐Ÿ•“", "๐Ÿ•Ÿ", "๐Ÿ•”", "๐Ÿ• ", "๐Ÿ••", "๐Ÿ•ก", + "๐Ÿ•–", "๐Ÿ•ข", "๐Ÿ•—", "๐Ÿ•ฃ", "๐Ÿ•˜", "๐Ÿ•ค", "๐Ÿ•™", "๐Ÿ•ฅ", "๐Ÿ•š", "๐Ÿ•ฆ"}, + {"๐ŸŒบ", "๐ŸŒธ", "๐Ÿ’ฎ", "๐Ÿต๏ธ", "๐ŸŒผ", "๐ŸŒฟ"}, + {"๐Ÿข", "โœจ", "๐ŸŒŸ", "๐Ÿ‘‘"} + }; + +public static class Bubble { + public float x, y, r; + public int color; + public String text = null; + public Drawable drawable = null; +} + +class BubblesDrawable extends Drawable { + public Timer timer = new Timer(); + EasterDream context; + +// private static final int MAX_BUBBS = 2000; + + // Optimize memory usage + private final int MAX_BUBBS = Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU ? 2000 : 1000; + + // private final int[] mColorIds = { +// android.R.color.system_accent1_400, +// android.R.color.system_accent1_500, +// android.R.color.system_accent1_600, +// +// android.R.color.system_accent2_400, +// android.R.color.system_accent2_500, +// android.R.color.system_accent2_600, +// }; + private final String[] mColorIds = { + "system_accent1_400", + "system_accent1_500", + "system_accent1_600", + + "system_accent2_400", + "system_accent2_500", + "system_accent2_600" + }; + + // private int[] mColors = new int[mColorIds.length]; + private int[] mColors = {0xff598df7, 0xff3771df, 0xff2559bc, 0xff8a91a3, 0xff707687, 0xff585e6f}; + + private int mEmojiSet = -1; + + private final Bubble[] mBubbs = new Bubble[MAX_BUBBS]; + private int mNumBubbs; + + private final Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + + public float avoid = 0f; + public float padding = 0f; + public float minR = 0f; + + @ChecksSdkIntAtLeast(api = Build.VERSION_CODES.TIRAMISU) + private final boolean supportCOLR = Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU; + //private final boolean supportCOLR = false; + + BubblesDrawable(EasterDream context) { + this.context = context; + try { + for (int i = 0; i < mColorIds.length; i++) { + mColors[i] = DrawableKt.getSystemColor(getApplicationContext(), mColorIds[i]); + } + } catch (Exception ignore) { + } + for (int j = 0; j < mBubbs.length; j++) { + mBubbs[j] = new Bubble(); + } + } + + @Override + public void draw(Canvas canvas) { + if (getLevel() == 0) return; + final float f = getLevel() / 10000f; + mPaint.setStyle(Paint.Style.FILL); + mPaint.setTextAlign(Paint.Align.CENTER); + int drawn = 0; + for (int j = 0; j < mNumBubbs; j++) { + if (mBubbs[j].color == 0 || mBubbs[j].r == 0) continue; + if (mBubbs[j].text != null && supportCOLR) { + mPaint.setTextSize(mBubbs[j].r * 1.75f); + canvas.drawText(mBubbs[j].text, mBubbs[j].x, + mBubbs[j].y + mBubbs[j].r * f * 0.6f, mPaint); + } else if (mBubbs[j].drawable != null) { + COLREmojiCompat.drawCOLREmoji(canvas, mBubbs[j], f); + } else { + mPaint.setColor(mBubbs[j].color); + canvas.drawCircle(mBubbs[j].x, mBubbs[j].y, mBubbs[j].r * f, mPaint); + } + drawn++; + } + + timer.schedule(new TimerTask() { + @Override + public void run() { + timer.cancel(); + timer.purge(); + new Handler(Looper.getMainLooper()).post(() -> { + context.refresh(); + }); + //randomize(); + //chooseEmojiSet(); + } + }, 10000L); + } + + public void chooseEmojiSet() { + if (Math.random() < 0.8) { + if (Math.random() < 0.4) { + mEmojiSet = 0; + } + else { + mEmojiSet = 13; + } + } + else { + mEmojiSet = (int) (Math.random() * EMOJI_SETS.length); + } + final String[] emojiSet = EMOJI_SETS[mEmojiSet]; + Log.i(TAG, "chooseEmojiSet: " + mEmojiSet); + + for (int j = 0; j < mBubbs.length; j++) { + mBubbs[j].text = emojiSet[(int) (Math.random() * emojiSet.length)]; + } + // support code + if (!supportCOLR) { + COLREmojiCompat.identifierCOLREmoji(mBubbs, null); + } + invalidateSelf(); + } + + @Override + protected boolean onLevelChange(int level) { + invalidateSelf(); + return true; + } + + @Override + protected void onBoundsChange(Rect bounds) { + super.onBoundsChange(bounds); + randomize(); + } + + private void randomize() { + final float w = getBounds().width(); + final float h = getBounds().height(); + final float maxR = Math.min(w, h) / 3f; + mNumBubbs = 0; + if (avoid > 0f) { + mBubbs[mNumBubbs].x = w / 2f; + mBubbs[mNumBubbs].y = h / 2f; + mBubbs[mNumBubbs].r = avoid; + mBubbs[mNumBubbs].color = 0; + mNumBubbs++; + } + for (int j = 0; j < MAX_BUBBS; j++) { + // a simple but time-tested bubble-packing algorithm: + // 1. pick a spot + // 2. shrink the bubble until it is no longer overlapping any other bubble + // 3. if the bubble hasn't popped, keep it + int tries = 5; + while (tries-- > 0) { + float x = (float) Math.random() * w; + float y = (float) Math.random() * h; + float r = Math.min(Math.min(x, w - x), Math.min(y, h - y)); + + // shrink radius to fit other bubbs + for (int i = 0; i < mNumBubbs; i++) { + r = (float) Math.min(r, + Math.hypot(x - mBubbs[i].x, y - mBubbs[i].y) - mBubbs[i].r + - padding); + if (r < minR) break; + } + + if (r >= minR) { + // we have found a spot for this bubble to live, let's save it and move on + r = Math.min(maxR, r); + + mBubbs[mNumBubbs].x = x; + mBubbs[mNumBubbs].y = y; + mBubbs[mNumBubbs].r = r; + mBubbs[mNumBubbs].color = mColors[(int) (Math.random() * mColors.length)]; + mNumBubbs++; + break; + } + } + } + Log.v(TAG, String.format("successfully placed %d bubbles (%d%%)", + mNumBubbs, (int) (100f * mNumBubbs / MAX_BUBBS))); + } + + @Override + public void setAlpha(int alpha) { + } + + @Override + public void setColorFilter(ColorFilter colorFilter) { + } + + @Override + public int getOpacity() { + return TRANSLUCENT; + } +} + +} diff --git a/app/src/main/java/cc/jerryxiao/easterscrsaver/UtilExt.kt b/app/src/main/java/cc/jerryxiao/easterscrsaver/UtilExt.kt new file mode 100644 index 0000000..ede9dee --- /dev/null +++ b/app/src/main/java/cc/jerryxiao/easterscrsaver/UtilExt.kt @@ -0,0 +1,32 @@ +@file:JvmName("UtilExt") + +package cc.jerryxiao.easterscrsaver + +import android.util.TypedValue +import kotlin.math.roundToInt + +/** + * ่ฎก็ฎ—Emoji็š„Unicode + */ +fun getEmojiUnicode( + emoji: CharSequence, + separator: CharSequence = "\\u", + prefix: CharSequence = "", + postfix: CharSequence = "", + temp: MutableList? = null, +): CharSequence { + val list: MutableList = if (temp != null) { + temp.clear();temp + } else ArrayList() + var offset = 0 + while (offset < emoji.length) { + val codePoint = Character.codePointAt(emoji, offset) + offset += Character.charCount(codePoint) + if (codePoint == 0xFE0F) { + // the codepoint is a emoji style standardized variation selector + continue + } + list.add("%04x".format(codePoint)) + } + return list.joinToString(separator = separator, prefix = prefix, postfix = postfix) +} diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f30a.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f30a.xml new file mode 100644 index 0000000..60755bb --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f30a.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f30d.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f30d.xml new file mode 100644 index 0000000..a6220d9 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f30d.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f311.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f311.xml new file mode 100644 index 0000000..487f41b --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f311.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f312.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f312.xml new file mode 100644 index 0000000..765ead5 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f312.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f313.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f313.xml new file mode 100644 index 0000000..2abc014 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f313.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f314.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f314.xml new file mode 100644 index 0000000..6c94806 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f314.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f315.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f315.xml new file mode 100644 index 0000000..486c388 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f315.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f316.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f316.xml new file mode 100644 index 0000000..e9b0013 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f316.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f317.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f317.xml new file mode 100644 index 0000000..b3d9637 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f317.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f318.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f318.xml new file mode 100644 index 0000000..f439031 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f318.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f319.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f319.xml new file mode 100644 index 0000000..9080219 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f319.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f31f.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f31f.xml new file mode 100644 index 0000000..dea6aed --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f31f.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f338.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f338.xml new file mode 100644 index 0000000..66ecccc --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f338.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f33a.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f33a.xml new file mode 100644 index 0000000..945fa85 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f33a.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f33c.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f33c.xml new file mode 100644 index 0000000..1dab027 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f33c.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f33f.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f33f.xml new file mode 100644 index 0000000..e2bcca5 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f33f.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f347.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f347.xml new file mode 100644 index 0000000..87a2e12 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f347.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f348.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f348.xml new file mode 100644 index 0000000..f148341 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f348.xml @@ -0,0 +1,264 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f349.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f349.xml new file mode 100644 index 0000000..11a64d8 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f349.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f34a.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f34a.xml new file mode 100644 index 0000000..084a3df --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f34a.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f34b.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f34b.xml new file mode 100644 index 0000000..ea0c2ee --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f34b.xml @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f34c.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f34c.xml new file mode 100644 index 0000000..88f3d1e --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f34c.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f34d.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f34d.xml new file mode 100644 index 0000000..aa28dcf --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f34d.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f34e.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f34e.xml new file mode 100644 index 0000000..a89050e --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f34e.xml @@ -0,0 +1,27 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f34f.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f34f.xml new file mode 100644 index 0000000..b88c412 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f34f.xml @@ -0,0 +1,27 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f350.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f350.xml new file mode 100644 index 0000000..95898a2 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f350.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f351.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f351.xml new file mode 100644 index 0000000..6900dd0 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f351.xml @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f352.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f352.xml new file mode 100644 index 0000000..de4aa23 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f352.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f353.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f353.xml new file mode 100644 index 0000000..cc26970 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f353.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f3f5.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f3f5.xml new file mode 100644 index 0000000..24e1039 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f3f5.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f40b.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f40b.xml new file mode 100644 index 0000000..3e2f836 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f40b.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f412.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f412.xml new file mode 100644 index 0000000..5d79614 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f412.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f419.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f419.xml new file mode 100644 index 0000000..fccbaa6 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f419.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f41f.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f41f.xml new file mode 100644 index 0000000..d788f54 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f41f.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f420.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f420.xml new file mode 100644 index 0000000..3cda2f4 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f420.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f421.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f421.xml new file mode 100644 index 0000000..73d72a3 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f421.xml @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f422.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f422.xml new file mode 100644 index 0000000..6a0560a --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f422.xml @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f42c.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f42c.xml new file mode 100644 index 0000000..422f572 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f42c.xml @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f433.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f433.xml new file mode 100644 index 0000000..0ab9724 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f433.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f435.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f435.xml new file mode 100644 index 0000000..75cc054 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f435.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f441.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f441.xml new file mode 100644 index 0000000..01a2107 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f441.xml @@ -0,0 +1,30 @@ + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f451.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f451.xml new file mode 100644 index 0000000..6036560 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f451.xml @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f47d.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f47d.xml new file mode 100644 index 0000000..04970cf --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f47d.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f493.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f493.xml new file mode 100644 index 0000000..621be70 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f493.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f494.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f494.xml new file mode 100644 index 0000000..7916548 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f494.xml @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f495.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f495.xml new file mode 100644 index 0000000..c9b4966 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f495.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f496.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f496.xml new file mode 100644 index 0000000..d143621 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f496.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f497.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f497.xml new file mode 100644 index 0000000..16881f7 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f497.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f498.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f498.xml new file mode 100644 index 0000000..8efd434 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f498.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f499.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f499.xml new file mode 100644 index 0000000..59c6439 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f499.xml @@ -0,0 +1,25 @@ + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f49a.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f49a.xml new file mode 100644 index 0000000..616180e --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f49a.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f49b.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f49b.xml new file mode 100644 index 0000000..a38fa68 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f49b.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f49c.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f49c.xml new file mode 100644 index 0000000..df198d3 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f49c.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f49d.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f49d.xml new file mode 100644 index 0000000..a3d616c --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f49d.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f49e.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f49e.xml new file mode 100644 index 0000000..2601db2 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f49e.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f4ab.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f4ab.xml new file mode 100644 index 0000000..4d2da01 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f4ab.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f4ae.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f4ae.xml new file mode 100644 index 0000000..b01cde7 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f4ae.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f550.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f550.xml new file mode 100644 index 0000000..02e453f --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f550.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f551.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f551.xml new file mode 100644 index 0000000..f821b4c --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f551.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f552.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f552.xml new file mode 100644 index 0000000..ad8e145 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f552.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f553.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f553.xml new file mode 100644 index 0000000..8f606c4 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f553.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f554.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f554.xml new file mode 100644 index 0000000..d82c00f --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f554.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f555.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f555.xml new file mode 100644 index 0000000..b228073 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f555.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f556.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f556.xml new file mode 100644 index 0000000..dce3be9 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f556.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f557.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f557.xml new file mode 100644 index 0000000..142e03a --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f557.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f558.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f558.xml new file mode 100644 index 0000000..b9ac18b --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f558.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f559.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f559.xml new file mode 100644 index 0000000..77728bf --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f559.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f55a.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f55a.xml new file mode 100644 index 0000000..68418b3 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f55a.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f55b.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f55b.xml new file mode 100644 index 0000000..dab273b --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f55b.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f55c.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f55c.xml new file mode 100644 index 0000000..542371c --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f55c.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f55d.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f55d.xml new file mode 100644 index 0000000..8b6c860 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f55d.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f55e.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f55e.xml new file mode 100644 index 0000000..ae1b114 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f55e.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f55f.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f55f.xml new file mode 100644 index 0000000..0e2cb58 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f55f.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f560.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f560.xml new file mode 100644 index 0000000..6af0066 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f560.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f561.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f561.xml new file mode 100644 index 0000000..7a49cab --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f561.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f562.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f562.xml new file mode 100644 index 0000000..67f5c27 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f562.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f563.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f563.xml new file mode 100644 index 0000000..14522ed --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f563.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f564.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f564.xml new file mode 100644 index 0000000..0bcaf91 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f564.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f565.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f565.xml new file mode 100644 index 0000000..cf517e6 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f565.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f566.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f566.xml new file mode 100644 index 0000000..bb37179 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f566.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f567.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f567.xml new file mode 100644 index 0000000..eb47586 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f567.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f5a4.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f5a4.xml new file mode 100644 index 0000000..bc16e14 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f5a4.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f600.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f600.xml new file mode 100644 index 0000000..38c8e27 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f600.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f601.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f601.xml new file mode 100644 index 0000000..3960a64 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f601.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f602.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f602.xml new file mode 100644 index 0000000..50b5887 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f602.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f603.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f603.xml new file mode 100644 index 0000000..e4efb21 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f603.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f604.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f604.xml new file mode 100644 index 0000000..71c9135 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f604.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f605.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f605.xml new file mode 100644 index 0000000..2aad9b7 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f605.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f606.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f606.xml new file mode 100644 index 0000000..1aff32e --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f606.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f607.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f607.xml new file mode 100644 index 0000000..8d0e229 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f607.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f609.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f609.xml new file mode 100644 index 0000000..545e63d --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f609.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f60a.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f60a.xml new file mode 100644 index 0000000..1923f61 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f60a.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f60b.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f60b.xml new file mode 100644 index 0000000..06e51de --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f60b.xml @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f60c.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f60c.xml new file mode 100644 index 0000000..e21b8ea --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f60c.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f60d.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f60d.xml new file mode 100644 index 0000000..9e8c225 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f60d.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f60f.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f60f.xml new file mode 100644 index 0000000..c2c8e83 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f60f.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f610.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f610.xml new file mode 100644 index 0000000..f4ef33a --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f610.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f611.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f611.xml new file mode 100644 index 0000000..a1fe9ca --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f611.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f612.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f612.xml new file mode 100644 index 0000000..dd7bbc2 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f612.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f614.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f614.xml new file mode 100644 index 0000000..a63e89d --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f614.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f617.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f617.xml new file mode 100644 index 0000000..85824ed --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f617.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f618.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f618.xml new file mode 100644 index 0000000..01a7574 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f618.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f619.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f619.xml new file mode 100644 index 0000000..905462d --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f619.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f61a.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f61a.xml new file mode 100644 index 0000000..2104216 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f61a.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f61b.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f61b.xml new file mode 100644 index 0000000..466dac4 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f61b.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f61c.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f61c.xml new file mode 100644 index 0000000..fc9f383 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f61c.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f61d.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f61d.xml new file mode 100644 index 0000000..931c0e3 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f61d.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f62a.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f62a.xml new file mode 100644 index 0000000..4da1302 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f62a.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f62c.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f62c.xml new file mode 100644 index 0000000..2022c19 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f62c.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f634.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f634.xml new file mode 100644 index 0000000..dbbc04c --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f634.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f636.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f636.xml new file mode 100644 index 0000000..863c8b1 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f636.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f637.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f637.xml new file mode 100644 index 0000000..1d5e88f --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f637.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f638.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f638.xml new file mode 100644 index 0000000..176e63d --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f638.xml @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f639.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f639.xml new file mode 100644 index 0000000..002e36a --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f639.xml @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f63a.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f63a.xml new file mode 100644 index 0000000..c428106 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f63a.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f63b.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f63b.xml new file mode 100644 index 0000000..eba2d8c --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f63b.xml @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f63c.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f63c.xml new file mode 100644 index 0000000..a23a2ce --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f63c.xml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f63d.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f63d.xml new file mode 100644 index 0000000..8d44bdc --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f63d.xml @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f63e.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f63e.xml new file mode 100644 index 0000000..0b062c7 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f63e.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f63f.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f63f.xml new file mode 100644 index 0000000..9f92582 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f63f.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f640.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f640.xml new file mode 100644 index 0000000..e7304bf --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f640.xml @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f642.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f642.xml new file mode 100644 index 0000000..91b6262 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f642.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f643.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f643.xml new file mode 100644 index 0000000..5a16f3b --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f643.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f644.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f644.xml new file mode 100644 index 0000000..72bbff1 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f644.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f648.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f648.xml new file mode 100644 index 0000000..9892e58 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f648.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f649.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f649.xml new file mode 100644 index 0000000..3b3be7b --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f649.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f64a.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f64a.xml new file mode 100644 index 0000000..15c41da --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f64a.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f680.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f680.xml new file mode 100644 index 0000000..faefaac --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f680.xml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f6f8.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f6f8.xml new file mode 100644 index 0000000..e3bd63a --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f6f8.xml @@ -0,0 +1,187 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f90d.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f90d.xml new file mode 100644 index 0000000..721cf50 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f90d.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f90e.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f90e.xml new file mode 100644 index 0000000..4cc39e7 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f90e.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f910.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f910.xml new file mode 100644 index 0000000..8c41f1a --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f910.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f911.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f911.xml new file mode 100644 index 0000000..ff0e855 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f911.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f914.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f914.xml new file mode 100644 index 0000000..c846373 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f914.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f917.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f917.xml new file mode 100644 index 0000000..8f6a453 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f917.xml @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f923.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f923.xml new file mode 100644 index 0000000..5dc4eaa --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f923.xml @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f924.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f924.xml new file mode 100644 index 0000000..e0b54c2 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f924.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f925.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f925.xml new file mode 100644 index 0000000..04b0a17 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f925.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f928.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f928.xml new file mode 100644 index 0000000..a5bd206 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f928.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f929.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f929.xml new file mode 100644 index 0000000..7e42685 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f929.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f92a.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f92a.xml new file mode 100644 index 0000000..0eb1047 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f92a.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f92b.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f92b.xml new file mode 100644 index 0000000..9af42e2 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f92b.xml @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f92d.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f92d.xml new file mode 100644 index 0000000..7be96b9 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f92d.xml @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f95d.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f95d.xml new file mode 100644 index 0000000..4f2eef1 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f95d.xml @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f96d.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f96d.xml new file mode 100644 index 0000000..e7c22cb --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f96d.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f970.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f970.xml new file mode 100644 index 0000000..811b564 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f970.xml @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f972.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f972.xml new file mode 100644 index 0000000..ff3f8d1 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f972.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f973.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f973.xml new file mode 100644 index 0000000..121cae9 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f973.xml @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f979.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f979.xml new file mode 100644 index 0000000..385d6c1 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f979.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f980.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f980.xml new file mode 100644 index 0000000..67a9ab3 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f980.xml @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f988.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f988.xml new file mode 100644 index 0000000..f1ed538 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f988.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f990.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f990.xml new file mode 100644 index 0000000..32124d1 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f990.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f991.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f991.xml new file mode 100644 index 0000000..e7736dd --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f991.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f99e.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f99e.xml new file mode 100644 index 0000000..3fb8e15 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f99e.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1f9e1.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1f9e1.xml new file mode 100644 index 0000000..b77cc2d --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1f9e1.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1fa90.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1fa90.xml new file mode 100644 index 0000000..d788a31 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1fa90.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1fab8.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1fab8.xml new file mode 100644 index 0000000..8200b3d --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1fab8.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1fad0.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1fad0.xml new file mode 100644 index 0000000..304ffc0 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1fad0.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1fae0.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1fae0.xml new file mode 100644 index 0000000..6292fe3 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1fae0.xml @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1fae1.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1fae1.xml new file mode 100644 index 0000000..9538750 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1fae1.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1fae2.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1fae2.xml new file mode 100644 index 0000000..2e251ac --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1fae2.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1fae3.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1fae3.xml new file mode 100644 index 0000000..bad2d3e --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1fae3.xml @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1fae5.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1fae5.xml new file mode 100644 index 0000000..a280dcd --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1fae5.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1fae6.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1fae6.xml new file mode 100644 index 0000000..549bd97 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1fae6.xml @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u1fae7.xml b/app/src/main/res/drawable-anydpi/t_emoji_u1fae7.xml new file mode 100644 index 0000000..ee5793b --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u1fae7.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u263a.xml b/app/src/main/res/drawable-anydpi/t_emoji_u263a.xml new file mode 100644 index 0000000..9a9b1de --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u263a.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u2648.xml b/app/src/main/res/drawable-anydpi/t_emoji_u2648.xml new file mode 100644 index 0000000..aac3db0 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u2648.xml @@ -0,0 +1,25 @@ + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u2649.xml b/app/src/main/res/drawable-anydpi/t_emoji_u2649.xml new file mode 100644 index 0000000..63b33b1 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u2649.xml @@ -0,0 +1,20 @@ + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u264a.xml b/app/src/main/res/drawable-anydpi/t_emoji_u264a.xml new file mode 100644 index 0000000..eb49132 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u264a.xml @@ -0,0 +1,25 @@ + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u264b.xml b/app/src/main/res/drawable-anydpi/t_emoji_u264b.xml new file mode 100644 index 0000000..cfab51a --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u264b.xml @@ -0,0 +1,28 @@ + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u264c.xml b/app/src/main/res/drawable-anydpi/t_emoji_u264c.xml new file mode 100644 index 0000000..888a11b --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u264c.xml @@ -0,0 +1,20 @@ + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u264d.xml b/app/src/main/res/drawable-anydpi/t_emoji_u264d.xml new file mode 100644 index 0000000..4f27be6 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u264d.xml @@ -0,0 +1,25 @@ + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u264e.xml b/app/src/main/res/drawable-anydpi/t_emoji_u264e.xml new file mode 100644 index 0000000..3efb297 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u264e.xml @@ -0,0 +1,23 @@ + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u264f.xml b/app/src/main/res/drawable-anydpi/t_emoji_u264f.xml new file mode 100644 index 0000000..9535477 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u264f.xml @@ -0,0 +1,23 @@ + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u2650.xml b/app/src/main/res/drawable-anydpi/t_emoji_u2650.xml new file mode 100644 index 0000000..0f81c83 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u2650.xml @@ -0,0 +1,20 @@ + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u2651.xml b/app/src/main/res/drawable-anydpi/t_emoji_u2651.xml new file mode 100644 index 0000000..c1a7965 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u2651.xml @@ -0,0 +1,30 @@ + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u2652.xml b/app/src/main/res/drawable-anydpi/t_emoji_u2652.xml new file mode 100644 index 0000000..9996c72 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u2652.xml @@ -0,0 +1,23 @@ + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u2653.xml b/app/src/main/res/drawable-anydpi/t_emoji_u2653.xml new file mode 100644 index 0000000..145db79 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u2653.xml @@ -0,0 +1,25 @@ + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u2728.xml b/app/src/main/res/drawable-anydpi/t_emoji_u2728.xml new file mode 100644 index 0000000..7433c03 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u2728.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u2763.xml b/app/src/main/res/drawable-anydpi/t_emoji_u2763.xml new file mode 100644 index 0000000..a427c89 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u2763.xml @@ -0,0 +1,27 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u2764.xml b/app/src/main/res/drawable-anydpi/t_emoji_u2764.xml new file mode 100644 index 0000000..75c0474 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u2764.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/t_emoji_u2b50.xml b/app/src/main/res/drawable-anydpi/t_emoji_u2b50.xml new file mode 100644 index 0000000..b24574a --- /dev/null +++ b/app/src/main/res/drawable-anydpi/t_emoji_u2b50.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..07d5da9 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/t_platlogo.xml b/app/src/main/res/drawable/t_platlogo.xml new file mode 100644 index 0000000..28c09d6 --- /dev/null +++ b/app/src/main/res/drawable/t_platlogo.xml @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..6f3b755 --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..6f3b755 --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000..c209e78 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000..b2dfe3d Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000..4f0f1d6 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 0000000..62b611d Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000..948a307 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..1b9a695 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 0000000..28d4b77 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..9287f50 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 0000000..aa7d642 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..9126ae3 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml new file mode 100644 index 0000000..aac8765 --- /dev/null +++ b/app/src/main/res/values-night/themes.xml @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..ed82ccb --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,23 @@ + + + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + #FF000000 + #FFFFFFFF + + #219BCC + #074C67 + #003549 + + #667984 + + #787296 + #352B4D + + #E2E2E2 + #C5C7C9 + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..5d52f52 --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + EasterScrSaver + \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..0f55c7e --- /dev/null +++ b/app/src/main/res/values/themes.xml @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/xml/backup_rules.xml b/app/src/main/res/xml/backup_rules.xml new file mode 100644 index 0000000..fa0f996 --- /dev/null +++ b/app/src/main/res/xml/backup_rules.xml @@ -0,0 +1,13 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/xml/data_extraction_rules.xml b/app/src/main/res/xml/data_extraction_rules.xml new file mode 100644 index 0000000..9ee9997 --- /dev/null +++ b/app/src/main/res/xml/data_extraction_rules.xml @@ -0,0 +1,19 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/test/java/cc/jerryxiao/easterscrsaver/ExampleUnitTest.java b/app/src/test/java/cc/jerryxiao/easterscrsaver/ExampleUnitTest.java new file mode 100644 index 0000000..975ced1 --- /dev/null +++ b/app/src/test/java/cc/jerryxiao/easterscrsaver/ExampleUnitTest.java @@ -0,0 +1,17 @@ +package cc.jerryxiao.easterscrsaver; + +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * Example local unit test, which will execute on the development machine (host). + * + * @see Testing documentation + */ +public class ExampleUnitTest { + @Test + public void addition_isCorrect() { + assertEquals(4, 2 + 2); + } +} \ No newline at end of file diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..2893c5f --- /dev/null +++ b/build.gradle @@ -0,0 +1,6 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +plugins { + id 'com.android.application' version '8.0.2' apply false + id 'com.android.library' version '8.0.2' apply false + id 'org.jetbrains.kotlin.android' version '1.9.0' apply false +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..3e927b1 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,21 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app's APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true +# Enables namespacing of each library's R class so that its R class includes only the +# resources declared in the library itself and none from the library's dependencies, +# thereby reducing the size of the R class for that library +android.nonTransitiveRClass=true \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..e708b1c Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..a2c8067 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Mon Aug 14 15:20:09 CST 2023 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..4f906e0 --- /dev/null +++ b/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..ac1b06f --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..fc5973f --- /dev/null +++ b/settings.gradle @@ -0,0 +1,16 @@ +pluginManagement { + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + } +} +rootProject.name = "EasterScrSaver" +include ':app'