Initial commit
|
@ -0,0 +1,2 @@
|
|||
# Auto detect text files and perform LF normalization
|
||||
* text=auto
|
|
@ -0,0 +1,32 @@
|
|||
---
|
||||
name: 'Android Basics: Lemonade app'
|
||||
about: Describe this issue template's purpose here.
|
||||
title: 'Android Basics: Lemonade app'
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**URL of codelab**
|
||||
|
||||
|
||||
**In which task and step of the codelab can this issue be found?**
|
||||
|
||||
|
||||
**Describe the problem**
|
||||
|
||||
|
||||
|
||||
|
||||
**Steps to reproduce?**
|
||||
1. Go to...
|
||||
2. Click on...
|
||||
3. See error...
|
||||
|
||||
**Versions**
|
||||
_Android Studio version:_
|
||||
_API version of the emulator:_
|
||||
|
||||
|
||||
**Additional information**
|
||||
_Include screenshots if they would be useful in clarifying the problem._
|
|
@ -0,0 +1,30 @@
|
|||
# Gradle files
|
||||
.gradle/
|
||||
build/
|
||||
|
||||
# Local configuration file (sdk path, etc)
|
||||
local.properties
|
||||
|
||||
# Log/OS Files
|
||||
*.log
|
||||
|
||||
# Android Studio generated files and folders
|
||||
captures/
|
||||
.externalNativeBuild/
|
||||
.cxx/
|
||||
*.apk
|
||||
output.json
|
||||
|
||||
# IntelliJ
|
||||
*.iml
|
||||
.idea/
|
||||
|
||||
# Keystore files
|
||||
*.jks
|
||||
*.keystore
|
||||
|
||||
# Google Services (e.g. APIs or Firebase)
|
||||
google-services.json
|
||||
|
||||
# Android Profiling
|
||||
*.hprof
|
|
@ -0,0 +1,29 @@
|
|||
# How to Contribute
|
||||
|
||||
We'd love to accept your patches and contributions to this project. There are
|
||||
just a few small guidelines you need to follow.
|
||||
|
||||
## Contributor License Agreement
|
||||
|
||||
Contributions to this project must be accompanied by a Contributor License
|
||||
Agreement (CLA). You (or your employer) retain the copyright to your
|
||||
contribution; this simply gives us permission to use and redistribute your
|
||||
contributions as part of the project. Head over to
|
||||
<https://cla.developers.google.com/> to see your current agreements on file or
|
||||
to sign a new one.
|
||||
|
||||
You generally only need to submit a CLA once, so if you've already submitted one
|
||||
(even if it was for a different project), you probably don't need to do it
|
||||
again.
|
||||
|
||||
## Code reviews
|
||||
|
||||
All submissions, including submissions by project members, require review. We
|
||||
use GitHub pull requests for this purpose. Consult
|
||||
[GitHub Help](https://help.github.com/articles/about-pull-requests/) for more
|
||||
information on using pull requests.
|
||||
|
||||
## Community Guidelines
|
||||
|
||||
This project follows
|
||||
[Google's Open Source Community Guidelines](https://opensource.google/conduct/).
|
|
@ -0,0 +1,201 @@
|
|||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
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
|
||||
|
||||
http://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.
|
|
@ -0,0 +1,27 @@
|
|||
Project: Lemonade App - Starter Code
|
||||
==================================
|
||||
|
||||
Starter code for the first independent project for [Android Basics in Kotlin](https://developer.android.com/courses/android-basics-kotlin/course)
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
This is the starter code for the Lemonade app project in the [final pathway](https://developer.android.com/courses/pathways/android-basics-kotlin-four) of Android Basics [Unit 1](https://developer.android.com/courses/android-basics-kotlin/unit-1). This project is an opportunity for you to demonstrate the concepts you learned in the unit.
|
||||
|
||||
Pre-requisites
|
||||
--------------
|
||||
|
||||
- Complete [Unit 1](https://developer.android.com/courses/android-basics-kotlin/unit-1) of Android Basics in Kotlin
|
||||
|
||||
Getting Started
|
||||
---------------
|
||||
|
||||
1. Download the starter code
|
||||
2. Open the project in Android Studio
|
||||
3. Complete the project in accordance with the [project instructions](https://developer.android.com/codelabs/basic-android-kotlin-training-project-lemonade)
|
||||
|
||||
Tips
|
||||
----
|
||||
|
||||
- Use the provided tests to ensure your app is running as expected
|
||||
- DO NOT ALTER THE PROVIDED TESTS
|
|
@ -0,0 +1 @@
|
|||
/build
|
|
@ -0,0 +1,61 @@
|
|||
/*
|
||||
* Copyright (C) 2021 The Android Open Source Project.
|
||||
*
|
||||
* 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
|
||||
*
|
||||
* http://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.
|
||||
*/
|
||||
plugins {
|
||||
id 'com.android.application'
|
||||
id 'kotlin-android'
|
||||
}
|
||||
|
||||
android {
|
||||
compileSdkVersion 30
|
||||
buildToolsVersion "30.0.3"
|
||||
|
||||
defaultConfig {
|
||||
applicationId "com.example.lemonade"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 30
|
||||
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_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
kotlinOptions {
|
||||
jvmTarget = '1.8'
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
||||
implementation 'androidx.core:core-ktx:1.6.0'
|
||||
implementation 'androidx.appcompat:appcompat:1.3.1'
|
||||
implementation 'com.google.android.material:material:1.4.0'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
|
||||
testImplementation 'junit:junit:4.13.2'
|
||||
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
|
||||
androidTestImplementation "androidx.test:core-ktx:1.4.0"
|
||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
|
||||
}
|
|
@ -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
|
|
@ -0,0 +1,157 @@
|
|||
/*
|
||||
* Copyright (C) 2021 The Android Open Source Project.
|
||||
*
|
||||
* 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
|
||||
*
|
||||
* http://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.
|
||||
*/
|
||||
package com.example.lemonade
|
||||
|
||||
import android.graphics.Bitmap
|
||||
import android.graphics.Canvas
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.view.View
|
||||
import android.widget.ImageView
|
||||
import androidx.annotation.DrawableRes
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.test.espresso.Espresso.onView
|
||||
import androidx.test.espresso.NoMatchingViewException
|
||||
import androidx.test.espresso.ViewInteraction
|
||||
import androidx.test.espresso.action.ViewActions.click
|
||||
import androidx.test.espresso.assertion.ViewAssertions.matches
|
||||
import androidx.test.espresso.matcher.BoundedMatcher
|
||||
import androidx.test.espresso.matcher.ViewMatchers
|
||||
import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
|
||||
import androidx.test.espresso.matcher.ViewMatchers.withId
|
||||
import androidx.test.ext.junit.rules.ActivityScenarioRule
|
||||
import com.example.lemonade.DrawableMatcher.withDrawable
|
||||
import org.hamcrest.Description
|
||||
import org.hamcrest.Matcher
|
||||
import org.junit.Rule
|
||||
|
||||
/**
|
||||
* The lemonade app is effectively a state machine.
|
||||
* In order to avoid stateful tests (tests that rely on previous tests),
|
||||
* these utility methods move states and reduce code duplication.
|
||||
* This class is meant to be inherited by the @Test methods to leverage these methods.
|
||||
*/
|
||||
open class BaseTest {
|
||||
|
||||
/**
|
||||
* Test to ensure the app is in the correct state.
|
||||
* @param textActionResource Integer for the expected text resource.
|
||||
* @param drawableResource Integer for the expected drawable resource.
|
||||
*/
|
||||
fun testState(textActionResource: Int, drawableResource: Int) {
|
||||
onView(withId(R.id.text_action))
|
||||
.check(matches(ViewMatchers.withText(textActionResource)))
|
||||
onView(withId(R.id.image_lemon_state)).check(
|
||||
matches(withDrawable(drawableResource)))
|
||||
}
|
||||
|
||||
/**
|
||||
* Clicks the lemon tree image.
|
||||
*/
|
||||
fun pickLemon() {
|
||||
onView(withDrawable(R.drawable.lemon_tree))
|
||||
.perform(click())
|
||||
}
|
||||
|
||||
/**
|
||||
* Squeeze the lemon until the lemon image is gone.
|
||||
* The number of clicks required is determined by a random number that the test is not
|
||||
* aware of, so we loop and click until the image changes.
|
||||
*/
|
||||
fun juiceLemon() {
|
||||
while (onView(withDrawable(R.drawable.lemon_squeeze)).isPresent()) {
|
||||
onView(withId(R.id.image_lemon_state)).perform(click())
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Click the lemonade image.
|
||||
*/
|
||||
fun drinkJuice() {
|
||||
onView(withDrawable(R.drawable.lemon_drink))
|
||||
.perform(click())
|
||||
}
|
||||
|
||||
/**
|
||||
* Click the empty glass image to restart.
|
||||
*/
|
||||
fun restart() {
|
||||
onView(withDrawable(R.drawable.lemon_restart))
|
||||
.perform(click())
|
||||
}
|
||||
|
||||
/**
|
||||
* Extension function to determine if element is present.
|
||||
* This is used to click the lemon image until it changes because the number of clicks
|
||||
* required is determined by a random number that the test doesn't know about.
|
||||
*/
|
||||
private fun ViewInteraction.isPresent(): Boolean {
|
||||
return try {
|
||||
check(matches(isDisplayed()))
|
||||
true
|
||||
} catch (e: NoMatchingViewException) {
|
||||
false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Custom matcher to find drawable.
|
||||
*/
|
||||
object DrawableMatcher {
|
||||
|
||||
fun withDrawable(@DrawableRes resourceId: Int): Matcher<View> {
|
||||
return object : BoundedMatcher<View, ImageView>(ImageView::class.java) {
|
||||
override fun describeTo(description: Description?) {
|
||||
description!!.appendText("has drawable resource $resourceId")
|
||||
}
|
||||
|
||||
override fun matchesSafely(imageView: ImageView): Boolean {
|
||||
return isSameBitmap(imageView, imageView.drawable, resourceId)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun isSameBitmap(item: View, drawable: Drawable?, expectedResId: Int): Boolean {
|
||||
val image = item as ImageView
|
||||
if (expectedResId < 0) {
|
||||
return image.drawable == null
|
||||
}
|
||||
val expectedDrawable: Drawable? = ContextCompat.getDrawable(item.context, expectedResId)
|
||||
if (drawable == null || expectedDrawable == null) {
|
||||
return false
|
||||
}
|
||||
// Make tint consistent just in case they differ
|
||||
val bitmap = getBitmap(drawable)
|
||||
val expectedBitmap = getBitmap(expectedDrawable)
|
||||
return bitmap.sameAs(expectedBitmap)
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert vector drawable to bitmap
|
||||
* @param drawable vector drawable
|
||||
*/
|
||||
private fun getBitmap(drawable: Drawable): Bitmap {
|
||||
val bitmap = Bitmap.createBitmap(
|
||||
drawable.intrinsicWidth,
|
||||
drawable.intrinsicHeight,
|
||||
Bitmap.Config.ARGB_8888
|
||||
)
|
||||
val canvas = Canvas(bitmap)
|
||||
drawable.setBounds(0, 0, canvas.width, canvas.height)
|
||||
drawable.draw(canvas)
|
||||
return bitmap
|
||||
}
|
||||
}
|
|
@ -0,0 +1,114 @@
|
|||
/*
|
||||
* Copyright (C) 2021 The Android Open Source Project.
|
||||
*
|
||||
* 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
|
||||
*
|
||||
* http://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.
|
||||
*/
|
||||
package com.example.lemonade
|
||||
|
||||
import androidx.test.core.app.launchActivity
|
||||
import androidx.test.espresso.Espresso.onView
|
||||
import androidx.test.espresso.action.ViewActions.click
|
||||
import androidx.test.espresso.action.ViewActions.longClick
|
||||
import androidx.test.espresso.assertion.ViewAssertions.matches
|
||||
import androidx.test.espresso.matcher.ViewMatchers.withId
|
||||
import androidx.test.espresso.matcher.ViewMatchers.withText
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import androidx.test.filters.LargeTest
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
|
||||
/**
|
||||
* Instrumentation tests to be run on a physical device or emulator.
|
||||
*/
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
@LargeTest
|
||||
class LemonadeTests : BaseTest() {
|
||||
|
||||
@Before
|
||||
fun setup() {
|
||||
launchActivity<MainActivity>()
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the view components of the pick lemon state
|
||||
*/
|
||||
@Test
|
||||
fun `test_initial_state`() {
|
||||
testState(R.string.lemon_select, R.drawable.lemon_tree)
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that the pick lemon functionality takes us to the "squeeze state"
|
||||
*/
|
||||
@Test
|
||||
fun `test_picking_lemon_proceeds_to_squeeze_state`() {
|
||||
// Click image to progress state
|
||||
onView(withId(R.id.image_lemon_state)).perform(click())
|
||||
testState(R.string.lemon_squeeze, R.drawable.lemon_squeeze)
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that the squeeze functionality takes us to the "drink state"
|
||||
*/
|
||||
@Test
|
||||
fun `test_squeezing_lemon_proceeds_to_drink_state`() {
|
||||
// Click image to progress state
|
||||
onView(withId(R.id.image_lemon_state)).perform(click())
|
||||
juiceLemon()
|
||||
testState(R.string.lemon_drink, R.drawable.lemon_drink)
|
||||
}
|
||||
|
||||
/**
|
||||
* Test squeeze count snackbar
|
||||
*/
|
||||
@Test
|
||||
fun `test_squeeze_count_snackbar_is_displayed`() {
|
||||
// Click image to progress state
|
||||
onView(withId(R.id.image_lemon_state)).perform(click())
|
||||
// Click image to progress state
|
||||
onView(withId(R.id.image_lemon_state)).perform(click())
|
||||
// Click image to progress state
|
||||
onView(withId(R.id.image_lemon_state)).perform(longClick())
|
||||
onView(withId(com.google.android.material.R.id.snackbar_text))
|
||||
.check(matches(withText("Squeeze count: 1, keep squeezing!")))
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that the drink functionality takes us to the "restart state"
|
||||
*/
|
||||
@Test
|
||||
fun `test_drinking_juice_proceeds_to_restart_state`() {
|
||||
// Click image to progress state
|
||||
onView(withId(R.id.image_lemon_state)).perform(click())
|
||||
juiceLemon()
|
||||
onView(withId(R.id.image_lemon_state)).perform(click())
|
||||
// Click image to progress state
|
||||
testState(R.string.lemon_empty_glass, R.drawable.lemon_restart)
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that the restart functionality takes us back to the "pick lemon state"
|
||||
*/
|
||||
@Test
|
||||
fun `test_restarting_proceeds_to_pick_lemon_state`() {
|
||||
// Click image to progress state
|
||||
onView(withId(R.id.image_lemon_state)).perform(click())
|
||||
juiceLemon()
|
||||
// Click image to progress state
|
||||
onView(withId(R.id.image_lemon_state)).perform(click())
|
||||
// Click image to progress state
|
||||
onView(withId(R.id.image_lemon_state)).perform(click())
|
||||
testState(R.string.lemon_select, R.drawable.lemon_tree)
|
||||
}
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
~ Copyright (C) 2021 The Android Open Source Project.
|
||||
~
|
||||
~ 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
|
||||
~
|
||||
~ http://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.
|
||||
-->
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.example.lemonade">
|
||||
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
android:icon="@mipmap/ic_launcher_lemonade"
|
||||
android:label="@string/app_name"
|
||||
android:roundIcon="@mipmap/ic_launcher_lemonade_round"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/Theme.Lemonade">
|
||||
<activity android:name=".MainActivity">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
</application>
|
||||
|
||||
</manifest>
|
После Ширина: | Высота: | Размер: 29 KiB |
|
@ -0,0 +1,198 @@
|
|||
/*
|
||||
* Copyright (C) 2021 The Android Open Source Project.
|
||||
*
|
||||
* 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
|
||||
*
|
||||
* http://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.
|
||||
*/
|
||||
package com.example.lemonade
|
||||
|
||||
import android.os.Bundle
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
|
||||
class MainActivity : AppCompatActivity() {
|
||||
|
||||
/**
|
||||
* DO NOT ALTER ANY VARIABLE OR VALUE NAMES OR THEIR INITIAL VALUES.
|
||||
*
|
||||
* Anything labeled var instead of val is expected to be changed in the functions but DO NOT
|
||||
* alter their initial values declared here, this could cause the app to not function properly.
|
||||
*/
|
||||
private val LEMONADE_STATE = "LEMONADE_STATE"
|
||||
private val LEMON_SIZE = "LEMON_SIZE"
|
||||
private val SQUEEZE_COUNT = "SQUEEZE_COUNT"
|
||||
// SELECT represents the "pick lemon" state
|
||||
private val SELECT = "select"
|
||||
// SQUEEZE represents the "squeeze lemon" state
|
||||
private val SQUEEZE = "squeeze"
|
||||
// DRINK represents the "drink lemonade" state
|
||||
private val DRINK = "drink"
|
||||
// RESTART represents the state where the lemonade has been drunk and the glass is empty
|
||||
private val RESTART = "restart"
|
||||
// Default the state to select
|
||||
private var lemonadeState = "select"
|
||||
// Default lemonSize to -1
|
||||
private var lemonSize = -1
|
||||
// Default the squeezeCount to -1
|
||||
private var squeezeCount = -1
|
||||
|
||||
private var lemonTree = LemonTree()
|
||||
private var lemonImage: ImageView? = null
|
||||
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_main)
|
||||
|
||||
// === DO NOT ALTER THE CODE IN THE FOLLOWING IF STATEMENT ===
|
||||
if (savedInstanceState != null) {
|
||||
lemonadeState = savedInstanceState.getString(LEMONADE_STATE, "select")
|
||||
lemonSize = savedInstanceState.getInt(LEMON_SIZE, -1)
|
||||
squeezeCount = savedInstanceState.getInt(SQUEEZE_COUNT, -1)
|
||||
}
|
||||
// === END IF STATEMENT ===
|
||||
|
||||
lemonImage = findViewById(R.id.image_lemon_state)
|
||||
setViewElements()
|
||||
lemonImage!!.setOnClickListener {
|
||||
// TODO: call the method that handles the state when the image is clicked
|
||||
clickLemonImage()
|
||||
}
|
||||
lemonImage!!.setOnLongClickListener {
|
||||
// TODO: replace 'false' with a call to the function that shows the squeeze count
|
||||
showSnackbar()//false
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* === DO NOT ALTER THIS METHOD ===
|
||||
*
|
||||
* This method saves the state of the app if it is put in the background.
|
||||
*/
|
||||
override fun onSaveInstanceState(outState: Bundle) {
|
||||
outState.putString(LEMONADE_STATE, lemonadeState)
|
||||
outState.putInt(LEMON_SIZE, lemonSize)
|
||||
outState.putInt(SQUEEZE_COUNT, squeezeCount)
|
||||
super.onSaveInstanceState(outState)
|
||||
}
|
||||
|
||||
/**
|
||||
* Clicking will elicit a different response depending on the state.
|
||||
* This method determines the state and proceeds with the correct action.
|
||||
*/
|
||||
private fun clickLemonImage() {
|
||||
// TODO: use a conditional statement like 'if' or 'when' to track the lemonadeState
|
||||
// when the image is clicked we may need to change state to the next step in the
|
||||
// lemonade making progression (or at least make some changes to the current state in the
|
||||
// case of squeezing the lemon). That should be done in this conditional statement
|
||||
when (lemonadeState) {
|
||||
|
||||
// TODO: When the image is clicked in the SELECT state, the state should become SQUEEZE
|
||||
SELECT -> {
|
||||
lemonadeState = SQUEEZE
|
||||
// - The lemonSize variable needs to be set using the 'pick()' method in the LemonTree class
|
||||
lemonSize = lemonTree.pick()
|
||||
// - The squeezeCount should be 0 since we haven't squeezed any lemons just yet.
|
||||
squeezeCount = 0
|
||||
}
|
||||
|
||||
// TODO: When the image is clicked in the SQUEEZE state the squeezeCount needs to be
|
||||
SQUEEZE -> {
|
||||
// INCREASED by 1 and lemonSize needs to be DECREASED by 1.
|
||||
squeezeCount++
|
||||
lemonSize--
|
||||
// - If the lemonSize has reached 0, it has been juiced and the state should become DRINK
|
||||
if (lemonSize == 0) {
|
||||
lemonadeState = DRINK
|
||||
// - Additionally, lemonSize is no longer relevant and should be set to -1
|
||||
lemonSize = -1
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: When the image is clicked in the DRINK state the state should become RESTART
|
||||
DRINK -> {
|
||||
lemonadeState = RESTART
|
||||
lemonSize = -1
|
||||
}
|
||||
|
||||
// TODO: When the image is clicked in the RESTART state the state should become SELECT
|
||||
RESTART -> lemonadeState = SELECT
|
||||
|
||||
}
|
||||
// TODO: lastly, before the function terminates we need to set the view elements so that the
|
||||
// UI can reflect the correct state
|
||||
setViewElements()
|
||||
}
|
||||
|
||||
/**
|
||||
* Set up the view elements according to the state.
|
||||
*/
|
||||
private fun setViewElements() {
|
||||
val textAction: TextView = findViewById(R.id.text_action)
|
||||
|
||||
// TODO: set up a conditional that tracks the lemonadeState
|
||||
when (lemonadeState){
|
||||
SELECT -> {
|
||||
// TODO: for each state, the textAction TextView should be set to the corresponding string from
|
||||
// the string resources file. The strings are named to match the state
|
||||
textAction.setText(R.string.lemon_select)
|
||||
// TODO: Additionally, for each state, the lemonImage should be set to the corresponding
|
||||
// drawable from the drawable resources. The drawables have the same names as the strings
|
||||
// but remember that they are drawables, not strings.
|
||||
lemonImage?.setImageResource(R.drawable.lemon_tree)
|
||||
}
|
||||
SQUEEZE -> {
|
||||
textAction.setText(R.string.lemon_squeeze)
|
||||
lemonImage?.setImageResource(R.drawable.lemon_squeeze)
|
||||
}
|
||||
DRINK -> {
|
||||
textAction.setText(R.string.lemon_drink)
|
||||
lemonImage?.setImageResource(R.drawable.lemon_drink)
|
||||
}
|
||||
RESTART -> {
|
||||
textAction.setText(R.string.lemon_empty_glass)
|
||||
lemonImage?.setImageResource(R.drawable.lemon_restart)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* === DO NOT ALTER THIS METHOD ===
|
||||
*
|
||||
* Long clicking the lemon image will show how many times the lemon has been squeezed.
|
||||
*/
|
||||
private fun showSnackbar(): Boolean {
|
||||
if (lemonadeState != SQUEEZE) {
|
||||
return false
|
||||
}
|
||||
val squeezeText = getString(R.string.squeeze_count, squeezeCount)
|
||||
Snackbar.make(
|
||||
findViewById(R.id.constraint_Layout),
|
||||
squeezeText,
|
||||
Snackbar.LENGTH_SHORT
|
||||
).show()
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A Lemon tree class with a method to "pick" a lemon. The "size" of the lemon is randomized
|
||||
* and determines how many times a lemon needs to be squeezed before you get lemonade.
|
||||
*/
|
||||
class LemonTree {
|
||||
fun pick(): Int {
|
||||
return (2..4).random()
|
||||
}
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
<!--
|
||||
~ Copyright (C) 2021 The Android Open Source Project.
|
||||
~
|
||||
~ 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
|
||||
~
|
||||
~ http://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.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="108dp"
|
||||
android:height="108dp"
|
||||
android:viewportWidth="108"
|
||||
android:viewportHeight="108">
|
||||
<group android:scaleX="0.6"
|
||||
android:scaleY="0.6">
|
||||
<path
|
||||
android:pathData="M-3.628,-3.628h187.257v187.257h-187.257z"
|
||||
android:fillColor="#02b5c8"/>
|
||||
</group>
|
||||
</vector>
|
|
@ -0,0 +1,142 @@
|
|||
<!--
|
||||
~ Copyright (C) 2021 The Android Open Source Project.
|
||||
~
|
||||
~ 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
|
||||
~
|
||||
~ http://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.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="108dp"
|
||||
android:height="108dp"
|
||||
android:viewportWidth="108"
|
||||
android:viewportHeight="108">
|
||||
<group android:scaleX="0.6"
|
||||
android:scaleY="0.6">
|
||||
<group>
|
||||
<clip-path
|
||||
android:pathData="M0.394,0h179.606v179.606h-179.606z"/>
|
||||
<path
|
||||
android:pathData="M130.562,18.253m-38.456,0a38.456,38.456 0,1 1,76.912 0a38.456,38.456 0,1 1,-76.912 0"
|
||||
android:fillColor="#fede0d"/>
|
||||
<path
|
||||
android:pathData="M130.562,18.253m-36.908,0a36.908,36.908 0,1 1,73.816 0a36.908,36.908 0,1 1,-73.816 0"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M130.562,18.253m-33.804,0a33.804,33.804 0,1 1,67.608 0a33.804,33.804 0,1 1,-67.608 0"
|
||||
android:fillColor="#fffacb"/>
|
||||
<path
|
||||
android:pathData="M152.429,0.119a2.433,2.433 0,0 0,0.468 -3.605,26.658 26.658,0 0,0 -14.574,-9.407 1.588,1.588 0,0 0,-1.938 1.288l-4.276,24.38a0.768,0.768 0,0 0,1.2 0.761Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M161.622,19.692a27.307,27.307 0,0 0,-3.855 -17.379,1.591 1.591,0 0,0 -2.3,-0.489l-19.11,13.407a1,1 0,0 0,0.4 1.807l22.993,4.032A1.6,1.6 0,0 0,161.622 19.692Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M107.651,36.4a1.591,1.591 0,0 0,-0.323 2.328,27.154 27.154,0 0,0 14.932,9.477 1.6,1.6 0,0 0,1.932 -1.288l4,-22.787a1.026,1.026 0,0 0,-1.6 -1.017Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M160.589,26.6a1.61,1.61 0,0 0,-1.281 -1.964l-24.53,-4.3a0.984,0.984 0,0 0,-0.975 1.534l13.732,19.574a2.532,2.532 0,0 0,3.72 0.461A28.81,28.81 0,0 0,160.589 26.6Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M128.159,49.245a27.372,27.372 0,0 0,17.406 -3.862,1.6 1.6,0 0,0 0.493,-2.316L132.909,24.326a1.211,1.211 0,0 0,-2.184 0.487L126.77,47.362A1.61,1.61 0,0 0,128.159 49.245Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M101.259,15.7a1.6,1.6 0,0 0,-1.871 1.393c-0.509,4.609 2.254,12.348 3.774,16.171a1.959,1.959 0,0 0,2.946 0.878l18.264,-12.814a0.908,0.908 0,0 0,-0.364 -1.638Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M109.331,-4.889a27.793,27.793 0,0 0,-9.77 15.369,1.587 1.587,0 0,0 1.29,1.932l23.394,4.1a1.035,1.035 0,0 0,1.027 -1.614L111.63,-4.544A1.588,1.588 0,0 0,109.331 -4.889Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M133.305,-11.192a1.609,1.609 0,0 0,-1.3 -1.855c-8.158,-1.517 -14.325,2 -17.169,3.792a1.806,1.806 0,0 0,-0.515 2.568L127.8,12.526a0.776,0.776 0,0 0,1.4 -0.311Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M146.359,28.339c-0.636,-0.191 -2.493,-0.66 -3.334,-0.871a0.186,0.186 0,0 0,-0.206 0.273c0.422,0.738 1.349,2.3 1.64,2.782a2.917,2.917 0,0 0,0.215 0.315,1.946 1.946,0 0,0 0.2,0.233 1.622,1.622 0,0 0,2.389 -0.163,1.687 1.687,0 0,0 -0.475,-2.361l-0.03,-0.021A1.409,1.409 0,0 0,146.359 28.339Z"
|
||||
android:fillColor="#fffacb"/>
|
||||
<path
|
||||
android:pathData="M125.289,-0.645c0.354,0.675 1.457,2.577 1.957,3.437a0.214,0.214 0,0 0,0.39 -0.049c0.267,-0.939 0.8,-2.949 0.971,-3.577a3.721,3.721 0,0 0,0.087 -0.43,2.352 2.352,0 0,0 0.031,-0.35 1.861,1.861 0,0 0,-2.049 -1.832,1.937 1.937,0 0,0 -1.559,2.283l0.007,0.041A1.618,1.618 0,0 0,125.289 -0.645Z"
|
||||
android:fillColor="#fffacb"/>
|
||||
<path
|
||||
android:pathData="M113.958,24.478c0.474,-0.358 1.8,-1.449 2.392,-1.944a0.166,0.166 0,0 0,-0.087 -0.293c-0.756,-0.086 -2.37,-0.242 -2.875,-0.29a2.776,2.776 0,0 0,-0.341 -0.012,1.9 1.9,0 0,0 -0.274,0.021 1.451,1.451 0,0 0,-1.146 1.81,1.508 1.508,0 0,0 1.954,0.906l0.031,-0.01A1.251,1.251 0,0 0,113.958 24.478Z"
|
||||
android:fillColor="#fffacb"/>
|
||||
<path
|
||||
android:pathData="M88.666,207.734l-89.753,-0.584V57.672s6.766,-3.164 18.119,-3.932c11.723,-0.794 22.056,-0.193 32.657,4.563 0.679,0.3 1.341,0.64 2,0.987 4.553,2.4 17.321,8.917 26.694,13.2 26.846,12.274 40.867,-2.646 40.867,-2.646Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M-14.591,96.155L15.677,73.108A4.916,4.916 97.714,0 1,22.566 74.042L45.612,104.31A4.916,4.916 97.714,0 1,44.679 111.199L14.411,134.245A4.916,4.916 97.714,0 1,7.522 133.312L-15.524,103.044A4.916,4.916 97.714,0 1,-14.591 96.155z"
|
||||
android:strokeAlpha="0.54"
|
||||
android:fillColor="#fff"
|
||||
android:fillAlpha="0.54"/>
|
||||
<path
|
||||
android:pathData="M27.99,110.068L60.107,113.033A4.168,4.168 50.275,0 1,63.875 117.566L60.909,149.684A4.168,4.168 50.275,0 1,56.376 153.451L24.258,150.486A4.168,4.168 50.275,0 1,20.491 145.952L23.457,113.835A4.168,4.168 50.275,0 1,27.99 110.068z"
|
||||
android:strokeAlpha="0.54"
|
||||
android:fillColor="#fff"
|
||||
android:fillAlpha="0.54"/>
|
||||
<path
|
||||
android:pathData="M0.353,92.724c1.735,-1.653 3.512,-3.254 5.3,-4.848a28.466,28.466 0,0 1,2.708 -2.349,16.6 16.6,0 0,1 3.153,-1.8l0.081,0.1a16.6,16.6 0,0 1,-2.425 2.7A28.473,28.473 0,0 1,6.3 88.679C4.36,90.084 2.418,91.48 0.434,92.825Z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M13.687,82.223A3.515,3.515 0,0 1,14.91 80.41a4.129,4.129 0,0 1,0.9 -0.546,2.886 2.886,0 0,1 1.129,-0.265 2.884,2.884 0,0 1,-0.5 1.048,4.159 4.159,0 0,1 -0.725,0.766A3.507,3.507 0,0 1,13.687 82.223Z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M56.208,149.122c0.093,-2.077 0.236,-4.148 0.352,-6.222L57,136.689a60.587,60.587 0,0 1,0.533 -6.2,34.875 34.875,0 0,1 1.528,-6.086l0.181,0.021a34.859,34.859 0,0 1,0.1 6.274,60.866 60.866,0 0,1 -0.894,6.159l-0.985,6.148c-0.36,2.046 -0.694,4.095 -1.076,6.138Z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M88.666,207.734H-3.1V18H127.145a2.942,2.942 0,0 1,2.873 3.58Z"
|
||||
android:strokeAlpha="0.4"
|
||||
android:fillColor="#eff1f3"
|
||||
android:fillAlpha="0.4"/>
|
||||
<path
|
||||
android:pathData="M108.63,60.755l-5.3,26.358 -5.435,26.329c-1.828,8.773 -3.429,17.6 -5.566,26.3 -2.119,8.708 -4.346,17.392 -7.014,25.978l-0.263,-0.058c1.218,-8.908 2.878,-17.718 4.645,-26.5 1.75,-8.79 4.035,-17.461 6.092,-26.183l6.224,-26.153L108.367,60.7Z"
|
||||
android:fillColor="#fffdea"/>
|
||||
<path
|
||||
android:pathData="M182.87,93.439l0,0a0,0 0,0 1,0 0l0,0a48.792,48.792 132.515,0 1,-46.631 50.862l0,0a0,0 0,0 1,0 0l0,0A48.792,48.792 132.515,0 1,182.87 93.439Z"
|
||||
android:fillColor="#96ca54"/>
|
||||
<path
|
||||
android:pathData="M193.222,132.094l0,0a0,0 0,0 1,0 0l0,0a38.8,38.8 82.249,0 1,-54.37 7.4l0,0a0,0 0,0 1,0 0l0,0A38.8,38.8 82.249,0 1,193.222 132.094Z"
|
||||
android:fillColor="#87bc4b"/>
|
||||
<path
|
||||
android:pathData="M87.105,132.028c-10.554,18.609 -10.194,39.67 -0.425,52.5h0l0,0q0.669,0.878 1.4,1.7a23.3,23.3 0,0 1,2.119 4.521h0a6.658,6.658 0,0 0,3.288 5.3,6.77 6.77,0 0,0 7.093,-0.386 5.351,5.351 0,0 1,2.808 -0.285q1.387,0.322 2.8,0.513h0c16.181,2.182 34.81,-8.351 45.513,-27.222 11.006,-19.406 10.144,-41.479 -0.881,-54.1h0q-0.209,-0.238 -0.422,-0.472a12.8,12.8 0,0 1,-1.545 -4.884,6.5 6.5,0 0,0 -9.543,-5.121c-0.007,0 -2.135,1.076 -7.649,0.6 -0.192,-0.02 -0.386,-0.039 -0.579,-0.055h-0.013C115.264,103.3 97.469,113.755 87.105,132.028Z"
|
||||
android:fillColor="#fede0d"/>
|
||||
<path
|
||||
android:pathData="M132.82,173.852c0.672,-1.485 0.948,-2.16 0.582,-3.143 -0.074,-0.2 -0.446,-0.514 -0.935,-0.083 -0.82,0.721 -3.538,5.3 -2.558,5.91C130.864,177.128 132.366,174.855 132.82,173.852Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M149.639,160.41c0.672,-1.485 0.948,-2.161 0.582,-3.143 -0.074,-0.2 -0.446,-0.514 -0.935,-0.084 -0.82,0.722 -3.538,5.3 -2.558,5.911C147.683,163.686 149.184,161.413 149.639,160.41Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M134,180.729c0.523,-1.154 0.738,-1.679 0.453,-2.443 -0.057,-0.154 -0.346,-0.4 -0.727,-0.065 -0.637,0.561 -2.75,4.123 -1.988,4.595C132.478,183.276 133.645,181.509 134,180.729Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M138.9,172.861a12.108,12.108 0,0 0,0.337 -1.84c0.112,-0.712 -0.42,-0.868 -0.794,-0.574 -0.629,0.492 -2.595,3.75 -1.766,4.253C137.484,175.19 138.664,173.845 138.9,172.861Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M145.3,157.94c0.452,-1.075 0.63,-1.568 0.17,-2.376a0.63,0.63 0,0 0,-0.885 -0.176c-0.681,0.463 -2.679,3.7 -1.69,4.294C143.861,160.256 145,158.666 145.3,157.94Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M143.093,165.621c0.246,-0.583 0.342,-0.851 0.093,-1.29a0.344,0.344 0,0 0,-0.481 -0.1c-0.37,0.252 -1.456,2.012 -0.918,2.333S142.927,166.016 143.093,165.621Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M137.713,156.772c0.469,-1 0.665,-1.453 0.511,-2.069 -0.031,-0.124 -0.227,-0.308 -0.531,0 -0.511,0.514 -2.327,3.635 -1.8,3.974S137.4,157.447 137.713,156.772Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M144.922,170.419c0.245,-0.584 0.342,-0.852 0.092,-1.291a0.341,0.341 0,0 0,-0.48 -0.095c-0.371,0.251 -1.456,2.012 -0.918,2.332S144.756,170.813 144.922,170.419Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M126.7,171.746c0.246,-0.584 0.342,-0.851 0.092,-1.29a0.341,0.341 0,0 0,-0.48 -0.1c-0.37,0.252 -1.456,2.012 -0.918,2.332S126.53,172.141 126.7,171.746Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M132.887,165.536c0.325,-0.772 0.453,-1.127 0.122,-1.708a0.453,0.453 0,0 0,-0.636 -0.126c-0.49,0.333 -1.926,2.663 -1.215,3.086C131.852,167.2 132.667,166.058 132.887,165.536Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M138.719,164.968c0.847,-1.809 1.2,-2.629 0.908,-3.75 -0.059,-0.225 -0.42,-0.561 -0.974,-0.01 -0.93,0.926 -4.217,6.568 -3.244,7.19C136.356,169 138.148,166.19 138.719,164.968Z"
|
||||
android:fillColor="#fff063"/>
|
||||
</group>
|
||||
</group>
|
||||
</vector>
|
|
@ -0,0 +1,103 @@
|
|||
<!--
|
||||
~ Copyright (C) 2021 The Android Open Source Project.
|
||||
~
|
||||
~ 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
|
||||
~
|
||||
~ http://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.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="160dp"
|
||||
android:height="200dp"
|
||||
android:viewportWidth="160"
|
||||
android:viewportHeight="200">
|
||||
<path
|
||||
android:pathData="M93.732,189.375H33.21a3.051,3.051 0,0 1,-3.006 -2.528L5.949,47.256a3.05,3.05 0,0 1,3.006 -3.572H117.987a3.05,3.05 0,0 1,3.005 3.572L96.737,186.847A3.05,3.05 0,0 1,93.732 189.375Z"
|
||||
android:fillColor="#69cdd8"/>
|
||||
<path
|
||||
android:pathData="M93.732,189.375H33.21a3.051,3.051 0,0 1,-3.006 -2.528L8.06,59.4l6.883,-1.652a71.493,71.493 0,0 1,21.19 -1.88A108.184,108.184 0,0 1,56.993 59.5l18.68,5.757A71.9,71.9 0,0 0,92.157 68.3a56.33,56.33 0,0 0,8.061 -0.062,42.446 42.446,0 0,0 5.945,-0.9 33.627,33.627 0,0 0,4.413 -1.326l7.653,-2.851L96.737,186.847A3.05,3.05 0,0 1,93.732 189.375Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M47.234,103.815L74.98,106.377A3.601,3.601 50.275,0 1,78.234 110.294L75.673,138.04A3.601,3.601 50.275,0 1,71.756 141.294L44.01,138.733A3.601,3.601 50.275,0 1,40.755 134.816L43.317,107.07A3.601,3.601 50.275,0 1,47.234 103.815z"
|
||||
android:strokeAlpha="0.54"
|
||||
android:fillColor="#fff"
|
||||
android:fillAlpha="0.54"/>
|
||||
<path
|
||||
android:pathData="M22.873,85.806c1.479,-1.454 3,-2.854 4.528,-4.246a20.677,20.677 0,0 1,2.326 -2.046,12.247 12.247,0 0,1 2.784,-1.478l0.083,0.1a12.3,12.3 0,0 1,-2.034 2.407,20.861 20.861,0 0,1 -2.493,1.839c-1.685,1.2 -3.376,2.387 -5.11,3.523Z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M34.4,76.742a2.369,2.369 0,0 1,0.379 -0.968,2.862 2.862,0 0,1 1.4,-1.135 2.354,2.354 0,0 1,1.028 -0.164,2.334 2.334,0 0,1 -0.378,0.97 3.023,3.023 0,0 1,-0.611 0.68,3.078 3.078,0 0,1 -0.8,0.452A2.359,2.359 0,0 1,34.4 76.742Z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M71.611,137.554c0.171,-3.587 0.422,-7.165 0.686,-10.741a52.679,52.679 0,0 1,0.46 -5.357,30.267 30.267,0 0,1 1.321,-5.257l0.156,0.018a30.164,30.164 0,0 1,0.087 5.42,52.6 52.6,0 0,1 -0.773,5.32c-0.559,3.543 -1.129,7.083 -1.781,10.615Z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M36.886,169.824l3.377,3.507a16.521,16.521 0,0 0,1.7 1.673,2.926 2.926,0 0,0 1.909,0.815 4.793,4.793 0,0 0,1.921 -0.919c0.686,-0.433 1.393,-0.835 2.094,-1.244 1.412,-0.806 2.843,-1.58 4.316,-2.286l0.053,0.084c-1.265,1.032 -2.572,2 -3.9,2.929 -0.668,0.459 -1.33,0.927 -2.012,1.363 -0.348,0.208 -0.652,0.461 -1.071,0.669a2.92,2.92 0,0 1,-1.393 0.344,3.829 3.829,0 0,1 -2.4,-1.2 16.488,16.488 0,0 1,-1.638 -1.858l-3.033,-3.814Z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M110.889,58.131 L106.482,86.01l-4.513,27.86c-1.5,9.289 -2.87,18.6 -4.619,27.842 -0.882,4.621 -1.764,9.242 -2.737,13.847l-1.463,6.907c-0.53,2.295 -1.021,4.6 -1.586,6.886l-0.212,-0.037c0.24,-2.346 0.555,-4.678 0.83,-7.017l0.952,-7c0.637,-4.663 1.366,-9.311 2.095,-13.958 1.471,-9.293 3.318,-18.52 5.043,-27.768l5.15,-27.75 5.255,-27.732Z"
|
||||
android:fillColor="#fffdea"/>
|
||||
<group>
|
||||
<clip-path
|
||||
android:pathData="M93.732,189.375H33.21a3.051,3.051 0,0 1,-3.006 -2.528L8.06,59.4l6.883,-1.652a71.493,71.493 0,0 1,21.19 -1.88A108.184,108.184 0,0 1,56.993 59.5l18.68,5.757A71.9,71.9 0,0 0,92.157 68.3a56.33,56.33 0,0 0,8.061 -0.062,42.446 42.446,0 0,0 5.945,-0.9 33.627,33.627 0,0 0,4.413 -1.326l7.653,-2.851L96.737,186.847A3.05,3.05 0,0 1,93.732 189.375Z"/>
|
||||
<path
|
||||
android:pathData="M9.969,88.778L36.118,68.868A4.247,4.247 97.714,0 1,42.07 69.674L61.98,95.823A4.247,4.247 97.714,0 1,61.174 101.775L35.025,121.685A4.247,4.247 97.714,0 1,29.073 120.879L9.163,94.73A4.247,4.247 97.714,0 1,9.969 88.778z"
|
||||
android:strokeAlpha="0.54"
|
||||
android:fillColor="#fff"
|
||||
android:fillAlpha="0.54"/>
|
||||
<path
|
||||
android:pathData="M22.648,148.069L49.331,129.787A4.179,4.179 100.581,0 1,55.14 130.872L73.423,157.554A4.179,4.179 100.581,0 1,72.338 163.363L45.655,181.646A4.179,4.179 100.581,0 1,39.846 180.561L21.563,153.879A4.179,4.179 100.581,0 1,22.648 148.069z"
|
||||
android:strokeAlpha="0.54"
|
||||
android:fillColor="#fff"
|
||||
android:fillAlpha="0.54"/>
|
||||
</group>
|
||||
<path
|
||||
android:pathData="M121.038,43.684m-33.059,0a33.059,33.059 0,1 1,66.118 0a33.059,33.059 0,1 1,-66.118 0"
|
||||
android:fillColor="#fede0d"/>
|
||||
<path
|
||||
android:pathData="M121.038,43.684m-31.728,0a31.728,31.728 0,1 1,63.456 0a31.728,31.728 0,1 1,-63.456 0"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M121.038,43.684m-29.06,0a29.06,29.06 0,1 1,58.12 0a29.06,29.06 0,1 1,-58.12 0"
|
||||
android:fillColor="#fffacb"/>
|
||||
<path
|
||||
android:pathData="M139.836,28.1a2.093,2.093 0,0 0,0.4 -3.1,22.925 22.925,0 0,0 -12.528,-8.087 1.367,1.367 0,0 0,-1.666 1.108l-3.676,20.958a0.66,0.66 0,0 0,1.029 0.654Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M147.739,44.921a23.467,23.467 0,0 0,-3.315 -14.941,1.367 1.367,0 0,0 -1.975,-0.42L126.021,41.086a0.861,0.861 0,0 0,0.345 1.553l19.766,3.466A1.373,1.373 0,0 0,147.739 44.921Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M101.342,59.286a1.368,1.368 0,0 0,-0.277 2A23.348,23.348 0,0 0,113.9 69.435a1.373,1.373 0,0 0,1.66 -1.108L119,48.738a0.882,0.882 0,0 0,-1.375 -0.874Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M146.851,50.861a1.383,1.383 0,0 0,-1.1 -1.688l-21.088,-3.7a0.846,0.846 0,0 0,-0.838 1.319l11.8,16.826a2.176,2.176 0,0 0,3.2 0.4A24.771,24.771 0,0 0,146.851 50.861Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M118.972,70.326a23.532,23.532 0,0 0,14.964 -3.32,1.378 1.378,0 0,0 0.423,-1.991L123.056,48.9a1.041,1.041 0,0 0,-1.878 0.418l-3.4,19.385A1.384,1.384 0,0 0,118.972 70.326Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M95.847,41.488a1.375,1.375 0,0 0,-1.607 1.2c-0.438,3.963 1.937,10.615 3.244,13.9a1.683,1.683 0,0 0,2.532 0.754l15.7,-11.015a0.781,0.781 0,0 0,-0.313 -1.408Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M102.787,23.789A23.9,23.9 0,0 0,94.388 37,1.366 1.366,0 0,0 95.5,38.663l20.111,3.527a0.89,0.89 0,0 0,0.882 -1.388L104.763,24.086A1.366,1.366 0,0 0,102.787 23.789Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M123.4,18.371a1.382,1.382 0,0 0,-1.117 -1.594,20.27 20.27,0 0,0 -14.759,3.259 1.554,1.554 0,0 0,-0.443 2.208L118.665,38.76a0.666,0.666 0,0 0,1.2 -0.267Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M134.618,52.354c-0.547,-0.164 -2.143,-0.567 -2.866,-0.749a0.16,0.16 0,0 0,-0.177 0.235c0.363,0.634 1.16,1.973 1.409,2.391a2.537,2.537 0,0 0,0.185 0.271,1.682 1.682,0 0,0 0.172,0.2 1.393,1.393 0,0 0,2.053 -0.14,1.449 1.449,0 0,0 -0.408,-2.029l-0.026,-0.018A1.191,1.191 0,0 0,134.618 52.354Z"
|
||||
android:fillColor="#fffacb"/>
|
||||
<path
|
||||
android:pathData="M116.505,27.437c0.3,0.581 1.252,2.216 1.683,2.955a0.183,0.183 0,0 0,0.335 -0.042c0.23,-0.807 0.691,-2.535 0.835,-3.075a3.089,3.089 0,0 0,0.074 -0.369,2.174 2.174,0 0,0 0.027,-0.3A1.6,1.6 0,0 0,117.7 25.03a1.663,1.663 0,0 0,-1.339 1.962l0,0.036A1.42,1.42 0,0 0,116.505 27.437Z"
|
||||
android:fillColor="#fffacb"/>
|
||||
<path
|
||||
android:pathData="M106.764,49.035c0.408,-0.308 1.544,-1.246 2.057,-1.672a0.143,0.143 0,0 0,-0.075 -0.252c-0.65,-0.073 -2.038,-0.207 -2.471,-0.249a2.626,2.626 0,0 0,-0.294 -0.01,1.678 1.678,0 0,0 -0.235,0.018 1.247,1.247 0,0 0,-0.985 1.556,1.3 1.3,0 0,0 1.68,0.779l0.026,-0.008A1.113,1.113 0,0 0,106.764 49.035Z"
|
||||
android:fillColor="#fffacb"/>
|
||||
</vector>
|
|
@ -0,0 +1,27 @@
|
|||
<!--
|
||||
~ Copyright (C) 2021 The Android Open Source Project.
|
||||
~
|
||||
~ 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
|
||||
~
|
||||
~ http://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.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="160dp"
|
||||
android:height="200dp"
|
||||
android:viewportWidth="160"
|
||||
android:viewportHeight="200">
|
||||
<path
|
||||
android:pathData="M114.833,183.85H45.167a3.511,3.511 0,0 1,-3.459 -2.91L13.789,20.262a3.511,3.511 0,0 1,3.459 -4.112h125.5a3.511,3.511 0,0 1,3.459 4.112L118.292,180.94A3.511,3.511 0,0 1,114.833 183.85Z"
|
||||
android:fillColor="#69cdd8"/>
|
||||
<path
|
||||
android:pathData="M133.045,32.779l-5.109,32.083 -5.223,32.065c-1.732,10.689 -3.334,21.4 -5.336,32.044 -1.008,5.32 -2.016,10.641 -3.122,15.944l-1.662,7.954c-0.6,2.643 -1.156,5.294 -1.792,7.931l-0.226,-0.039c0.29,-2.7 0.66,-5.38 0.988,-8.071l1.119,-8.049c0.748,-5.365 1.593,-10.713 2.438,-16.062 1.706,-10.694 3.812,-21.319 5.787,-31.966l5.9,-31.947 6.013,-31.927Z"
|
||||
android:fillColor="#bbeef4"/>
|
||||
</vector>
|
|
@ -0,0 +1,69 @@
|
|||
<!--
|
||||
~ Copyright (C) 2021 The Android Open Source Project.
|
||||
~
|
||||
~ 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
|
||||
~
|
||||
~ http://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.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="160dp"
|
||||
android:height="200dp"
|
||||
android:viewportWidth="160"
|
||||
android:viewportHeight="200">
|
||||
<path
|
||||
android:pathData="M146.024,135.476l0,0q-0.227,0.27 -0.456,0.539 -2.61,3.054 -5.512,5.961c-26.3,26.3 -62.711,34.639 -90.614,23.353h0l-0.024,-0.01q-0.511,-0.207 -1.02,-0.424c-9.728,-3.955 -14.008,-3.271 -14.022,-3.269a13.123,13.123 0,0 1,-15.04 -14.407c0.1,-0.951 0.569,-6.259 -0.741,-9.469q-0.287,-0.531 -0.562,-1.068l0,0h0c-14.576,-28.437 -6.9,-67.77 21.027,-95.7a102.857,102.857 0,0 1,9.072 -8.064l0.015,-0.011c0.168,-0.133 0.338,-0.267 0.507,-0.4 12.342,-9.134 42.458,5.14 68.529,32.82C143.084,92.837 155.537,123.538 146.024,135.476Z"
|
||||
android:fillColor="#fede0d"/>
|
||||
<path
|
||||
android:pathData="M146.024,135.476l0,0c-0.147,0.184 -0.3,0.363 -0.456,0.539q-0.332,0.369 -0.694,0.71c-11.577,10.9 -42.744,-3.385 -69.615,-31.915S35.987,44.32 47.564,33.417q0.273,-0.258 0.562,-0.5l0.015,-0.011c0.165,-0.138 0.334,-0.27 0.507,-0.4 12.342,-9.134 42.458,5.14 68.529,32.82C143.084,92.837 155.537,123.538 146.024,135.476Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M115.456,66.811c21.156,22.462 32.54,47.255 28.673,60.22a11.606,11.606 0,0 1,-8.9 8.38c-13.174,3.084 -37.241,-9.763 -58.4,-32.225 -24.7,-26.228 -36.082,-55.632 -25.417,-65.677S90.753,40.583 115.456,66.811Z"
|
||||
android:fillColor="#fffacb"/>
|
||||
<path
|
||||
android:pathData="M55.081,49.75c-1.426,-1.2 -2.38,-2.923 -2.05,-3.7a11.324,11.324 0,0 1,6.818 -6.422c0.793,-0.282 2.451,0.772 3.569,2.268l23.5,31.44c1.916,2.563 0.582,3.82 -1.862,1.754Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M137.21,120.246c1.426,1.2 2.38,2.923 2.05,3.7a11.324,11.324 0,0 1,-6.818 6.422c-0.794,0.283 -2.451,-0.772 -3.569,-2.268l-23.5,-31.44c-1.916,-2.563 -0.582,-3.819 1.862,-1.753Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M66.611,41.638c-1.041,-1.5 -1,-2.695 0.089,-2.566a38.69,38.69 0,0 1,7.013 1.568A61.217,61.217 0,0 1,81.5 43.733c1.348,0.638 3.579,2.912 3.951,4.2l7.078,26.546c0.637,2.213 -2.259,1.3 -4.042,-1.273Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M125.68,128.358c1.041,1.5 1,2.695 -0.089,2.566a38.664,38.664 0,0 1,-7.013 -1.567,61.377 61.377,0 0,1 -7.785,-3.094c-1.348,-0.638 -4.459,-3.472 -4.831,-4.764L99.124,95.04c-0.637,-2.213 2.9,-0.828 4.682,1.746Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M87.418,48.4c-0.259,-1.226 2.763,0.248 4.2,1.235q4.246,2.919 8.65,6.5c2.927,2.388 5.771,4.9 8.509,7.5 1.39,1.318 3.424,4.092 2.908,4.686L99.559,79.691c-0.884,1.018 -4.242,-1.721 -4.686,-3.823Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M102.851,119.89c0.292,1.262 -0.743,1.455 -2.232,0.412q-4.4,-3.081 -8.977,-6.849c-3.043,-2.511 -6,-5.143 -8.857,-7.865 -1.449,-1.381 -3.92,-5.418 -3.406,-6.014L91.838,89.357c0.88,-1.023 4.37,1.857 4.871,4.018Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M113.394,69.956c0.632,-0.471 3.3,1.932 4.727,3.6 2.8,3.284 5.508,6.667 8.086,10.125s4.921,6.846 7.024,10.14c1.067,1.671 0.849,2.732 -0.465,2.287l-27.627,-9.339c-2.252,-0.761 -5.209,-4.727 -4.127,-5.534Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M77.489,98.125c-0.623,0.479 -2.23,-0.37 -3.46,-1.833 -2.424,-2.884 -4.753,-5.866 -6.956,-8.925s-4.189,-6.07 -5.957,-9.007c-0.9,-1.49 -0.624,-2.493 0.583,-2.162l25.374,6.947c2.069,0.566 4.6,4.075 3.527,4.9Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M133.055,98.67a6.882,6.882 0,0 1,3.405 3.418,61.318 61.318,0 0,1 2.622,7.957 38.63,38.63 0,0 1,1.145 7.094c0.064,1.1 -1.129,1.064 -2.566,-0.065L107.454,93.35c-2.463,-1.934 -3.2,-4.879 -1.029,-4.111Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M60.587,73.635c-1.267,-0.449 -4.2,-4.344 -4.757,-5.727a61.345,61.345 0,0 1,-2.621 -7.956,38.64 38.64,0 0,1 -1.145,-7.095c-0.064,-1.1 1.129,-1.064 2.566,0.065L84.837,76.646C87.3,78.58 88.066,82.059 85.9,81.29Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M123.764,113.006c-0.465,-0.245 -1.825,-0.9 -2.441,-1.191a0.112,0.112 0,0 0,-0.154 0.157c0.305,0.6 0.973,1.861 1.182,2.257 0.047,0.089 0.1,0.175 0.155,0.26a2.089,2.089 0,0 0,0.145 0.2,1.245 1.245,0 0,0 1.755,0.3c0.394,-0.4 0.274,-1.169 -0.33,-1.757l-0.021,-0.02A1.4,1.4 0,0 0,123.764 113.006Z"
|
||||
android:fillColor="#fffacb"/>
|
||||
<path
|
||||
android:pathData="M99.26,68.308c-0.04,0.955 -0.075,3.684 -0.089,4.918 0,0.234 0.187,0.286 0.3,0.084 0.608,-1.048 1.883,-3.305 2.281,-4.011q0.135,-0.239 0.252,-0.492c0.076,-0.164 0.059,-0.118 0.178,-0.417 0.525,-1.327 0.095,-2.777 -0.685,-2.991s-1.725,0.713 -2.138,2.214l-0.014,0.052A3.327,3.327 0,0 0,99.26 68.308Z"
|
||||
android:fillColor="#fffacb"/>
|
||||
<path
|
||||
android:pathData="M91.774,100.246c0,-0.579 -0.058,-2.249 -0.087,-3a0.162,0.162 0,0 0,-0.279 -0.106c-0.514,0.534 -1.59,1.692 -1.927,2.055a2.912,2.912 0,0 0,-0.211 0.257,1.943 1.943,0 0,0 -0.146,0.224 1.414,1.414 0,0 0,0.722 1.96,1.472 1.472,0 0,0 1.859,-0.977l0.01,-0.03A1.245,1.245 0,0 0,91.774 100.246Z"
|
||||
android:fillColor="#fffacb"/>
|
||||
</vector>
|
|
@ -0,0 +1,156 @@
|
|||
<!--
|
||||
~ Copyright (C) 2021 The Android Open Source Project.
|
||||
~
|
||||
~ 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
|
||||
~
|
||||
~ http://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.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="160dp"
|
||||
android:height="200dp"
|
||||
android:viewportWidth="160"
|
||||
android:viewportHeight="200">
|
||||
<path
|
||||
android:pathData="M117.621,69.862A40.639,40.639 0,1 0,41.114 50.753a40.925,40.925 0,0 0,0.638 7.215A30.9,30.9 0,1 0,76.8 108.594a29.806,29.806 0,1 0,40.826 -38.732Z"
|
||||
android:fillColor="#87bc4b"/>
|
||||
<path
|
||||
android:pathData="M80,167.81L80,39.054"
|
||||
android:strokeWidth="6.089"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#68493f"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M79.918,106.668a26.017,26.017 0,0 1,26.017 -26.016"
|
||||
android:strokeWidth="6.089"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#68493f"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M60.685,63.353A19.223,19.223 0,0 1,79.918 82.587"
|
||||
android:strokeWidth="6.089"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#68493f"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M59.182,187.95 L45.43,154.305h68.977L100.655,187.95a3.11,3.11 0,0 1,-2.88 1.934H62.062A3.11,3.11 0,0 1,59.182 187.95Z"
|
||||
android:fillColor="#02b5c8"/>
|
||||
<path
|
||||
android:pathData="M44.665,146.588L115.171,146.588A2.421,2.421 0,0 1,117.592 149.009L117.592,154.184A2.421,2.421 0,0 1,115.171 156.605L44.665,156.605A2.421,2.421 0,0 1,42.244 154.184L42.244,149.009A2.421,2.421 0,0 1,44.665 146.588z"
|
||||
android:fillColor="#02a1b0"/>
|
||||
<path
|
||||
android:pathData="M61.007,102.268l-0,0a0,0 0,0 1,-0 0l-0,0A10.279,10.279 51.878,0 1,52.034 90.833l-0,0a0,0 0,0 1,-0 0l-0,0A10.279,10.279 51.878,0 1,61.007 102.268Z"
|
||||
android:fillColor="#96ca54"/>
|
||||
<path
|
||||
android:pathData="M52.618,103.095l-0,0a0,0 0,0 1,-0 0l-0,0a8.174,8.174 91.611,0 1,0.325 -11.555l-0,0a0,0 0,0 1,-0 0l-0,0A8.174,8.174 91.611,0 1,52.618 103.095Z"
|
||||
android:fillColor="#96ca54"/>
|
||||
<path
|
||||
android:pathData="M56.268,81.041c-3.506,-2.831 -7.9,-3.478 -10.9,-1.887h0q-0.206,0.11 -0.4,0.232a4.888,4.888 0,0 1,-1.012 0.286h0a1.4,1.4 0,0 0,-1.214 0.5,1.425 1.425,0 0,0 -0.163,1.487 1.132,1.132 0,0 1,-0.037 0.594c-0.077,0.184 -0.144,0.373 -0.2,0.565h0c-1.008,3.289 0.543,7.522 4.1,10.393 3.656,2.953 8.274,3.53 11.274,1.671h0l0.112,-0.072a2.7,2.7 0,0 1,1.068 -0.154,1.37 1.37,0 0,0 1.392,-1.808 3.3,3.3 0,0 1,0.137 -1.61c0.011,-0.04 0.021,-0.079 0.031,-0.119v0h0C61.275,87.879 59.711,83.821 56.268,81.041Z"
|
||||
android:fillColor="#fede0d"/>
|
||||
<path
|
||||
android:pathData="M46.008,89.11c0.286,0.19 0.417,0.271 0.634,0.229 0.043,-0.009 0.122,-0.075 0.049,-0.192 -0.122,-0.2 -0.981,-0.917 -1.141,-0.734S45.815,88.981 46.008,89.11Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M48.226,93.066c0.286,0.191 0.417,0.272 0.633,0.229 0.044,-0.008 0.122,-0.075 0.05,-0.191 -0.122,-0.195 -0.981,-0.917 -1.141,-0.735S48.033,92.938 48.226,93.066Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M44.538,89.119c0.222,0.148 0.324,0.211 0.493,0.178 0.034,-0.007 0.095,-0.058 0.038,-0.149 -0.1,-0.152 -0.763,-0.713 -0.887,-0.571S44.388,89.019 44.538,89.119Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M46.006,90.408a2.613,2.613 0,0 0,0.371 0.133c0.144,0.048 0.2,-0.058 0.146,-0.146 -0.08,-0.147 -0.69,-0.667 -0.823,-0.512S45.81,90.325 46.006,90.408Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M48.888,92.249c0.208,0.131 0.3,0.185 0.488,0.117a0.132,0.132 0,0 0,0.067 -0.178c-0.073,-0.157 -0.678,-0.684 -0.835,-0.5S48.748,92.161 48.888,92.249Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M47.367,91.527c0.113,0.071 0.165,0.1 0.265,0.064a0.073,0.073 0,0 0,0.036 -0.1c-0.039,-0.085 -0.368,-0.371 -0.453,-0.271S47.291,91.479 47.367,91.527Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M49.391,90.712c0.192,0.132 0.279,0.188 0.412,0.177 0.027,0 0.072,-0.036 0.019,-0.11 -0.089,-0.124 -0.676,-0.608 -0.764,-0.51S49.261,90.623 49.391,90.712Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M46.307,91.743c0.113,0.071 0.165,0.1 0.265,0.063a0.072,0.072 0,0 0,0.037 -0.1c-0.04,-0.086 -0.369,-0.372 -0.454,-0.271S46.231,91.7 46.307,91.743Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M46.656,87.909c0.113,0.071 0.165,0.1 0.265,0.064a0.073,0.073 0,0 0,0.036 -0.1c-0.039,-0.086 -0.368,-0.371 -0.453,-0.271S46.58,87.861 46.656,87.909Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M47.734,89.409c0.15,0.094 0.219,0.133 0.351,0.084a0.1,0.1 0,0 0,0.048 -0.128c-0.052,-0.113 -0.487,-0.492 -0.6,-0.358S47.634,89.345 47.734,89.409Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M47.653,90.641c0.347,0.237 0.505,0.339 0.748,0.317 0.049,0 0.131,-0.068 0.035,-0.2 -0.16,-0.225 -1.22,-1.1 -1.383,-0.921S47.418,90.48 47.653,90.641Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M92.647,32.055l0,0a0,0 0,0 1,0 0l0,0A10.279,10.279 65.855,0 1,98.593 45.32l0,0a0,0 0,0 1,0 0l0,0A10.279,10.279 65.855,0 1,92.647 32.055Z"
|
||||
android:fillColor="#96ca54"/>
|
||||
<path
|
||||
android:pathData="M100.988,33.278l0,0a0,0 0,0 1,0 0l0,0a8.174,8.174 105.588,0 1,-3.106 11.135l0,0a0,0 0,0 1,0 0l0,0A8.174,8.174 105.588,0 1,100.988 33.278Z"
|
||||
android:fillColor="#96ca54"/>
|
||||
<path
|
||||
android:pathData="M94.692,53.224c2.8,3.706 6.8,5.624 9.872,5.025h0c0.14,-0.027 0.279,-0.06 0.415,-0.1a4.484,4.484 0,0 1,0.994 0.034h0a1.235,1.235 0,0 0,1.22 -0.109,1.286 1.286,0 0,0 0.4,-1.349 1.048,1.048 0,0 1,0.135 -0.546,5.429 5.429,0 0,0 0.284,-0.47h0c1.495,-2.788 0.756,-7.227 -2.086,-10.985 -2.923,-3.864 -7.144,-5.784 -10.262,-4.934h0c-0.04,0.01 -0.079,0.022 -0.117,0.033a2.6,2.6 0,0 1,-1.025 -0.174,1.218 1.218,0 0,0 -1.169,0.128 1.233,1.233 0,0 0,-0.436 1.155,3.055 3.055,0 0,1 -0.4,1.471l-0.049,0.1v0h0C91.16,45.308 91.94,49.585 94.692,53.224Z"
|
||||
android:fillColor="#fede0d"/>
|
||||
<path
|
||||
android:pathData="M104.231,47.806c-0.231,-0.254 -0.339,-0.364 -0.559,-0.375 -0.045,0 -0.137,0.044 -0.095,0.174 0.072,0.219 0.731,1.127 0.93,0.988S104.387,47.978 104.231,47.806Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M102.827,44.072c-0.231,-0.254 -0.338,-0.364 -0.559,-0.375 -0.044,0 -0.137,0.043 -0.094,0.174 0.071,0.219 0.73,1.127 0.93,0.988S102.983,44.244 102.827,44.072Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M105.842,49.083c-0.18,-0.2 -0.264,-0.283 -0.435,-0.292 -0.035,0 -0.106,0.034 -0.073,0.135 0.055,0.171 0.568,0.877 0.723,0.769S105.963,49.216 105.842,49.083Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M101.988,44.705c-0.171,-0.177 -0.251,-0.253 -0.446,-0.231a0.132,0.132 0,0 0,-0.108 0.156c0.033,0.171 0.493,0.828 0.69,0.685S102.1,44.825 101.988,44.705Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M103.289,45.773c-0.092,-0.1 -0.136,-0.137 -0.242,-0.126a0.072,0.072 0,0 0,-0.058 0.085c0.017,0.093 0.267,0.45 0.374,0.373S103.352,45.838 103.289,45.773Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M104.37,45.82c-0.093,-0.1 -0.137,-0.138 -0.242,-0.126a0.072,0.072 0,0 0,-0.059 0.085c0.018,0.093 0.268,0.45 0.375,0.372S104.432,45.885 104.37,45.82Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M103.105,49.456c-0.092,-0.1 -0.136,-0.137 -0.242,-0.126a0.072,0.072 0,0 0,-0.058 0.085c0.018,0.093 0.267,0.45 0.374,0.372S103.168,49.521 103.105,49.456Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M102.421,47.74c-0.123,-0.127 -0.18,-0.182 -0.32,-0.166a0.1,0.1 0,0 0,-0.078 0.112c0.024,0.123 0.354,0.595 0.5,0.493S102.5,47.826 102.421,47.74Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M125.661,99.058l0,0a0,0 0,0 1,0 0l0,0a9.2,9.2 65.855,0 1,-11.872 5.322l0,0a0,0 0,0 1,0 0l0,0A9.2,9.2 65.855,0 1,125.661 99.058Z"
|
||||
android:fillColor="#96ca54"/>
|
||||
<path
|
||||
android:pathData="M124.566,106.521l0,0a0,0 0,0 1,0 0l0,0a7.313,7.313 105.588,0 1,-9.962 -2.779l0,0a0,0 0,0 1,0 0l0,0A7.313,7.313 105.588,0 1,124.566 106.521Z"
|
||||
android:fillColor="#96ca54"/>
|
||||
<path
|
||||
android:pathData="M107.812,99.2c-3.512,2.656 -5.4,6.35 -4.93,9.133h0c0.022,0.127 0.048,0.252 0.079,0.375a4.034,4.034 0,0 1,-0.059 0.907h0a1.093,1.093 0,0 0,0.067 1.108,1.152 1.152,0 0,0 1.239,0.329 0.945,0.945 0,0 1,0.5 0.108,4.614 4.614,0 0,0 0.428,0.246h0c2.542,1.285 6.675,0.489 10.236,-2.205 3.662,-2.769 5.559,-6.667 4.857,-9.484h0c-0.009,-0.035 -0.019,-0.07 -0.028,-0.1a2.418,2.418 0,0 1,0.19 -0.939,1.076 1.076,0 0,0 -0.087,-1.061 1.093,1.093 0,0 0,-1.057 -0.365,2.781 2.781,0 0,1 -1.353,-0.323l-0.093,-0.042h0C115.245,95.764 111.26,96.593 107.812,99.2Z"
|
||||
android:fillColor="#fede0d"/>
|
||||
<path
|
||||
android:pathData="M115.523,107.783c0.268,-0.245 0.384,-0.359 0.4,-0.592 0,-0.047 -0.046,-0.145 -0.184,-0.1 -0.231,0.075 -1.192,0.773 -1.045,0.984S115.341,107.948 115.523,107.783Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M112.224,109.236a2.646,2.646 0,0 0,0.232 -0.347c0.086,-0.136 -0.009,-0.215 -0.112,-0.188 -0.172,0.045 -0.862,0.539 -0.737,0.715S112.089,109.416 112.224,109.236Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M113.722,108.124c0.1,-0.1 0.146,-0.144 0.133,-0.256a0.076,0.076 0,0 0,-0.09 -0.062c-0.1,0.019 -0.475,0.283 -0.394,0.4S113.654,108.19 113.722,108.124Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M113.4,105.837c0.184,-0.163 0.264,-0.239 0.287,-0.378 0,-0.028 -0.019,-0.083 -0.109,-0.048 -0.15,0.061 -0.8,0.539 -0.719,0.655S113.278,105.947 113.4,105.837Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M113.673,109.268c0.1,-0.1 0.145,-0.145 0.133,-0.256a0.076,0.076 0,0 0,-0.09 -0.062c-0.1,0.018 -0.476,0.283 -0.394,0.4S113.6,109.334 113.673,109.268Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M109.825,107.929c0.1,-0.1 0.145,-0.144 0.133,-0.256a0.078,0.078 0,0 0,-0.09 -0.062c-0.1,0.019 -0.476,0.284 -0.394,0.4S109.756,108 109.825,107.929Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M111.641,107.205c0.134,-0.129 0.192,-0.191 0.175,-0.339a0.1,0.1 0,0 0,-0.119 -0.082c-0.129,0.025 -0.629,0.375 -0.521,0.525S111.549,107.293 111.641,107.205Z"
|
||||
android:fillColor="#fff063"/>
|
||||
<path
|
||||
android:pathData="M112.885,107.6c0.333,-0.3 0.478,-0.432 0.517,-0.688 0.008,-0.051 -0.037,-0.152 -0.2,-0.088 -0.272,0.108 -1.443,0.972 -1.3,1.186S112.66,107.8 112.885,107.6Z"
|
||||
android:fillColor="#fff063"/>
|
||||
</vector>
|
|
@ -0,0 +1,49 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
~ Copyright (C) 2021 The Android Open Source Project.
|
||||
~
|
||||
~ 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
|
||||
~
|
||||
~ http://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.
|
||||
-->
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/constraint_Layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:context=".MainActivity">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/text_action"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/lemon_select"
|
||||
android:textSize="18sp"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/image_lemon_state"
|
||||
app:layout_constraintBottom_toTopOf="@+id/image_lemon_state"/>
|
||||
<ImageView
|
||||
android:id="@+id/image_lemon_state"
|
||||
android:layout_width="200dp"
|
||||
android:layout_height="160dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.553"
|
||||
app:layout_constraintVertical_bias="0.499" app:srcCompat="@drawable/lemon_tree"
|
||||
app:layout_constrainedWidth="false"/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@drawable/ic_launcher_lemonade_background"/>
|
||||
<foreground android:drawable="@drawable/ic_launcher_lemonade_foreground"/>
|
||||
</adaptive-icon>
|
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@drawable/ic_launcher_lemonade_background"/>
|
||||
<foreground android:drawable="@drawable/ic_launcher_lemonade_foreground"/>
|
||||
</adaptive-icon>
|
После Ширина: | Высота: | Размер: 3.0 KiB |
После Ширина: | Высота: | Размер: 4.7 KiB |
После Ширина: | Высота: | Размер: 2.1 KiB |
После Ширина: | Высота: | Размер: 2.9 KiB |
После Ширина: | Высота: | Размер: 4.3 KiB |
После Ширина: | Высота: | Размер: 6.7 KiB |
После Ширина: | Высота: | Размер: 6.6 KiB |
После Ширина: | Высота: | Размер: 11 KiB |
После Ширина: | Высота: | Размер: 9.1 KiB |
После Ширина: | Высота: | Размер: 15 KiB |
|
@ -0,0 +1,31 @@
|
|||
<!--
|
||||
~ Copyright (C) 2021 The Android Open Source Project.
|
||||
~
|
||||
~ 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
|
||||
~
|
||||
~ http://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.
|
||||
-->
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<!-- Base application theme. -->
|
||||
<style name="Theme.Lemonade" parent="Theme.MaterialComponents.DayNight">
|
||||
<!-- Primary brand color. -->
|
||||
<item name="colorPrimary">@color/yellow_primary</item>
|
||||
<item name="colorPrimaryVariant">@color/yellow_dark</item>
|
||||
<item name="colorOnPrimary">@color/black</item>
|
||||
<!-- Secondary brand color. -->
|
||||
<item name="colorSecondary">@color/teal_200</item>
|
||||
<item name="colorSecondaryVariant">@color/teal_200</item>
|
||||
<item name="colorOnSecondary">@color/black</item>
|
||||
<!-- Status bar color. -->
|
||||
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
|
||||
<!-- Customize your theme here. -->
|
||||
</style>
|
||||
</resources>
|