├── app
├── .gitignore
├── src
│ └── main
│ │ ├── ic_launcher-playstore.png
│ │ ├── res
│ │ ├── drawable
│ │ │ └── background.xml
│ │ └── values
│ │ │ ├── dimens.xml
│ │ │ ├── theme.xml
│ │ │ └── styles.xml
│ │ └── AndroidManifest.xml
├── proguard-rules.pro
└── build.gradle
├── styleguide
├── .gitignore
├── src
│ └── main
│ │ ├── AndroidManifest.xml
│ │ └── res
│ │ ├── mipmap-anydpi
│ │ ├── ic_launcher.xml
│ │ └── ic_launcher_round.xml
│ │ ├── drawable
│ │ ├── ic_email.xml
│ │ ├── ic_rating_star.xml
│ │ ├── ic_play_store.xml
│ │ ├── ic_github.xml
│ │ └── ic_launcher_background.xml
│ │ └── values
│ │ └── colors.xml
└── build.gradle
├── wear
├── .gitignore
├── src
│ ├── main
│ │ ├── res
│ │ │ ├── xml
│ │ │ │ └── watch_face.xml
│ │ │ ├── drawable
│ │ │ │ ├── ticks_1.png
│ │ │ │ ├── ticks_2.png
│ │ │ │ ├── ticks_3.png
│ │ │ │ ├── ticks_4.png
│ │ │ │ ├── ticks_1_zoom.png
│ │ │ │ ├── ticks_2_zoom.png
│ │ │ │ ├── ticks_3_zoom.png
│ │ │ │ ├── ticks_4_zoom.png
│ │ │ │ ├── complication_drawable.xml
│ │ │ │ ├── background_hand_preview.xml
│ │ │ │ ├── ic_arrow_down.xml
│ │ │ │ ├── ic_decline.xml
│ │ │ │ ├── remove_color_ripple.xml
│ │ │ │ ├── round_color_ripple.xml
│ │ │ │ ├── background.xml
│ │ │ │ ├── ic_confirm.xml
│ │ │ │ ├── round_add_ripple.xml
│ │ │ │ ├── square_color.xml
│ │ │ │ ├── round_color_small.xml
│ │ │ │ ├── ic_date.xml
│ │ │ │ ├── round_add.xml
│ │ │ │ ├── round_color.xml
│ │ │ │ ├── round_confirm.xml
│ │ │ │ ├── round_decline.xml
│ │ │ │ ├── ic_time.xml
│ │ │ │ ├── round_confirm_ripple.xml
│ │ │ │ ├── round_decline_ripple.xml
│ │ │ │ ├── remove_color_small.xml
│ │ │ │ ├── ic_add.xml
│ │ │ │ ├── remove_color.xml
│ │ │ │ ├── added_big_complication.xml
│ │ │ │ └── added_complication.xml
│ │ │ ├── drawable-360dpi
│ │ │ │ ├── preview.png
│ │ │ │ └── preview_round.png
│ │ │ ├── drawable-round
│ │ │ │ ├── ticks_1.png
│ │ │ │ ├── ticks_2.png
│ │ │ │ ├── ticks_3.png
│ │ │ │ ├── ticks_4.png
│ │ │ │ └── background.xml
│ │ │ ├── values
│ │ │ │ ├── constants.xml
│ │ │ │ ├── colors.xml
│ │ │ │ ├── styles.xml
│ │ │ │ └── dimens.xml
│ │ │ ├── layout
│ │ │ │ ├── activity_main.xml
│ │ │ │ ├── item_settings_color_preview.xml
│ │ │ │ ├── activity_list.xml
│ │ │ │ ├── fragment_list.xml
│ │ │ │ ├── item_color_picker.xml
│ │ │ │ ├── item_settings_button.xml
│ │ │ │ ├── item_settings_switch.xml
│ │ │ │ ├── item_settings_button_add.xml
│ │ │ │ ├── item_settings_text.xml
│ │ │ │ ├── item_ticks_picker.xml
│ │ │ │ ├── item_settings_hand_preview.xml
│ │ │ │ ├── item_settings_slider.xml
│ │ │ │ ├── item_settings_title.xml
│ │ │ │ ├── item_settings_ticks_layout_picker.xml
│ │ │ │ ├── item_settings_rate.xml
│ │ │ │ ├── item_settings_background_complication.xml
│ │ │ │ ├── activity_confirm.xml
│ │ │ │ └── fragment_choose_complications.xml
│ │ │ ├── anim
│ │ │ │ ├── slide_in_left.xml
│ │ │ │ ├── slide_in_right.xml
│ │ │ │ ├── slide_out_left.xml
│ │ │ │ └── slide_out_right.xml
│ │ │ └── values-round
│ │ │ │ └── dimens.xml
│ │ └── java
│ │ │ └── com
│ │ │ └── vlad1m1r
│ │ │ └── watchface
│ │ │ ├── settings
│ │ │ ├── hands
│ │ │ │ ├── hand
│ │ │ │ │ └── HandType.kt
│ │ │ │ ├── HandsFragment.kt
│ │ │ │ └── centralcircle
│ │ │ │ │ └── CentralCircleFragment.kt
│ │ │ ├── colorpicker
│ │ │ │ ├── OnColorAction.kt
│ │ │ │ ├── Colors.kt
│ │ │ │ └── customcolor
│ │ │ │ │ ├── ColorsPreviewViewHolder.kt
│ │ │ │ │ └── CustomColorActivity.kt
│ │ │ ├── RateApp.kt
│ │ │ ├── complications
│ │ │ │ ├── picker
│ │ │ │ │ └── ComplicationLocation.kt
│ │ │ │ └── ComplicationsFragment.kt
│ │ │ ├── base
│ │ │ │ ├── viewholders
│ │ │ │ │ ├── SettingsButtonViewHolder.kt
│ │ │ │ │ ├── TitleViewHolder.kt
│ │ │ │ │ ├── RateViewHolder.kt
│ │ │ │ │ ├── SettingsViewHolder.kt
│ │ │ │ │ ├── SettingsWithSwitchViewHolder.kt
│ │ │ │ │ ├── WatchPreviewViewHolder.kt
│ │ │ │ │ ├── SettingsSliderViewHolder.kt
│ │ │ │ │ ├── SettingsSliderScaleViewHolder.kt
│ │ │ │ │ └── ColorPickerViewHolder.kt
│ │ │ │ ├── BaseRecyclerActivity.kt
│ │ │ │ ├── BaseRecyclerFragment.kt
│ │ │ │ └── WatchPreviewView.kt
│ │ │ ├── tickslayoutpicker
│ │ │ │ ├── TicksLayoutPickerViewHolder.kt
│ │ │ │ ├── TicksLayoutPickerAdapter.kt
│ │ │ │ └── TicksLayoutPickerActivity.kt
│ │ │ ├── background
│ │ │ │ └── SettingsBackgroundComplicationViewHolder.kt
│ │ │ ├── SettingsFragment.kt
│ │ │ ├── ticks
│ │ │ │ ├── viewholders
│ │ │ │ │ └── TicksLayoutPickerViewHolder.kt
│ │ │ │ └── TicksFragment.kt
│ │ │ ├── MainActivity.kt
│ │ │ └── confirm
│ │ │ │ └── ConfirmDeleteColorActivity.kt
│ │ │ ├── data
│ │ │ ├── state
│ │ │ │ ├── HandState.kt
│ │ │ │ ├── BackgroundState.kt
│ │ │ │ ├── CircleState.kt
│ │ │ │ ├── WatchFaceState.kt
│ │ │ │ ├── ComplicationsState.kt
│ │ │ │ ├── TicksState.kt
│ │ │ │ └── HandsState.kt
│ │ │ ├── WatchFaceColors.kt
│ │ │ ├── TicksLayoutType.kt
│ │ │ ├── style
│ │ │ │ ├── CreateGeneralStyleSettings.kt
│ │ │ │ ├── CreateUserStyleSchema.kt
│ │ │ │ ├── CreateGeneralHandStyleSettings.kt
│ │ │ │ ├── CreateBackgroundStyleSettings.kt
│ │ │ │ ├── CreateHoursHandStyleSettings.kt
│ │ │ │ ├── CreateMinutesHandStyleSettings.kt
│ │ │ │ ├── CreateHandCircleStyleSettings.kt
│ │ │ │ └── CreateSecondsHandStyleSettings.kt
│ │ │ ├── di
│ │ │ │ └── StorageModule.kt
│ │ │ ├── SizeStorage.kt
│ │ │ ├── CustomColorStorage.kt
│ │ │ └── DataStorage.kt
│ │ │ ├── model
│ │ │ └── Point.kt
│ │ │ ├── WearApplication.kt
│ │ │ ├── utils
│ │ │ ├── ZonedDateTimeExt.kt
│ │ │ ├── ContextExt.kt
│ │ │ ├── PaintExt.kt
│ │ │ ├── ColorUtils.kt
│ │ │ └── ScreenMetricsCompat.kt
│ │ │ ├── components
│ │ │ ├── background
│ │ │ │ ├── BackgroundData.kt
│ │ │ │ ├── Background.kt
│ │ │ │ ├── DrawBackground.kt
│ │ │ │ ├── GetBackgroundData.kt
│ │ │ │ └── BackgroundBitmapProvider.kt
│ │ │ ├── hands
│ │ │ │ ├── CircleData.kt
│ │ │ │ ├── HandData.kt
│ │ │ │ ├── HandPaintProvider.kt
│ │ │ │ ├── DrawCircle.kt
│ │ │ │ ├── DrawHand.kt
│ │ │ │ └── Hands.kt
│ │ │ ├── ticks
│ │ │ │ ├── usecase
│ │ │ │ │ ├── AdjustTicks.kt
│ │ │ │ │ ├── AdjustToSquare.kt
│ │ │ │ │ ├── AdjustToChin.kt
│ │ │ │ │ └── RoundCorners.kt
│ │ │ │ ├── GetTicks.kt
│ │ │ │ ├── layout
│ │ │ │ │ └── TicksLayout.kt
│ │ │ │ └── TickPaintProvider.kt
│ │ │ ├── Layouts.kt
│ │ │ └── complications
│ │ │ │ ├── Complications.kt
│ │ │ │ └── ComplicationConfig.kt
│ │ │ └── AnalogWatchFace.kt
│ └── test
│ │ └── java
│ │ └── com
│ │ └── vlad1m1r
│ │ └── watchface
│ │ ├── utils
│ │ ├── HandsCalculationsMinutesShould.kt
│ │ ├── HandsCalculationsHoursShould.kt
│ │ └── HandsCalculationsSecondsShould.kt
│ │ └── components
│ │ ├── background
│ │ └── DrawBackgroundShould.kt
│ │ ├── hands
│ │ ├── DrawCircleShould.kt
│ │ └── DrawHandShould.kt
│ │ └── ticks
│ │ └── AdjustTicksShould.kt
├── proguard-rules.pro
└── build.gradle
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── .gitignore
├── settings.gradle
├── gradle.properties
├── gradlew.bat
└── README.md
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/styleguide/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/wear/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/wear/src/main/res/xml/watch_face.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VladimirWrites/AnalogWatchFace/HEAD/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/app/src/main/ic_launcher-playstore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VladimirWrites/AnalogWatchFace/HEAD/app/src/main/ic_launcher-playstore.png
--------------------------------------------------------------------------------
/wear/src/main/res/drawable/ticks_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VladimirWrites/AnalogWatchFace/HEAD/wear/src/main/res/drawable/ticks_1.png
--------------------------------------------------------------------------------
/wear/src/main/res/drawable/ticks_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VladimirWrites/AnalogWatchFace/HEAD/wear/src/main/res/drawable/ticks_2.png
--------------------------------------------------------------------------------
/wear/src/main/res/drawable/ticks_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VladimirWrites/AnalogWatchFace/HEAD/wear/src/main/res/drawable/ticks_3.png
--------------------------------------------------------------------------------
/wear/src/main/res/drawable/ticks_4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VladimirWrites/AnalogWatchFace/HEAD/wear/src/main/res/drawable/ticks_4.png
--------------------------------------------------------------------------------
/styleguide/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/wear/src/main/res/drawable/ticks_1_zoom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VladimirWrites/AnalogWatchFace/HEAD/wear/src/main/res/drawable/ticks_1_zoom.png
--------------------------------------------------------------------------------
/wear/src/main/res/drawable/ticks_2_zoom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VladimirWrites/AnalogWatchFace/HEAD/wear/src/main/res/drawable/ticks_2_zoom.png
--------------------------------------------------------------------------------
/wear/src/main/res/drawable/ticks_3_zoom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VladimirWrites/AnalogWatchFace/HEAD/wear/src/main/res/drawable/ticks_3_zoom.png
--------------------------------------------------------------------------------
/wear/src/main/res/drawable/ticks_4_zoom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VladimirWrites/AnalogWatchFace/HEAD/wear/src/main/res/drawable/ticks_4_zoom.png
--------------------------------------------------------------------------------
/wear/src/main/res/drawable-360dpi/preview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VladimirWrites/AnalogWatchFace/HEAD/wear/src/main/res/drawable-360dpi/preview.png
--------------------------------------------------------------------------------
/wear/src/main/res/drawable-round/ticks_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VladimirWrites/AnalogWatchFace/HEAD/wear/src/main/res/drawable-round/ticks_1.png
--------------------------------------------------------------------------------
/wear/src/main/res/drawable-round/ticks_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VladimirWrites/AnalogWatchFace/HEAD/wear/src/main/res/drawable-round/ticks_2.png
--------------------------------------------------------------------------------
/wear/src/main/res/drawable-round/ticks_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VladimirWrites/AnalogWatchFace/HEAD/wear/src/main/res/drawable-round/ticks_3.png
--------------------------------------------------------------------------------
/wear/src/main/res/drawable-round/ticks_4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VladimirWrites/AnalogWatchFace/HEAD/wear/src/main/res/drawable-round/ticks_4.png
--------------------------------------------------------------------------------
/wear/src/main/res/drawable-360dpi/preview_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VladimirWrites/AnalogWatchFace/HEAD/wear/src/main/res/drawable-360dpi/preview_round.png
--------------------------------------------------------------------------------
/wear/src/main/res/values/constants.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 300
4 |
--------------------------------------------------------------------------------
/wear/src/main/res/drawable/complication_drawable.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
--------------------------------------------------------------------------------
/wear/src/main/java/com/vlad1m1r/watchface/settings/hands/hand/HandType.kt:
--------------------------------------------------------------------------------
1 | package com.vlad1m1r.watchface.settings.hands.hand
2 |
3 | enum class HandType {
4 | HOURS,
5 | MINUTES,
6 | SECONDS
7 | }
--------------------------------------------------------------------------------
/wear/src/main/java/com/vlad1m1r/watchface/data/state/HandState.kt:
--------------------------------------------------------------------------------
1 | package com.vlad1m1r.watchface.data.state
2 |
3 | data class HandState(
4 |
5 | val color: Int,
6 | val width: Int,
7 | val lengthScale: Float,
8 | )
--------------------------------------------------------------------------------
/wear/src/main/java/com/vlad1m1r/watchface/data/state/BackgroundState.kt:
--------------------------------------------------------------------------------
1 | package com.vlad1m1r.watchface.data.state
2 |
3 | data class BackgroundState(
4 | val blackInAmbient: Boolean,
5 | val leftColor: Int,
6 | val rightColor: Int
7 | )
--------------------------------------------------------------------------------
/wear/src/main/java/com/vlad1m1r/watchface/model/Point.kt:
--------------------------------------------------------------------------------
1 | package com.vlad1m1r.watchface.model
2 |
3 | class Point(val x: Float = 0f, val y: Float = 0f) {
4 | operator fun component1(): Float = x
5 | operator fun component2(): Float = y
6 | }
--------------------------------------------------------------------------------
/wear/src/main/java/com/vlad1m1r/watchface/data/state/CircleState.kt:
--------------------------------------------------------------------------------
1 | package com.vlad1m1r.watchface.data.state
2 |
3 | data class CircleState(
4 | val color: Int,
5 | val width: Int,
6 | val radius: Int,
7 | val hasInAmbientMode: Boolean,
8 | )
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/caches/build_file_checksums.ser
5 | /.idea/libraries
6 | /.idea/modules.xml
7 | /.idea/workspace.xml
8 | .DS_Store
9 | /build
10 | /captures
11 | .externalNativeBuild
12 | .idea/
13 | *.aab
14 | buildSrc/build/
15 |
--------------------------------------------------------------------------------
/wear/src/main/java/com/vlad1m1r/watchface/WearApplication.kt:
--------------------------------------------------------------------------------
1 | package com.vlad1m1r.watchface
2 |
3 | import android.app.Application
4 | import androidx.annotation.Keep
5 | import dagger.hilt.android.HiltAndroidApp
6 |
7 | @Keep
8 | @HiltAndroidApp
9 | class WearApplication : Application()
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Sat Oct 08 11:21:15 CEST 2022
2 | distributionBase=GRADLE_USER_HOME
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
4 | distributionPath=wrapper/dists
5 | zipStorePath=wrapper/dists
6 | zipStoreBase=GRADLE_USER_HOME
7 |
--------------------------------------------------------------------------------
/wear/src/main/java/com/vlad1m1r/watchface/settings/colorpicker/OnColorAction.kt:
--------------------------------------------------------------------------------
1 | package com.vlad1m1r.watchface.settings.colorpicker
2 |
3 | import androidx.annotation.ColorInt
4 |
5 | interface OnColorAction {
6 | fun colorSelected(@ColorInt color: Int)
7 | fun colorDeleted(@ColorInt color: Int)
8 | }
--------------------------------------------------------------------------------
/wear/src/main/java/com/vlad1m1r/watchface/settings/colorpicker/Colors.kt:
--------------------------------------------------------------------------------
1 | package com.vlad1m1r.watchface.settings.colorpicker
2 |
3 | import androidx.annotation.ColorInt
4 |
5 | data class Colors(
6 | @ColorInt val firstColor: Int?,
7 | @ColorInt val secondColor: Int,
8 | @ColorInt val thirdColor: Int
9 | )
--------------------------------------------------------------------------------
/wear/src/main/java/com/vlad1m1r/watchface/data/state/WatchFaceState.kt:
--------------------------------------------------------------------------------
1 | package com.vlad1m1r.watchface.data.state
2 |
3 | data class WatchFaceState(
4 | val backgroundState: BackgroundState,
5 | val ticksState: TicksState,
6 | val handsState: HandsState,
7 | val complicationsState: ComplicationsState
8 | )
9 |
--------------------------------------------------------------------------------
/styleguide/src/main/res/mipmap-anydpi/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/styleguide/src/main/res/mipmap-anydpi/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/wear/src/main/res/drawable/background_hand_preview.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
--------------------------------------------------------------------------------
/wear/src/main/res/drawable/ic_arrow_down.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/wear/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/wear/src/main/java/com/vlad1m1r/watchface/utils/ZonedDateTimeExt.kt:
--------------------------------------------------------------------------------
1 | package com.vlad1m1r.watchface.utils
2 |
3 | import java.time.ZonedDateTime
4 |
5 | fun ZonedDateTime.secondsRotation() = ((second + nano / 1000000000f) * 6f) % 360
6 |
7 | fun ZonedDateTime.minutesRotation() = (minute * 6f) % 360
8 |
9 | fun ZonedDateTime.hoursRotation() = (hour * 30f + minute / 2f) % 360
--------------------------------------------------------------------------------
/app/src/main/res/drawable/background.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
8 |
9 |
--------------------------------------------------------------------------------
/wear/src/main/java/com/vlad1m1r/watchface/components/background/BackgroundData.kt:
--------------------------------------------------------------------------------
1 | package com.vlad1m1r.watchface.components.background
2 |
3 | import androidx.annotation.ColorInt
4 |
5 | data class BackgroundData(
6 | @ColorInt val leftColor: Int,
7 | @ColorInt val rightColor: Int,
8 | @ColorInt val leftColorAmbient: Int,
9 | @ColorInt val rightColorAmbient: Int
10 | )
11 |
--------------------------------------------------------------------------------
/wear/src/main/java/com/vlad1m1r/watchface/utils/ContextExt.kt:
--------------------------------------------------------------------------------
1 | package com.vlad1m1r.watchface.utils
2 |
3 | import android.content.Context
4 | import dagger.hilt.android.internal.managers.ViewComponentManager
5 |
6 | fun Context.getActivityContext(): Context {
7 | return if (this is ViewComponentManager.FragmentContextWrapper) {
8 | this.baseContext
9 | } else this
10 | }
--------------------------------------------------------------------------------
/wear/src/main/res/layout/item_settings_color_preview.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
--------------------------------------------------------------------------------
/wear/src/main/java/com/vlad1m1r/watchface/data/WatchFaceColors.kt:
--------------------------------------------------------------------------------
1 | package com.vlad1m1r.watchface.data
2 |
3 | import androidx.annotation.ColorInt
4 |
5 | data class WatchFaceColor(
6 | val id: Int,
7 | @ColorInt val color: Int,
8 | val custom: Boolean = false
9 | )
10 |
11 | fun List.toWatchFaceColors() = this.mapIndexed { index, color ->
12 | WatchFaceColor(index, color, true)
13 | }
14 |
15 |
--------------------------------------------------------------------------------
/wear/src/main/res/anim/slide_in_left.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
7 |
--------------------------------------------------------------------------------
/wear/src/main/res/anim/slide_in_right.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
7 |
--------------------------------------------------------------------------------
/wear/src/main/res/anim/slide_out_left.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
7 |
--------------------------------------------------------------------------------
/wear/src/main/res/anim/slide_out_right.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
7 |
--------------------------------------------------------------------------------
/wear/src/main/res/drawable/ic_decline.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/wear/src/main/res/drawable-round/background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
9 |
--------------------------------------------------------------------------------
/wear/src/main/java/com/vlad1m1r/watchface/data/state/ComplicationsState.kt:
--------------------------------------------------------------------------------
1 | package com.vlad1m1r.watchface.data.state
2 |
3 |
4 | data class ComplicationsState(
5 | val hasInAmbientMode: Boolean,
6 | val textColor: Int,
7 | val titleColor: Int,
8 | val iconColor: Int,
9 | val borderColor: Int,
10 | val rangedValuePrimaryColor: Int,
11 | val rangedValueSecondaryColor: Int,
12 | val backgroundColor: Int,
13 | )
--------------------------------------------------------------------------------
/wear/src/main/res/drawable/remove_color_ripple.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/wear/src/main/res/drawable/round_color_ripple.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/wear/src/main/res/layout/activity_list.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
--------------------------------------------------------------------------------
/wear/src/main/res/layout/fragment_list.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | pluginManagement {
2 | repositories {
3 | gradlePluginPortal()
4 | google()
5 | mavenCentral()
6 | }
7 | }
8 | dependencyResolutionManagement {
9 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
10 | repositories {
11 | google()
12 | mavenCentral()
13 | }
14 | }
15 |
16 | include ':wear', ':app', ':styleguide'
17 |
18 | enableFeaturePreview("VERSION_CATALOGS")
19 |
--------------------------------------------------------------------------------
/wear/src/main/java/com/vlad1m1r/watchface/components/hands/CircleData.kt:
--------------------------------------------------------------------------------
1 | package com.vlad1m1r.watchface.components.hands
2 |
3 | import androidx.annotation.ColorInt
4 |
5 | data class CircleData(
6 | @ColorInt val color: Int,
7 | @ColorInt val colorAmbient: Int,
8 | @ColorInt val shadowColor: Int,
9 | val shadowRadius: Int,
10 | val width: Int,
11 | val radius: Int,
12 | val useAntiAliasingInAmbientMode: Boolean
13 | )
14 |
--------------------------------------------------------------------------------
/wear/src/main/res/drawable/background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
10 |
11 |
--------------------------------------------------------------------------------
/wear/src/main/res/drawable/ic_confirm.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/wear/src/main/res/drawable/round_add_ripple.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/wear/src/main/java/com/vlad1m1r/watchface/data/state/TicksState.kt:
--------------------------------------------------------------------------------
1 | package com.vlad1m1r.watchface.data.state
2 |
3 | import com.vlad1m1r.watchface.data.TicksLayoutType
4 |
5 | data class TicksState(
6 | val hasInAmbientMode: Boolean,
7 | val hasInInteractiveMode: Boolean,
8 | val layoutType: TicksLayoutType,
9 | val hourTicksColor: Int,
10 | val minuteTicksColor: Int,
11 | val shouldAdjustToSquareScreen: Boolean,
12 | val useAntialiasingInAmbientMode: Boolean
13 | )
--------------------------------------------------------------------------------
/wear/src/main/res/drawable/square_color.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
9 |
10 |
13 |
14 |
--------------------------------------------------------------------------------
/wear/src/main/res/values-round/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 42dp
5 | 84dp
6 | 28dp
7 |
8 | 32dp
9 | 32dp
10 | 64dp
11 |
--------------------------------------------------------------------------------
/wear/src/main/res/drawable/round_color_small.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
10 |
11 |
14 |
--------------------------------------------------------------------------------
/wear/src/main/java/com/vlad1m1r/watchface/data/state/HandsState.kt:
--------------------------------------------------------------------------------
1 | package com.vlad1m1r.watchface.data.state
2 |
3 | data class HandsState(
4 | val hasSmoothSecondsHand: Boolean,
5 | val hasSecondHand: Boolean,
6 | val secondsHand: HandState,
7 | val minutesHand: HandState,
8 | val hoursHand: HandState,
9 | val circleState: CircleState,
10 | val hasInInteractive: Boolean,
11 | val shouldKeepHandColorInAmbientMode: Boolean,
12 | val hasHands: Boolean,
13 | val useAntialiasingInAmbientMode: Boolean,
14 | )
--------------------------------------------------------------------------------
/styleguide/src/main/res/drawable/ic_email.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/styleguide/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | alias libs.plugins.android.library
3 | alias libs.plugins.kotlin.android
4 | }
5 |
6 | apply from: "$project.rootDir/buildsystem/java_version.gradle"
7 |
8 | android {
9 | compileSdk Versions.compile_sdk
10 |
11 | defaultConfig {
12 | minSdk Versions.min_sdk
13 | targetSdk Versions.target_sdk
14 | versionCode 1
15 | versionName "1.0"
16 | }
17 |
18 | buildTypes {
19 | release {
20 | minifyEnabled false
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/wear/src/main/res/drawable/ic_date.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/wear/src/main/java/com/vlad1m1r/watchface/components/hands/HandData.kt:
--------------------------------------------------------------------------------
1 | package com.vlad1m1r.watchface.components.hands
2 |
3 | import androidx.annotation.ColorInt
4 | import androidx.annotation.FloatRange
5 |
6 | data class HandData(
7 | @ColorInt val color: Int,
8 | @ColorInt val colorAmbient: Int,
9 | @ColorInt val shadowColor: Int,
10 | val shadowRadius: Int,
11 | val width: Int,
12 | val paddingFromCenter: Int,
13 | @FloatRange(from = 0.0, to = 1.0) val handLengthRatio: Float,
14 | val useAntiAliasingInAmbientMode: Boolean
15 | )
16 |
--------------------------------------------------------------------------------
/wear/src/main/res/drawable/round_add.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
10 |
11 |
14 |
--------------------------------------------------------------------------------
/wear/src/main/res/drawable/round_color.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
10 |
11 |
14 |
--------------------------------------------------------------------------------
/wear/src/main/res/layout/item_color_picker.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/wear/src/main/res/layout/item_settings_button.xml:
--------------------------------------------------------------------------------
1 |
2 |
13 |
--------------------------------------------------------------------------------
/wear/src/main/res/drawable/round_confirm.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
10 |
11 |
14 |
--------------------------------------------------------------------------------
/wear/src/main/res/drawable/round_decline.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
10 |
11 |
14 |
--------------------------------------------------------------------------------
/wear/src/main/res/drawable/ic_time.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 24sp
4 | 18sp
5 | 16sp
6 | 14sp
7 |
8 | 1dp
9 | 128dp
10 | 64dp
11 |
12 | 8dp
13 | 16dp
14 | 32dp
15 |
--------------------------------------------------------------------------------
/wear/src/main/java/com/vlad1m1r/watchface/utils/PaintExt.kt:
--------------------------------------------------------------------------------
1 | package com.vlad1m1r.watchface.utils
2 |
3 | import android.graphics.Paint
4 | import androidx.annotation.ColorInt
5 |
6 | fun Paint.inAmbientMode(@ColorInt color: Int, isAntiAlias: Boolean) {
7 | this.color = color
8 | this.isAntiAlias = isAntiAlias
9 | clearShadowLayer()
10 | }
11 |
12 | fun Paint.inInteractiveMode(@ColorInt color: Int, @ColorInt shadowColor: Int, shadowRadius: Float) {
13 | this.color = color
14 | isAntiAlias = true
15 | setShadowLayer(
16 | shadowRadius, 0f, 0f, shadowColor
17 | )
18 | }
--------------------------------------------------------------------------------
/wear/src/main/res/drawable/round_confirm_ripple.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 |
15 |
--------------------------------------------------------------------------------
/wear/src/main/res/drawable/round_decline_ripple.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 |
15 |
--------------------------------------------------------------------------------
/wear/src/main/res/layout/item_settings_switch.xml:
--------------------------------------------------------------------------------
1 |
2 |
13 |
--------------------------------------------------------------------------------
/styleguide/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #87b2bc
4 | #377e8f
5 | #2b3948
6 | #fe7682
7 |
8 | #2b3948
9 | #377e8f
10 |
11 | #bdbdbd
12 | #ffffffff
13 | #00000000
14 | #000000
15 |
--------------------------------------------------------------------------------
/wear/src/main/java/com/vlad1m1r/watchface/settings/RateApp.kt:
--------------------------------------------------------------------------------
1 | package com.vlad1m1r.watchface.settings
2 |
3 | import android.content.Context
4 | import android.content.Intent
5 | import android.net.Uri
6 |
7 | class RateApp(private val context: Context) {
8 | fun openAppInPlayStore() {
9 | try {
10 | context.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=${context.packageName}")))
11 | } catch (exception: android.content.ActivityNotFoundException) {
12 | context.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=${context.packageName}")))
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/wear/src/main/res/layout/item_settings_button_add.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
14 |
15 |
--------------------------------------------------------------------------------
/wear/src/main/res/layout/item_settings_text.xml:
--------------------------------------------------------------------------------
1 |
2 |
15 |
--------------------------------------------------------------------------------
/wear/src/main/res/layout/item_ticks_picker.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/wear/src/main/java/com/vlad1m1r/watchface/settings/complications/picker/ComplicationLocation.kt:
--------------------------------------------------------------------------------
1 | package com.vlad1m1r.watchface.settings.complications.picker
2 |
3 | import com.vlad1m1r.watchface.components.complications.*
4 |
5 | enum class ComplicationLocation(val id: Int, val isBig: Boolean) {
6 | LEFT(LEFT_COMPLICATION_ID, false),
7 | RIGHT(RIGHT_COMPLICATION_ID, false),
8 | TOP(TOP_COMPLICATION_ID, true),
9 | BOTTOM(BOTTOM_COMPLICATION_ID, true),
10 | BACKGROUND(BACKGROUND_COMPLICATION_ID, false);
11 |
12 | companion object {
13 | fun getFromId(id: Int): ComplicationLocation {
14 | return enumValues().first {
15 | it.id == id
16 | }
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/styleguide/src/main/res/drawable/ic_rating_star.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
10 |
11 |
16 |
17 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/wear/src/main/java/com/vlad1m1r/watchface/settings/base/viewholders/SettingsButtonViewHolder.kt:
--------------------------------------------------------------------------------
1 | package com.vlad1m1r.watchface.settings.base.viewholders
2 |
3 | import android.view.View
4 | import android.widget.Button
5 | import androidx.annotation.StringRes
6 | import androidx.recyclerview.widget.RecyclerView
7 | import com.vlad1m1r.watchface.R
8 |
9 | class SettingsButtonViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
10 |
11 | fun bind(@StringRes titleRes: Int, onClickFun: () -> Unit) {
12 | itemView.findViewById