-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
#Tue Jan 12 19:58:58 WIB 2021 | ||
gradle.version=6.5 |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,62 @@ | ||
# Schedule-App-UI | ||
# Schedule App UI | ||
|
||
[![Platform](https://img.shields.io/badge/platform-Android-yellow.svg)](https://www.android.com) | ||
[![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg?style=flat-square)](https://www.apache.org/licenses/LICENSE-2.0.html) | ||
[![Gradle Version](https://img.shields.io/badge/gradle-4.0-green.svg)](https://docs.gradle.org/current/release-notes) | ||
[![Awesome Kotlin Badge](https://kotlin.link/awesome-kotlin.svg)](https://github.com/KotlinBy/awesome-kotlin) | ||
|
||
📅 A beautiful Schedule App UI written in Kotlin for android with examples. | ||
|
||
# Source | ||
Repo to demonstrate Schedule App UI in Android app. This is a follow up on the source at : | ||
|
||
- [Instagram](https://www.instagram.com/p/CJvEeSrA2Dz) | ||
- [Flat Icon](https://www.flaticon.com) | ||
- [UnDraw Illustration](https://undraw.co) | ||
- [Single Row Calendar Library](https://github.com/miso01/SingleRowCalendar) | ||
- etc. | ||
|
||
# Demo App | ||
|
||
<p align="center"> | ||
<a href="https://github.com/achmadqomarudin/Schedule-App-UI/releases/latest/download/app-demo.apk"> | ||
<img src="https://www.inspirefm.org/wp-content/uploads/button-apk.png" height="100"> | ||
</a> | ||
</p> | ||
|
||
<table style="width:100%"> | ||
<tr> | ||
<th>Example 1</th> | ||
<th>Example 2</th> | ||
</tr> | ||
<tr> | ||
<td><img src="screenshots/1.gif"/></td> | ||
<td><img src="screenshots/2.jpg"/></td> | ||
</tr> | ||
<tr> | ||
<th>Example 3</th> | ||
<th>Example 4</th> | ||
</tr> | ||
<tr> | ||
<td><img src="screenshots/3.jpg"/></td> | ||
<td><img src="screenshots/4.jpg"/></td> | ||
</tr> | ||
</table> | ||
|
||
# License | ||
|
||
``` | ||
Copyright (C) Achmad Qomarudin | ||
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. | ||
``` |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
/build |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
plugins { | ||
id 'com.android.application' | ||
id 'kotlin-android' | ||
id 'kotlin-android-extensions' | ||
} | ||
|
||
android { | ||
compileSdkVersion 30 | ||
buildToolsVersion "30.0.2" | ||
|
||
defaultConfig { | ||
applicationId "com.project.scheduleappui" | ||
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.3.2' | ||
implementation 'androidx.appcompat:appcompat:1.2.0' | ||
implementation 'com.google.android.material:material:1.2.1' | ||
implementation 'androidx.constraintlayout:constraintlayout:2.0.4' | ||
implementation 'androidx.legacy:legacy-support-v4:1.0.0' | ||
testImplementation 'junit:junit:4.+' | ||
androidTestImplementation 'androidx.test.ext:junit:1.1.2' | ||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' | ||
|
||
//Extended library | ||
implementation 'com.michalsvec:single-row-calednar:1.0.0' | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
package com.project.scheduleappui | ||
|
||
import androidx.test.platform.app.InstrumentationRegistry | ||
import androidx.test.ext.junit.runners.AndroidJUnit4 | ||
|
||
import org.junit.Test | ||
import org.junit.runner.RunWith | ||
|
||
import org.junit.Assert.* | ||
|
||
/** | ||
* Instrumented test, which will execute on an Android device. | ||
* | ||
* See [testing documentation](http://d.android.com/tools/testing). | ||
*/ | ||
@RunWith(AndroidJUnit4::class) | ||
class ExampleInstrumentedTest { | ||
@Test | ||
fun useAppContext() { | ||
// Context of the app under test. | ||
val appContext = InstrumentationRegistry.getInstrumentation().targetContext | ||
assertEquals("com.project.explorationcalendarappui", appContext.packageName) | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||
package="com.project.scheduleappui"> | ||
|
||
<application | ||
android:allowBackup="true" | ||
android:icon="@drawable/ic_schedule" | ||
android:label="@string/app_name" | ||
android:roundIcon="@drawable/ic_schedule" | ||
android:supportsRtl="true" | ||
android:theme="@style/Theme.ScheduleAppUI"> | ||
<activity android:name="com.project.scheduleappui.MainActivity"> | ||
<intent-filter> | ||
<action android:name="android.intent.action.MAIN" /> | ||
|
||
<category android:name="android.intent.category.LAUNCHER" /> | ||
</intent-filter> | ||
</activity> | ||
</application> | ||
|
||
</manifest> |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
package com.project.scheduleappui | ||
|
||
import android.annotation.SuppressLint | ||
import android.os.Build | ||
import android.os.Bundle | ||
import android.view.View | ||
import android.view.WindowManager | ||
import android.widget.Toast | ||
import androidx.appcompat.app.AppCompatActivity | ||
import androidx.fragment.app.Fragment | ||
import com.google.android.material.bottomnavigation.BottomNavigationView | ||
import com.project.scheduleappui.menu.dashboard.DashboardFragment | ||
import com.project.scheduleappui.menu.home.HomeFragment | ||
import com.project.scheduleappui.menu.profile.ProfileFragment | ||
import kotlinx.android.synthetic.main.activity_main.* | ||
|
||
@Suppress("DEPRECATION") | ||
class MainActivity : AppCompatActivity() { | ||
|
||
@SuppressLint("UseCompatLoadingForDrawables") | ||
override fun onCreate(savedInstanceState: Bundle?) { | ||
super.onCreate(savedInstanceState) | ||
hiddenStatusBar() | ||
setContentView(R.layout.activity_main) | ||
setSupportActionBar(bottom_app_bar) | ||
bottom_navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener) | ||
replaceFragment(HomeFragment()) | ||
|
||
fab.setOnClickListener { | ||
Toast.makeText(applicationContext, "Button clicked!", Toast.LENGTH_SHORT).show() | ||
} | ||
} | ||
|
||
@SuppressLint("ObsoleteSdkInt") | ||
private fun hiddenStatusBar() { | ||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { | ||
window.setDecorFitsSystemWindows(true) | ||
} else { | ||
// hide status bar | ||
window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN) | ||
window.decorView.systemUiVisibility = | ||
View.SYSTEM_UI_FLAG_IMMERSIVE or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | ||
} | ||
} | ||
|
||
private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item -> | ||
when (item.itemId) { | ||
R.id.nav_home -> { | ||
replaceFragment(HomeFragment()) | ||
return@OnNavigationItemSelectedListener true | ||
} | ||
R.id.nav_dashboard -> { | ||
replaceFragment(DashboardFragment()) | ||
return@OnNavigationItemSelectedListener true | ||
} | ||
R.id.nav_profile -> { | ||
replaceFragment(ProfileFragment()) | ||
return@OnNavigationItemSelectedListener true | ||
} | ||
} | ||
false | ||
} | ||
|
||
private fun replaceFragment(fragment: Fragment) { | ||
val transaction = supportFragmentManager.beginTransaction() | ||
transaction.replace(R.id.fragment_container, fragment) | ||
transaction.commit() | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
package com.project.scheduleappui.menu.dashboard | ||
|
||
import android.view.LayoutInflater | ||
import android.view.View | ||
import android.view.ViewGroup | ||
import androidx.recyclerview.widget.RecyclerView | ||
import com.project.scheduleappui.R | ||
import kotlinx.android.synthetic.main.item_dashboard.view.* | ||
import kotlinx.android.synthetic.main.item_home.view.* | ||
|
||
class DashboardAdapter(private val dashboard: List<Dashboard>) : RecyclerView.Adapter<DashboardHolder>() { | ||
|
||
override fun onCreateViewHolder(viewGroup: ViewGroup, p1: Int): DashboardHolder { | ||
return DashboardHolder(LayoutInflater.from(viewGroup.context).inflate(R.layout.item_dashboard, viewGroup, false)) | ||
} | ||
|
||
override fun getItemCount(): Int = dashboard.size | ||
|
||
override fun onBindViewHolder(holder: DashboardHolder, position: Int) { | ||
holder.bindHero(dashboard[position]) | ||
} | ||
} | ||
|
||
class DashboardHolder(view: View) : RecyclerView.ViewHolder(view) { | ||
private val imgAgenda = view.image_agenda | ||
private val tvAgenda = view.text_agenda | ||
private val tvTime = view.text_agenda_time | ||
|
||
fun bindHero(dashboard: Dashboard) { | ||
imgAgenda.setImageResource(dashboard.image) | ||
tvAgenda.text = dashboard.agenda | ||
tvTime.text = dashboard.time | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
package com.project.scheduleappui.menu.dashboard | ||
|
||
import android.os.Bundle | ||
import android.view.LayoutInflater | ||
import android.view.View | ||
import android.view.ViewGroup | ||
import androidx.fragment.app.Fragment | ||
import androidx.recyclerview.widget.LinearLayoutManager | ||
import androidx.recyclerview.widget.RecyclerView | ||
import com.project.scheduleappui.R | ||
import kotlinx.android.synthetic.main.fragment_dashboard.* | ||
|
||
class DashboardFragment : Fragment() { | ||
|
||
override fun onCreateView( | ||
inflater: LayoutInflater, container: ViewGroup?, | ||
savedInstanceState: Bundle? | ||
): View? { | ||
// Inflate the layout for this fragment | ||
return inflater.inflate(R.layout.fragment_dashboard, container, false) | ||
} | ||
|
||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { | ||
super.onViewCreated(view, savedInstanceState) | ||
setData() | ||
} | ||
|
||
private fun setData() { | ||
val listHome = listOf( | ||
Dashboard(image = R.drawable.bg_agenda1, agenda = "Hotel Cavana - Meeting with client from Russia", time = "07.00 - 07.30"), | ||
Dashboard(image = R.drawable.bg_agenda2, agenda = "TA Caffe - Market potential at Tulungagung", time = "08.00 - 09.00"), | ||
Dashboard(image = R.drawable.bg_agenda3, agenda = "Office - Internal project review & discussion", time = "09.00 - 09.30") | ||
) | ||
|
||
val homeAdapter = DashboardAdapter(listHome) | ||
|
||
recyclerview_dashboard.apply { | ||
layoutManager = LinearLayoutManager(context, RecyclerView.HORIZONTAL, false) | ||
adapter = homeAdapter | ||
} | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
package com.project.scheduleappui.menu.dashboard | ||
|
||
data class Dashboard ( | ||
val image : Int, | ||
val agenda : String, | ||
val time : String | ||
) |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
package com.project.scheduleappui.menu.home | ||
|
||
import android.view.LayoutInflater | ||
import android.view.View | ||
import android.view.ViewGroup | ||
import androidx.recyclerview.widget.RecyclerView | ||
import com.project.scheduleappui.R | ||
import kotlinx.android.synthetic.main.item_home.view.* | ||
|
||
class HomeAdapter(private val home: List<Home>) : RecyclerView.Adapter<HomeHolder>() { | ||
|
||
override fun onCreateViewHolder(viewGroup: ViewGroup, p1: Int): HomeHolder { | ||
return HomeHolder(LayoutInflater.from(viewGroup.context).inflate(R.layout.item_home, viewGroup, false)) | ||
} | ||
|
||
override fun getItemCount(): Int = home.size | ||
|
||
override fun onBindViewHolder(holder: HomeHolder, position: Int) { | ||
holder.bindHero(home[position]) | ||
} | ||
} | ||
|
||
class HomeHolder(view: View) : RecyclerView.ViewHolder(view) { | ||
private val tvTag = view.text_tag | ||
private val tvSchedule = view.text_schedule | ||
private val tvTime = view.text_schedule_time | ||
|
||
fun bindHero(home: Home) { | ||
tvTag.text = home.tag | ||
tvSchedule.text = home.schedule | ||
tvTime.text = home.time | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,199 @@ | ||
package com.project.scheduleappui.menu.home | ||
|
||
import android.annotation.SuppressLint | ||
import android.os.Bundle | ||
import android.view.LayoutInflater | ||
import android.view.View | ||
import android.view.ViewGroup | ||
import android.widget.ArrayAdapter | ||
import android.widget.Spinner | ||
import androidx.fragment.app.Fragment | ||
import androidx.recyclerview.widget.LinearLayoutManager | ||
import com.michalsvec.singlerowcalendar.calendar.CalendarChangesObserver | ||
import com.michalsvec.singlerowcalendar.calendar.CalendarViewManager | ||
import com.michalsvec.singlerowcalendar.calendar.SingleRowCalendarAdapter | ||
import com.michalsvec.singlerowcalendar.selection.CalendarSelectionManager | ||
import com.michalsvec.singlerowcalendar.utils.DateUtils | ||
import com.project.scheduleappui.R | ||
import kotlinx.android.synthetic.main.calendar_item.view.* | ||
import kotlinx.android.synthetic.main.fragment_home.* | ||
import java.util.* | ||
|
||
class HomeFragment : Fragment() { | ||
private val calendar = Calendar.getInstance() | ||
private var currentMonth = 0 | ||
|
||
override fun onCreateView( | ||
inflater: LayoutInflater, container: ViewGroup?, | ||
savedInstanceState: Bundle? | ||
): View? { | ||
// Inflate the layout for this fragment | ||
return inflater.inflate(R.layout.fragment_home, container, false) | ||
} | ||
|
||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { | ||
super.onViewCreated(view, savedInstanceState) | ||
setData() | ||
setDate() | ||
setSpinner(view) | ||
} | ||
|
||
private fun setData() { | ||
val listHome = listOf( | ||
Home(tag = "Developer", schedule = "Database Workshop - How to use SQLite Database in android", time = "08.00 - 09.00"), | ||
Home(tag = "Designer", schedule = "UI Workshop - Using gridview to make more beautiful design", time = "09.00 - 10.00"), | ||
Home(tag = "Marketing", schedule = "FB Ads - Strategy marketing for selling more products", time = "12.00 - 12.30") | ||
) | ||
|
||
val homeAdapter = HomeAdapter(listHome) | ||
|
||
recyclerview_home.apply { | ||
layoutManager = LinearLayoutManager(context) | ||
adapter = homeAdapter | ||
} | ||
} | ||
|
||
private fun setDate() { | ||
// set current date to calendar and current month to currentMonth variable | ||
calendar.time = Date() | ||
currentMonth = calendar[Calendar.MONTH] | ||
|
||
// calendar view manager is responsible for our displaying logic | ||
val myCalendarViewManager = object : | ||
CalendarViewManager { | ||
override fun setCalendarViewResourceId( | ||
position: Int, | ||
date: Date, | ||
isSelected: Boolean | ||
): Int { | ||
// set date to calendar according to position where we are | ||
val cal = Calendar.getInstance() | ||
cal.time = date | ||
// if item is selected we return this layout items | ||
// in this example. monday, wednesday and friday will have special item views and other days | ||
// will be using basic item view | ||
return if (isSelected) | ||
R.layout.selected_calendar_item | ||
else | ||
// here we return items which are not selected | ||
R.layout.calendar_item | ||
|
||
// NOTE: if we don't want to do it this way, we can simply change color of background | ||
// in bindDataToCalendarView method | ||
} | ||
|
||
override fun bindDataToCalendarView( | ||
holder: SingleRowCalendarAdapter.CalendarViewHolder, | ||
date: Date, | ||
position: Int, | ||
isSelected: Boolean | ||
) { | ||
// using this method we can bind data to calendar view | ||
// good practice is if all views in layout have same IDs in all item views | ||
holder.itemView.tv_date_calendar_item.text = DateUtils.getDayNumber(date) | ||
holder.itemView.tv_day_calendar_item.text = DateUtils.getDay3LettersName(date) | ||
|
||
} | ||
} | ||
|
||
// using calendar changes observer we can track changes in calendar | ||
val myCalendarChangesObserver = object : | ||
CalendarChangesObserver { | ||
// you can override more methods, in this example we need only this one | ||
@SuppressLint("SetTextI18n") | ||
override fun whenSelectionChanged(isSelected: Boolean, position: Int, date: Date) { | ||
tvDate.text = "${DateUtils.getMonthName(date)} " | ||
super.whenSelectionChanged(isSelected, position, date) | ||
} | ||
} | ||
|
||
// selection manager is responsible for managing selection | ||
val mySelectionManager = object : CalendarSelectionManager { | ||
override fun canBeItemSelected(position: Int, date: Date): Boolean { | ||
// set date to calendar according to position | ||
val cal = Calendar.getInstance() | ||
cal.time = date | ||
// in this example sunday and saturday can't be selected, others can | ||
return when (cal[Calendar.DAY_OF_WEEK]) { | ||
Calendar.SATURDAY -> false | ||
Calendar.SUNDAY -> false | ||
else -> true | ||
} | ||
} | ||
} | ||
|
||
// here we init our calendar, also you can set more properties if you haven't specified in XML layout | ||
val singleRowCalendar = main_single_row_calendar.apply { | ||
calendarViewManager = myCalendarViewManager | ||
calendarChangesObserver = myCalendarChangesObserver | ||
calendarSelectionManager = mySelectionManager | ||
setDates(getFutureDatesOfCurrentMonth()) | ||
init() | ||
} | ||
|
||
btnRight.setOnClickListener { | ||
singleRowCalendar.setDates(getDatesOfNextMonth()) | ||
} | ||
|
||
btnLeft.setOnClickListener { | ||
singleRowCalendar.setDates(getDatesOfPreviousMonth()) | ||
} | ||
} | ||
|
||
private fun setSpinner(view: View) { | ||
val spinner: Spinner = view.findViewById(R.id.task_spinner) | ||
// Create an ArrayAdapter using the string array and a default spinner layout | ||
context?.let { | ||
ArrayAdapter.createFromResource( | ||
it, | ||
R.array.task_array, | ||
R.layout.item_spinner | ||
).also { adapter -> | ||
// Specify the layout to use when the list of choices appears | ||
adapter.setDropDownViewResource(R.layout.item_spinner) | ||
// Apply the adapter to the spinner | ||
spinner.adapter = adapter | ||
} | ||
} | ||
} | ||
|
||
private fun getDatesOfNextMonth(): List<Date> { | ||
currentMonth++ // + because we want next month | ||
if (currentMonth == 12) { | ||
// we will switch to january of next year, when we reach last month of year | ||
calendar.set(Calendar.YEAR, calendar[Calendar.YEAR] + 1) | ||
currentMonth = 0 // 0 == january | ||
} | ||
return getDates(mutableListOf()) | ||
} | ||
|
||
private fun getDatesOfPreviousMonth(): List<Date> { | ||
currentMonth-- // - because we want previous month | ||
if (currentMonth == -1) { | ||
// we will switch to december of previous year, when we reach first month of year | ||
calendar.set(Calendar.YEAR, calendar[Calendar.YEAR] - 1) | ||
currentMonth = 11 // 11 == december | ||
} | ||
return getDates(mutableListOf()) | ||
} | ||
|
||
private fun getFutureDatesOfCurrentMonth(): List<Date> { | ||
// get all next dates of current month | ||
currentMonth = calendar[Calendar.MONTH] | ||
return getDates(mutableListOf()) | ||
} | ||
|
||
private fun getDates(list: MutableList<Date>): List<Date> { | ||
// load dates of whole month | ||
calendar.set(Calendar.MONTH, currentMonth) | ||
calendar.set(Calendar.DAY_OF_MONTH, 1) | ||
list.add(calendar.time) | ||
while (currentMonth == calendar[Calendar.MONTH]) { | ||
calendar.add(Calendar.DATE, +1) | ||
if (calendar[Calendar.MONTH] == currentMonth) | ||
list.add(calendar.time) | ||
} | ||
calendar.add(Calendar.DATE, -1) | ||
return list | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
package com.project.scheduleappui.menu.home | ||
|
||
data class Home ( | ||
val tag : String, | ||
val schedule : String, | ||
val time : String | ||
) |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package com.project.scheduleappui.menu.profile | ||
|
||
import android.os.Bundle | ||
import androidx.fragment.app.Fragment | ||
import android.view.LayoutInflater | ||
import android.view.View | ||
import android.view.ViewGroup | ||
import com.project.scheduleappui.R | ||
|
||
class ProfileFragment : Fragment() { | ||
|
||
override fun onCreateView( | ||
inflater: LayoutInflater, container: ViewGroup?, | ||
savedInstanceState: Bundle? | ||
): View? { | ||
// Inflate the layout for this fragment | ||
return inflater.inflate(R.layout.fragment_profile, container, false) | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<selector xmlns:android="http://schemas.android.com/apk/res/android"> | ||
<item android:state_checked="true" android:color="@color/white" /> | ||
<item android:color="@color/light_gray" /> | ||
</selector> |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
<vector xmlns:android="http://schemas.android.com/apk/res/android" | ||
xmlns:aapt="http://schemas.android.com/aapt" | ||
android:width="108dp" | ||
android:height="108dp" | ||
android:viewportWidth="108" | ||
android:viewportHeight="108"> | ||
<path | ||
android:fillType="evenOdd" | ||
android:pathData="M32,64C32,64 38.39,52.99 44.13,50.95C51.37,48.37 70.14,49.57 70.14,49.57L108.26,87.69L108,109.01L75.97,107.97L32,64Z" | ||
android:strokeWidth="1" | ||
android:strokeColor="#00000000"> | ||
<aapt:attr name="android:fillColor"> | ||
<gradient | ||
android:endX="78.5885" | ||
android:endY="90.9159" | ||
android:startX="48.7653" | ||
android:startY="61.0927" | ||
android:type="linear"> | ||
<item | ||
android:color="#44000000" | ||
android:offset="0.0" /> | ||
<item | ||
android:color="#00000000" | ||
android:offset="1.0" /> | ||
</gradient> | ||
</aapt:attr> | ||
</path> | ||
<path | ||
android:fillColor="#FFFFFF" | ||
android:fillType="nonZero" | ||
android:pathData="M66.94,46.02L66.94,46.02C72.44,50.07 76,56.61 76,64L32,64C32,56.61 35.56,50.11 40.98,46.06L36.18,41.19C35.45,40.45 35.45,39.3 36.18,38.56C36.91,37.81 38.05,37.81 38.78,38.56L44.25,44.05C47.18,42.57 50.48,41.71 54,41.71C57.48,41.71 60.78,42.57 63.68,44.05L69.11,38.56C69.84,37.81 70.98,37.81 71.71,38.56C72.44,39.3 72.44,40.45 71.71,41.19L66.94,46.02ZM62.94,56.92C64.08,56.92 65,56.01 65,54.88C65,53.76 64.08,52.85 62.94,52.85C61.8,52.85 60.88,53.76 60.88,54.88C60.88,56.01 61.8,56.92 62.94,56.92ZM45.06,56.92C46.2,56.92 47.13,56.01 47.13,54.88C47.13,53.76 46.2,52.85 45.06,52.85C43.92,52.85 43,53.76 43,54.88C43,56.01 43.92,56.92 45.06,56.92Z" | ||
android:strokeWidth="1" | ||
android:strokeColor="#00000000" /> | ||
</vector> |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<shape xmlns:android="http://schemas.android.com/apk/res/android" | ||
android:padding="10dp" | ||
android:shape="rectangle"> | ||
|
||
<solid android:color="#00000000" /> | ||
|
||
</shape> |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,134 @@ | ||
<vector xmlns:android="http://schemas.android.com/apk/res/android" | ||
android:width="1070.0669dp" | ||
android:height="619.3506dp" | ||
android:viewportWidth="1070.0669" | ||
android:viewportHeight="619.3506"> | ||
<path | ||
android:pathData="M549.82,526c-2.77,0 -5.58,-0.04 -8.33,-0.13l0.06,-2c3.95,0.12 7.98,0.16 11.95,0.1l0.03,2Q551.68,526 549.82,526ZM565.56,525.54 L565.45,523.54c3.96,-0.23 7.96,-0.56 11.91,-0.97l0.21,1.99C573.59,524.97 569.55,525.3 565.56,525.54ZM529.47,525.22c-3.99,-0.31 -8.02,-0.71 -11.98,-1.19l0.24,-1.98c3.93,0.48 7.93,0.88 11.89,1.18ZM589.51,523.03 L589.21,521.05c3.93,-0.6 7.89,-1.29 11.77,-2.06l0.39,1.96C597.46,521.73 593.47,522.42 589.51,523.03ZM505.57,522.29c-3.94,-0.67 -7.92,-1.44 -11.82,-2.28l0.42,-1.96c3.87,0.84 7.82,1.6 11.73,2.27ZM613.12,518.33 L612.64,516.39c3.86,-0.95 7.74,-2.01 11.53,-3.13l0.57,1.92C620.92,516.31 617.01,517.37 613.12,518.33ZM482.05,517.19c-3.87,-1.03 -7.76,-2.16 -11.56,-3.36l0.6,-1.91c3.78,1.19 7.64,2.32 11.47,3.34ZM636.2,511.48l-0.66,-1.89c3.74,-1.3 7.51,-2.71 11.19,-4.18l0.74,1.86C643.77,508.75 639.98,510.17 636.2,511.48ZM459.06,509.92c-3.75,-1.38 -7.53,-2.87 -11.23,-4.43l0.78,-1.84c3.67,1.54 7.42,3.02 11.14,4.39ZM658.53,502.55 L657.7,500.73c3.6,-1.63 7.21,-3.38 10.74,-5.18l0.91,1.78C665.8,499.15 662.16,500.9 658.53,502.55ZM436.82,500.56c-3.61,-1.72 -7.23,-3.55 -10.77,-5.44l0.94,-1.76c3.51,1.87 7.1,3.69 10.68,5.4ZM679.93,491.61 L678.94,489.88c3.45,-1.97 6.89,-4.04 10.23,-6.15l1.07,1.69C686.87,487.54 683.41,489.63 679.93,491.61ZM415.55,489.19c-3.43,-2.04 -6.87,-4.2 -10.22,-6.4l1.1,-1.67c3.32,2.19 6.73,4.32 10.14,6.35ZM700.25,478.75L699.11,477.12c3.25,-2.27 6.49,-4.64 9.63,-7.06l1.22,1.59C706.79,474.08 703.53,476.47 700.25,478.75ZM395.43,475.94c-3.23,-2.34 -6.45,-4.8 -9.59,-7.3l1.25,-1.56c3.11,2.48 6.31,4.92 9.51,7.25ZM719.33,464.09 L718.04,462.56c3.03,-2.55 6.04,-5.21 8.95,-7.91l1.36,1.47C725.42,458.84 722.38,461.52 719.33,464.09ZM376.6,460.91c-3.01,-2.63 -5.99,-5.37 -8.88,-8.14l1.38,-1.44c2.86,2.75 5.83,5.47 8.81,8.08ZM737,447.75 L735.58,446.34c2.79,-2.83 5.55,-5.75 8.2,-8.7l1.49,1.34C742.6,441.95 739.82,444.9 737,447.75ZM359.23,444.23c-2.76,-2.9 -5.48,-5.9 -8.1,-8.91l1.51,-1.31c2.59,2.99 5.3,5.96 8.04,8.84ZM753.12,429.85 L751.58,428.58c2.52,-3.07 5,-6.23 7.38,-9.41l1.6,1.2C758.17,423.57 755.66,426.76 753.12,429.85ZM343.45,426.06c-2.48,-3.13 -4.92,-6.36 -7.25,-9.6l1.62,-1.17c2.32,3.22 4.74,6.42 7.19,9.53ZM767.55,410.56 L765.9,409.44c2.23,-3.28 4.41,-6.66 6.49,-10.05l1.71,1.05C772,403.84 769.8,407.25 767.55,410.56ZM329.4,406.53c-2.18,-3.34 -4.31,-6.78 -6.34,-10.22l1.72,-1.02c2.01,3.41 4.13,6.83 6.29,10.14ZM780.17,390.02 L778.42,389.05c1.92,-3.47 3.79,-7.04 5.55,-10.61l1.79,0.89C783.98,382.92 782.1,386.52 780.17,390.02ZM317.2,385.81c-1.87,-3.53 -3.67,-7.14 -5.38,-10.75l1.81,-0.85c1.69,3.58 3.48,7.17 5.33,10.67ZM790.85,368.4 L789.02,367.6c1.59,-3.64 3.12,-7.37 4.55,-11.08l1.87,0.72C794,360.97 792.45,364.73 790.85,368.4ZM306.95,364.08c-1.53,-3.68 -3,-7.44 -4.36,-11.19l1.88,-0.68c1.35,3.72 2.81,7.45 4.33,11.1ZM799.5,345.87 L797.6,345.24c1.25,-3.76 2.43,-7.6 3.5,-11.43l1.93,0.54C801.94,338.2 800.75,342.08 799.5,345.87ZM298.73,341.48c-1.19,-3.81 -2.31,-7.71 -3.32,-11.57l1.93,-0.51c1.01,3.84 2.12,7.7 3.3,11.49ZM806.02,322.69 L804.07,322.24c0.9,-3.85 1.71,-7.79 2.43,-11.7l1.97,0.36C807.74,314.84 806.92,318.8 806.02,322.69ZM292.62,318.2c-0.83,-3.91 -1.59,-7.89 -2.24,-11.83l1.97,-0.33c0.65,3.91 1.4,7.86 2.23,11.74ZM810.37,299.01 L808.39,298.74c0.54,-3.92 0.99,-7.91 1.35,-11.87l1.99,0.18C811.37,291.04 810.92,295.06 810.37,299.01ZM288.68,294.45c-0.47,-3.96 -0.86,-7.99 -1.15,-11.98l2,-0.15c0.29,3.96 0.67,7.96 1.14,11.89ZM812.55,275.04 L810.55,274.95c0.18,-3.96 0.27,-7.98 0.27,-11.95h2C812.82,266.99 812.73,271.04 812.55,275.04ZM286.92,270.43c-0.07,-2.45 -0.1,-4.95 -0.1,-7.43q0,-2.31 0.04,-4.61l2,0.04q-0.04,2.28 -0.04,4.57c0,2.46 0.04,4.95 0.1,7.38ZM810.8,260.21c-0.04,-3.97 -0.17,-7.98 -0.39,-11.95l2,-0.11c0.22,3.99 0.36,8.04 0.4,12.04ZM289.33,246.49l-2,-0.13c0.25,-4 0.59,-8.03 1.02,-12l1.99,0.22C289.92,238.52 289.58,242.52 289.33,246.49ZM809.48,236.35c-0.4,-3.94 -0.9,-7.93 -1.48,-11.86l1.98,-0.29c0.58,3.96 1.09,7.98 1.49,11.95ZM291.91,222.73l-1.98,-0.31c0.61,-3.96 1.32,-7.94 2.12,-11.85l1.96,0.4C293.22,214.85 292.51,218.81 291.91,222.73ZM805.98,212.72c-0.76,-3.9 -1.62,-7.83 -2.56,-11.67l1.94,-0.47c0.94,3.87 1.81,7.83 2.58,11.76ZM296.64,199.32l-1.94,-0.49c0.97,-3.87 2.05,-7.78 3.2,-11.61l1.91,0.58C298.68,191.6 297.61,195.47 296.64,199.32ZM800.33,189.5c-1.12,-3.81 -2.33,-7.64 -3.62,-11.39l1.89,-0.65c1.3,3.78 2.53,7.64 3.65,11.47ZM303.53,176.4l-1.89,-0.66c1.33,-3.78 2.76,-7.58 4.27,-11.29l1.85,0.75C306.27,168.88 304.85,172.65 303.53,176.4ZM792.56,166.91c-1.46,-3.68 -3.02,-7.37 -4.64,-10.98l1.82,-0.82c1.64,3.63 3.21,7.36 4.68,11.06ZM312.51,154.21l-1.82,-0.83c1.67,-3.64 3.45,-7.29 5.28,-10.84l1.78,0.92C315.93,146.98 314.16,150.6 312.51,154.21ZM782.77,145.17c-1.79,-3.53 -3.69,-7.07 -5.64,-10.51l1.74,-0.99c1.97,3.47 3.88,7.04 5.68,10.6ZM323.48,132.94l-1.73,-1c2,-3.46 4.1,-6.93 6.25,-10.31l1.69,1.08C327.55,126.06 325.46,129.5 323.48,132.94ZM771.02,124.41c-2.11,-3.36 -4.33,-6.72 -6.58,-9.96l1.64,-1.14c2.27,3.27 4.5,6.65 6.63,10.04ZM336.36,112.78l-1.63,-1.15c2.31,-3.27 4.72,-6.53 7.17,-9.69l1.58,1.23C341.04,106.3 338.64,109.54 336.36,112.78ZM757.42,104.79c-2.41,-3.16 -4.92,-6.29 -7.46,-9.33l1.53,-1.28c2.56,3.06 5.09,6.22 7.52,9.4ZM351.01,93.89l-1.52,-1.3c2.59,-3.04 5.28,-6.06 8.02,-8.99l1.46,1.36C356.25,87.87 353.58,90.88 351.01,93.89ZM742.08,86.48c-2.69,-2.92 -5.47,-5.82 -8.28,-8.61l1.41,-1.42c2.83,2.81 5.64,5.73 8.34,8.68ZM367.31,76.42 L365.91,74.99c2.86,-2.8 5.82,-5.56 8.8,-8.22l1.33,1.49C373.09,70.9 370.15,73.64 367.31,76.42ZM725.13,69.64c-2.94,-2.67 -5.98,-5.3 -9.04,-7.83l1.28,-1.54c3.07,2.54 6.14,5.2 9.1,7.89ZM385.13,60.51 L383.87,58.96c3.09,-2.52 6.29,-5 9.5,-7.38l1.19,1.61C391.37,55.54 388.2,58.01 385.13,60.51ZM706.71,54.4c-3.18,-2.39 -6.45,-4.74 -9.71,-6.98l1.13,-1.65c3.29,2.25 6.59,4.62 9.79,7.03ZM404.31,46.29 L403.2,44.63c3.31,-2.23 6.72,-4.41 10.13,-6.48l1.04,1.71C410.98,41.92 407.6,44.08 404.31,46.29ZM686.97,40.9c-3.38,-2.09 -6.85,-4.13 -10.32,-6.06l0.97,-1.75c3.49,1.95 6.99,4 10.4,6.11ZM424.7,33.89l-0.96,-1.75c3.5,-1.92 7.09,-3.78 10.67,-5.53l0.88,1.8C431.74,30.14 428.18,31.99 424.7,33.89ZM666.07,29.25c-3.56,-1.77 -7.2,-3.49 -10.84,-5.09l0.81,-1.83c3.66,1.62 7.33,3.34 10.92,5.13ZM446.12,23.41 L445.33,21.58c3.66,-1.59 7.4,-3.11 11.13,-4.52l0.71,1.87C453.47,20.33 449.76,21.84 446.12,23.41ZM644.18,19.58c-3.7,-1.44 -7.49,-2.81 -11.27,-4.07l0.64,-1.9c3.8,1.28 7.62,2.66 11.35,4.1ZM468.43,14.94 L467.81,13.04c3.8,-1.25 7.68,-2.42 11.53,-3.49l0.53,1.93C476.05,12.54 472.2,13.7 468.43,14.94ZM621.5,11.97c-3.81,-1.09 -7.71,-2.1 -11.56,-3.01l0.46,-1.95c3.89,0.92 7.81,1.94 11.65,3.03ZM491.45,8.55l-0.45,-1.95c3.9,-0.89 7.87,-1.7 11.8,-2.41l0.36,1.97C499.26,6.86 495.32,7.67 491.45,8.55ZM598.24,6.48c-3.89,-0.73 -7.86,-1.38 -11.79,-1.93l0.28,-1.98c3.96,0.56 7.96,1.21 11.88,1.95ZM514.97,4.31 L514.7,2.32c3.96,-0.53 7.99,-0.97 11.97,-1.32l0.17,1.99C522.89,3.34 518.9,3.78 514.97,4.31ZM574.58,3.16c-3.94,-0.37 -7.95,-0.66 -11.92,-0.85l0.1,-2c4,0.19 8.04,0.48 12.01,0.86ZM538.77,2.23 L538.68,0.23c3.68,-0.15 7.42,-0.23 11.14,-0.23l0.91,0 -0.01,2 -0.9,-0C546.13,2 542.42,2.08 538.77,2.23Z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M806,481.27a12,12 0,1 1,12 -12A12.01,12.01 0,0 1,806 481.27ZM806,459.27a10,10 0,1 0,10 10A10.01,10.01 0,0 0,806 459.27Z" | ||
android:fillColor="#2f2e41"/> | ||
<path | ||
android:pathData="M486.8,173.41v65.68a2.3,2.3 0,0 1,-2.29 2.29h-1.63v342.15a35.7,35.7 0,0 1,-35.7 35.7L233.39,619.23a35.69,35.69 0,0 1,-35.69 -35.7v-330.15h-1.18a1.62,1.62 0,0 1,-1.62 -1.61v-37.38a1.62,1.62 0,0 1,1.62 -1.62h1.18v-14.08h-1.19a1.7,1.7 0,0 1,-1.69 -1.7v-36.87a1.69,1.69 0,0 1,1.69 -1.69h1.19v-19.22h-1.21a1.5,1.5 0,0 1,-1.5 -1.5v-20.12a1.51,1.51 0,0 1,1.5 -1.51h1.21v-40.74a35.69,35.69 0,0 1,35.69 -35.69L447.18,39.65a35.7,35.7 0,0 1,35.7 35.69v95.78h1.63A2.3,2.3 0,0 1,486.8 173.41Z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M315.85,57.96L350.59,57.96A2.54,2.54 0,0 1,353.13 60.5L353.13,63.5A2.54,2.54 0,0 1,350.59 66.04L315.85,66.04A2.54,2.54 0,0 1,313.31 63.5L313.31,60.5A2.54,2.54 0,0 1,315.85 57.96z" | ||
android:fillColor="#e6e8ec"/> | ||
<path | ||
android:pathData="M363.74,62m-4.59,0a4.59,4.59 0,1 1,9.17 0a4.59,4.59 0,1 1,-9.17 0" | ||
android:fillColor="#e6e8ec"/> | ||
<path | ||
android:pathData="M465.79,82.4v504.09a22.65,22.65 0,0 1,-22.65 22.64h-204.65a22.61,22.61 0,0 1,-22.65 -22.64L215.84,82.4a22.65,22.65 0,0 1,22.65 -22.65h30.63v3.93a18.65,18.65 0,0 0,18.65 18.65h104.08a18.65,18.65 0,0 0,18.65 -18.65v-3.93h32.64A22.64,22.64 0,0 1,465.79 82.4Z" | ||
android:fillColor="#00bfa6"/> | ||
<path | ||
android:fillColor="#FF000000" | ||
android:pathData="M225.83,225h232v113h-232z" | ||
android:strokeAlpha="0.2" | ||
android:fillAlpha="0.2"/> | ||
<path | ||
android:pathData="M589.83,96h232v113h-232z" | ||
android:fillColor="#f2f2f2"/> | ||
<path | ||
android:pathData="M225.83,396.28h232v113h-232z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M433.83,121.28m-20,0a20,20 0,1 1,40 0a20,20 0,1 1,-40 0" | ||
android:fillColor="#fff"/> | ||
<path | ||
android:pathData="M442.83,120.64l-8.36,0l0,-8.36l-1.29,0l0,8.36l-8.36,0l0,1.29l8.36,0l0,8.36l1.29,0l0,-8.36l8.36,0l0,-1.29z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M563.83,81h232v113h-232z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M667.39,156.87c6.07,22.45 26.88,36.35 26.88,36.35s10.96,-22.49 4.88,-44.94S672.28,111.93 672.28,111.93 661.32,134.42 667.39,156.87Z" | ||
android:fillColor="#fff"/> | ||
<path | ||
android:pathData="M676.32,152.05c16.66,16.22 18.7,41.16 18.7,41.16s-24.98,-1.36 -41.65,-17.59 -18.7,-41.16 -18.7,-41.16S659.65,135.82 676.32,152.05Z" | ||
android:fillColor="#00bfa6"/> | ||
<path | ||
android:pathData="M319.24,473.87c6.07,22.45 26.88,36.35 26.88,36.35S357.07,487.73 350.99,465.28 324.12,428.93 324.12,428.93 313.16,451.42 319.24,473.87Z" | ||
android:fillColor="#fff"/> | ||
<path | ||
android:pathData="M328.16,469.05c16.66,16.22 18.7,41.16 18.7,41.16s-24.98,-1.36 -41.65,-17.59 -18.7,-41.16 -18.7,-41.16S311.5,452.82 328.16,469.05Z" | ||
android:fillColor="#00bfa6"/> | ||
<path | ||
android:pathData="M374.49,473.87c-6.07,22.45 -26.88,36.35 -26.88,36.35S336.65,487.73 342.73,465.28 369.6,428.93 369.6,428.93 380.56,451.42 374.49,473.87Z" | ||
android:fillColor="#fff"/> | ||
<path | ||
android:pathData="M365.56,469.05c-16.66,16.22 -18.7,41.16 -18.7,41.16s24.98,-1.36 41.65,-17.59 18.7,-41.16 18.7,-41.16S382.23,452.82 365.56,469.05Z" | ||
android:fillColor="#00bfa6"/> | ||
<path | ||
android:pathData="M615.83,336.56L596.09,336.56L596.09,316.82L615.83,316.82ZM597.61,335.04h16.7v-16.7L597.61,318.34Z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M97.47,458.64 L84.01,444.21l14.44,-13.47L111.91,445.18ZM86.15,444.28 L97.55,456.5L109.76,445.1l-11.39,-12.22Z" | ||
android:fillColor="#2f2e41"/> | ||
<path | ||
android:pathData="M108.14,137.96m-10.08,0a10.08,10.08 0,1 1,20.16 0a10.08,10.08 0,1 1,-20.16 0" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M108.14,167.07a29.12,29.12 0,1 1,29.12 -29.12A29.15,29.15 0,0 1,108.14 167.07ZM108.14,111.08a26.88,26.88 0,1 0,26.88 26.88A26.91,26.91 0,0 0,108.14 111.08Z" | ||
android:fillColor="#2f2e41"/> | ||
<path | ||
android:pathData="M0,617.31h1039.83v2h-1039.83z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M275.83,207h232v113h-232z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M390.98,245.74h2v74.41h-2z" | ||
android:fillColor="#fff"/> | ||
<path | ||
android:pathData="M391.98,246.74m-10.52,0a10.52,10.52 0,1 1,21.05 0a10.52,10.52 0,1 1,-21.05 0" | ||
android:fillColor="#00bfa6"/> | ||
<path | ||
android:pathData="M391.98,291.6S390.47,259.27 359.66,263.03" | ||
android:fillColor="#fff"/> | ||
<path | ||
android:pathData="M714.03,514.4l-128.69,40.26L425.25,453.64l-0.01,-0.01 -0.52,-0.32 -0.09,-0.06 -1.27,-0.8L408.12,442.86c0.03,-0.26 0.06,-0.51 0.12,-0.75a6.9,6.9 0,0 1,1.57 -3.2,7.7 7.7,0 0,1 0.91,-0.91h0.01c0.14,-0.12 0.29,-0.24 0.45,-0.36q0.24,-0.18 0.5,-0.35c2.95,-1.98 7.39,-2.82 12.02,-3.07a57.22,57.22 0,0 1,28.85 6.25c18,9.1 56.67,27.01 62.71,16.04 7.91,-14.38 -81.96,-174.7 -81.96,-174.7 -7.4,-19.02 -1.98,-25.23 1.41,-27.18 0.1,-0.06 0.2,-0.12 0.29,-0.17a8.37,8.37 0,0 1,1.11 -0.47,5.15 5.15,0 0,1 0.61,-0.18 1.39,1.39 0,0 1,0.17 -0.04l11.92,15.85 0.18,0.24 0.64,0.86 0.19,0.26L522.07,367.01c110.72,-59.67 148.82,99.93 148.82,99.93Z" | ||
android:fillColor="#fbbebe"/> | ||
<path | ||
android:pathData="M449.81,270.97a3.13,3.13 0,0 1,-2.9 1.76,4.59 4.59,0 0,1 -1.18,-0.16c-2.67,-0.72 -5.77,-3.65 -8.09,-7.66 -2.26,-3.91 -3.18,-7.84 -2.66,-10.45a8.37,8.37 0,0 1,1.11 -0.47,5.15 5.15,0 0,1 0.61,-0.18c-0.93,1.82 -0.37,5.95 2.19,10.39 2.09,3.63 4.92,6.38 7.2,6.98a1.96,1.96 0,0 0,2.7 -1.56l0.18,0.24 0.64,0.86Z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M424.72,453.31l-0.09,-0.06 -1.27,-0.8c0.01,-2.05 -1.55,-5.41 -4.98,-8.78 -2.9,-2.83 -6.26,-4.68 -8.58,-4.77a7.7,7.7 0,0 1,0.91 -0.91h0.01c0.14,-0.12 0.29,-0.24 0.45,-0.36a18.75,18.75 0,0 1,8.22 5C423.16,446.35 425.23,450.57 424.72,453.31Z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M947.74,453.19c28.25,85.03 18.33,164.86 18.33,164.86s-55.73,-58.02 -83.98,-143.04 -18.33,-164.86 -18.33,-164.86S919.49,368.16 947.74,453.19Z" | ||
android:fillColor="#00bfa6"/> | ||
<path | ||
android:pathData="M984.4,453.19c-28.25,85.03 -18.33,164.86 -18.33,164.86s55.73,-58.02 83.98,-143.04 18.33,-164.86 18.33,-164.86S1012.65,368.16 984.4,453.19Z" | ||
android:fillColor="#00bfa6"/> | ||
<path | ||
android:pathData="M995.78,454.11c1.89,89.58 -31.15,162.92 -31.15,162.92s-36.12,-71.88 -38.01,-161.46 31.15,-162.92 31.15,-162.92S993.88,364.53 995.78,454.11Z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M961.2,374.94m-8.77,0a8.77,8.77 0,1 1,17.54 0a8.77,8.77 0,1 1,-17.54 0" | ||
android:fillColor="#00bfa6"/> | ||
<path | ||
android:pathData="M944.15,445.1m-4.87,0a4.87,4.87 0,1 1,9.74 0a4.87,4.87 0,1 1,-9.74 0" | ||
android:fillColor="#00bfa6"/> | ||
<path | ||
android:pathData="M884.71,396.87m-4.87,0a4.87,4.87 0,1 1,9.74 0a4.87,4.87 0,1 1,-9.74 0" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M1056.68,349.61m-4.87,0a4.87,4.87 0,1 1,9.74 0a4.87,4.87 0,1 1,-9.74 0" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M910.04,442.66m-4.87,0a4.87,4.87 0,1 1,9.74 0a4.87,4.87 0,1 1,-9.74 0" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M1012.35,414.4m-4.87,0a4.87,4.87 0,1 1,9.74 0a4.87,4.87 0,1 1,-9.74 0" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M912.97,514.27m-4.87,0a4.87,4.87 0,1 1,9.74 0a4.87,4.87 0,1 1,-9.74 0" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M1017.22,486.51m-4.87,0a4.87,4.87 0,1 1,9.74 0a4.87,4.87 0,1 1,-9.74 0" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M969.97,491.38m-4.87,0a4.87,4.87 0,1 1,9.74 0a4.87,4.87 0,1 1,-9.74 0" | ||
android:fillColor="#00bfa6"/> | ||
</vector> |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,156 @@ | ||
<vector xmlns:android="http://schemas.android.com/apk/res/android" | ||
android:width="1075.03dp" | ||
android:height="766.35645dp" | ||
android:viewportWidth="1075.03" | ||
android:viewportHeight="766.35645"> | ||
<path | ||
android:pathData="M829.03,736.36a123,30 0,1 0,246 0a123,30 0,1 0,-246 0z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M521.34,102.9L521.34,499.91a17.84,17.84 0,0 1,-17.84 17.83L342.32,517.74a17.81,17.81 0,0 1,-17.84 -17.83L324.48,102.9A17.84,17.84 0,0 1,342.32 85.06h24.12v3.1a14.69,14.69 0,0 0,14.69 14.69h81.97A14.69,14.69 0,0 0,477.79 88.15L477.79,85.06h25.71A17.83,17.83 0,0 1,521.34 102.9Z" | ||
android:fillColor="#00bfa6"/> | ||
<path | ||
android:pathData="M331.56,151.41h182.72v89h-182.72z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M405.13,212.52c4.78,17.68 21.17,28.63 21.17,28.63s8.63,-17.72 3.85,-35.4 -21.17,-28.63 -21.17,-28.63S400.35,194.84 405.13,212.52Z" | ||
android:fillColor="#fff"/> | ||
<path | ||
android:pathData="M412.16,208.72c13.12,12.78 14.73,32.42 14.73,32.42s-19.68,-1.07 -32.8,-13.85S379.36,194.87 379.36,194.87 399.03,195.94 412.16,208.72Z" | ||
android:fillColor="#00bfa6"/> | ||
<path | ||
android:pathData="M448.64,212.52c-4.78,17.68 -21.17,28.63 -21.17,28.63s-8.63,-17.72 -3.85,-35.4 21.17,-28.63 21.17,-28.63S453.42,194.84 448.64,212.52Z" | ||
android:fillColor="#fff"/> | ||
<path | ||
android:pathData="M441.61,208.72c-13.12,12.78 -14.73,32.42 -14.73,32.42s19.68,-1.07 32.8,-13.85S474.41,194.87 474.41,194.87 454.74,195.94 441.61,208.72Z" | ||
android:fillColor="#00bfa6"/> | ||
<path | ||
android:pathData="M347.9,290.25h150.03v8.24h-150.03z" | ||
android:fillColor="#f0f0f0"/> | ||
<path | ||
android:pathData="M347.9,303.51h150.03v8.24h-150.03z" | ||
android:fillColor="#f0f0f0"/> | ||
<path | ||
android:pathData="M347.9,316.78h150.03v8.24h-150.03z" | ||
android:fillColor="#f0f0f0"/> | ||
<path | ||
android:pathData="M347.9,330.05h150.03v8.24h-150.03z" | ||
android:fillColor="#f0f0f0"/> | ||
<path | ||
android:pathData="M418.06,377.32l33.39,23.71l-23.71,33.39l-33.39,-23.71z" | ||
android:fillColor="#f0f0f0"/> | ||
<path | ||
android:pathData="M427.45,443.03A9.45,9.45 0,1 1,436.9 433.58,9.46 9.46,0 0,1 427.45,443.03ZM427.45,425.7A7.88,7.88 0,1 0,435.33 433.58,7.88 7.88,0 0,0 427.45,425.7Z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M196.85,17.84L196.85,414.85a17.84,17.84 0,0 1,-17.84 17.83L17.84,432.68A17.81,17.81 0,0 1,-0 414.85L-0,17.84A17.84,17.84 0,0 1,17.84 0h24.12L41.96,3.1a14.69,14.69 0,0 0,14.69 14.69h81.97A14.69,14.69 0,0 0,153.31 3.1L153.31,0h25.71A17.83,17.83 0,0 1,196.85 17.84Z" | ||
android:fillColor="#f2f2f2"/> | ||
<path | ||
android:pathData="M176.41,216.78L18.89,216.78L18.89,75.8L176.41,75.8ZM20.47,215.21L174.83,215.21L174.83,77.38L20.47,77.38Z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M19.16,77.18l1.05,-1.17l155.94,139.4l-1.05,1.17z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M19.16,215.4l155.94,-139.4l1.05,1.17l-155.94,139.4z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M19.68,257.73h155.94v1.58h-155.94z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M19.68,271.91h155.94v1.58h-155.94z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M19.68,286.09h155.94v1.58h-155.94z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M19.68,300.26h77.97v1.58h-77.97z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M19.68,314.44h77.97v1.58h-77.97z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M845.03,17.84L845.03,414.85a17.84,17.84 0,0 1,-17.84 17.83L666.01,432.68a17.81,17.81 0,0 1,-17.84 -17.83L648.18,17.84a17.84,17.84 0,0 1,17.84 -17.84h24.12L690.14,3.1a14.69,14.69 0,0 0,14.69 14.69h81.97A14.69,14.69 0,0 0,801.48 3.1L801.48,0h25.71A17.83,17.83 0,0 1,845.03 17.84Z" | ||
android:fillColor="#f2f2f2"/> | ||
<path | ||
android:pathData="M669.43,203.39h155.94v1.58h-155.94z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M669.43,244.35h155.94v1.58h-155.94z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M669.43,285.3h155.94v1.58h-155.94z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M743.24,118m-25.6,0a25.6,25.6 0,1 1,51.2 0a25.6,25.6 0,1 1,-51.2 0" | ||
android:fillColor="#00bfa6"/> | ||
<path | ||
android:pathData="M785.99,196.3h11.03v25.2h-11.03z" | ||
android:fillColor="#00bfa6"/> | ||
<path | ||
android:pathData="M689.12,236.47h11.03v25.2h-11.03z" | ||
android:fillColor="#00bfa6"/> | ||
<path | ||
android:pathData="M753.7,276.64h11.03v25.2h-11.03z" | ||
android:fillColor="#00bfa6"/> | ||
<path | ||
android:pathData="M746.6,146.69a31.5,31.5 0,1 1,31.5 -31.5A31.54,31.54 0,0 1,746.6 146.69ZM746.6,85.26a29.93,29.93 0,1 0,29.93 29.93A29.96,29.96 0,0 0,746.6 85.26Z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M216.59,209.54l1.54,-1.27l63.2,76.54l-1.54,1.27z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M288.24,294.75c-5.24,-3.04 -12.5,-6.18 -18.22,-7.13l9.53,-3.4L284.69,275.51C284.54,281.31 286.25,289.03 288.24,294.75Z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M562.94,284.81l63.18,-76.55l1.54,1.27l-63.18,76.55z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M556.02,294.75c1.99,-5.72 3.71,-13.44 3.55,-19.24l5.14,8.71 9.52,3.4C568.52,288.57 561.26,291.71 556.02,294.75Z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M1016.53,377.86s0,146 -23,199l-53,119s-34,-2 -36,-16l40,-124 24,-73 6,-114Z" | ||
android:fillColor="#2f2e41"/> | ||
<path | ||
android:pathData="M983.53,381.86l-9,61 6,134 3,74s12,33 8,36l-8,6s-32,-4 -33,-6 -20,-153 -20,-153 -39,-122 -37,-124 11,-32 11,-32Z" | ||
android:fillColor="#2f2e41"/> | ||
<path | ||
android:pathData="M990.53,682.86l4,23s11,47 0,47 -31,-13 -32,-21 2,-44 2,-44Z" | ||
android:fillColor="#2f2e41"/> | ||
<path | ||
android:pathData="M939.53,690.86s8,16 13,18 27.77,15.08 14.39,23.54 -27.39,0.46 -27.39,0.46l-46,-25s6,-25 15,-27S939.53,690.86 939.53,690.86Z" | ||
android:fillColor="#2f2e41"/> | ||
<path | ||
android:pathData="M929.53,120.86m-36,0a36,36 0,1 1,72 0a36,36 0,1 1,-72 0" | ||
android:fillColor="#ffb8b8"/> | ||
<path | ||
android:pathData="M959.53,123.86s7,46 14,52 -15,27 -25,26 -21,-23 -21,-23 3,-29 -2,-37S959.53,123.86 959.53,123.86Z" | ||
android:fillColor="#ffb8b8"/> | ||
<path | ||
android:pathData="M951.53,182.86 L968.51,167.18a64.29,64.29 0,0 0,20.01 16.68c13,7 -25,79 -25,79l-61,-76s19.4,-12.9 25.7,-17.95Z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M961.53,243.86s26.8,-46.72 23.9,-61.86c0,0 39.1,9.86 41.1,22.86s-19,60 -19,60 17,119 7,120 -110,2 -112,-3 2,-20 -4,-25 -13,-2 -10,-10 16,-18 12,-24 -5,-4 -4,-8 -2,-57 -2,-57 -21,-58 -16,-62 31.23,-13.86 31.23,-13.86Z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M1041.53,399.86s-3,40 -20,38 3,-45 3,-45Z" | ||
android:fillColor="#ffb8b8"/> | ||
<path | ||
android:pathData="M892.53,398.86s6,24 13,22v-28l-3,-5Z" | ||
android:fillColor="#ffb8b8"/> | ||
<path | ||
android:pathData="M958.89,126.04a6.22,6.22 0,0 0,-1.03 -2.89,4.69 4.69,0 0,0 -2.19,-1.39 9.83,9.83 0,0 0,-11.72 5.02c-0.92,2.01 -1.37,4.61 -3.39,5.5 -2.35,1.04 -4.97,-1.18 -5.89,-3.58s-0.95,-5.13 -2.18,-7.39c-1.46,-2.68 -4.42,-4.26 -7.4,-4.89 -2.47,-0.52 -5.5,-0.8 -6.62,-3.07a6.08,6.08 0,0 1,-0.45 -2.74,28.96 28.96,0 0,1 1.79,-9.79c-9.8,-1.96 -18.51,7.6 -28.5,7.76a7.53,7.53 0,0 1,-3.68 -0.72c-2.22,-1.18 -3.18,-3.81 -3.85,-6.23q-1.06,-3.86 -1.75,-7.81L885.23,95.28a12.55,12.55 0,0 1,-1.43 -5.51,13.19 13.19,0 0,1 4.92,0.42l0.23,-5.73c2.47,3.13 7.4,2.03 11.12,0.58 7.18,-2.8 14.32,-5.83 21.85,-7.45s15.61,-1.73 22.73,1.2c7.49,3.08 13.26,9.22 18.34,15.52 2.82,3.49 5.54,7.16 7.06,11.39a27.6,27.6 0,0 1,-0.06 17.6c-1.64,5.13 -4.69,11.34 -8.79,14.9C959.77,134.56 959.57,129.92 958.89,126.04Z" | ||
android:fillColor="#2f2e41"/> | ||
<path | ||
android:pathData="M890.53,192.86l-13,3s-15,16 -16,31 -1,90 -1,90l19,62s-2,14 0,14 3,-3 3,1 -5,0 0,4l10,8 16.71,-22.16s1.29,-8.84 -1.71,-10.84 -3,-3 -2,-6 3,-4 2,-6 -4,-5 -4,-7 0,-4 -1,-5 -8,-25 -8,-25l4,-78Z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M1016.53,197.86l10,5s16,48 16,90 3,70 3,70 5,12 3,12 -4,0 -2,3 3,2 2,5 -2,-2 -1,3 0,7 -2,7 -2,13 -2,13l-24,-9s4,-5 3,-7a9.97,9.97 0,0 1,-1 -4s5,-1 0,-3 -3,-2 -2,-8 4,-5 1,-6 -21,-94 -21,-94Z" | ||
android:fillColor="#3f3d56"/> | ||
<path | ||
android:pathData="M951.51,183.18m-3,0a3,3 0,1 1,6 0a3,3 0,1 1,-6 0" | ||
android:fillColor="#2f2e41"/> | ||
<path | ||
android:pathData="M951.51,193.18m-3,0a3,3 0,1 1,6 0a3,3 0,1 1,-6 0" | ||
android:fillColor="#2f2e41"/> | ||
</vector> |