diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..127a6ed
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,5 @@
+[*.{kt,kts}]
+indent_size=4
+insert_final_newline=true
+max_line_length=120
+ktlint_disabled_rules = no-wildcard-imports, import-ordering
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
new file mode 100644
index 0000000..d1df2e6
--- /dev/null
+++ b/.github/pull_request_template.md
@@ -0,0 +1,17 @@
+## Related Tickets
+- [#Task xxxxx: Content](https://edu-redmine.sun-asterisk.vn/issues/xxxx)
+## WHAT
+-
+## Evidence (Screenshot or Video)
+
+## Review Checklist
+
+Category | View Point | Description | Expected Reviewer Answer | Self review | Reviewer2 (name)
+--- | --- | --- | --- | --- | ---
+Conventions | Does the code follow Sun* coding style and coding conventions? | https://github.com/framgia/coding-standards/blob/master/eng/android/coding_convention_android_kotlin.md | YES |
- [ ] yes |- [ ] yes
+Redmine | Does the ticket follow Sun* Redmine working process? | https://github.com/framgia/Training-Guideline/blob/master/WorkingProcess/redmine/redmine.md| YES |- [ ] yes |- [ ] yes
+Documentation | Is there any incomplete code? If so, should it be removed or flagged with a suitable marker like ‘TODO’? | | YES |- [ ] yes |- [ ] yes
+## Notes (Optional)
+*(Impacted Areas in Application(List features, api, models or services that this PR will affect))*
+
+*(Other notes)*
diff --git a/.gitignore b/.gitignore
index aa724b7..10cfdbf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,12 +1,7 @@
*.iml
.gradle
/local.properties
-/.idea/caches
-/.idea/libraries
-/.idea/modules.xml
-/.idea/workspace.xml
-/.idea/navEditor.xml
-/.idea/assetWizardSettings.xml
+/.idea
.DS_Store
/build
/captures
diff --git a/.idea/.gitignore b/.idea/.gitignore
deleted file mode 100644
index 26d3352..0000000
--- a/.idea/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
deleted file mode 100644
index fb7f4a8..0000000
--- a/.idea/compiler.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
deleted file mode 100644
index 4e3844e..0000000
--- a/.idea/gradle.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 9422e84..e348eb1 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,5 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
deleted file mode 100644
index 94a25f7..0000000
--- a/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/autodimension.gradle.kts b/app/autodimension.gradle.kts
new file mode 100644
index 0000000..ac7f438
--- /dev/null
+++ b/app/autodimension.gradle.kts
@@ -0,0 +1,65 @@
+import java.io.PrintWriter
+
+open class DimenFactory : DefaultTask() {
+ private val dimens = intArrayOf(
+ 320, 360, 384, 411, 480, 540, 600, 720, 800, 960, 1024, 1080, 1280, 1440, 2560, 3840
+ )
+ private val fromDimen = 360f
+ private val positiveMaxDP = 400
+ private val positiveMaxSP = 60
+ private val negativeMaxDP = 60
+ private val resFolder = project.projectDir.path + "/src/main/res/"
+
+ @TaskAction
+ fun create() {
+ autoCreateDimen()
+ }
+
+ private fun autoCreateDimen() {
+ // write dimen.xml
+ val defaultFolder = resFolder + "values"
+ val defaultDimensFile = "$defaultFolder/dimens.xml"
+ File(defaultFolder).mkdir()
+ File(defaultDimensFile).createNewFile()
+ writeAutoDimen(defaultDimensFile, 360)
+
+ // write other auto_dimens.xml
+ for (dimen in dimens) {
+ val folder = resFolder + "values-sw" + dimen + "dp"
+ val fileName = "$folder/auto_dimens.xml"
+ File(folder).mkdir()
+ File(fileName).createNewFile()
+ writeAutoDimen(fileName, dimen)
+ }
+ }
+
+ private fun writeAutoDimen(fileName: String, dimen: Int) {
+ println("Auto create dimension file and values $fileName")
+ val printWriter = PrintWriter(fileName)
+ printWriter.println("")
+ printWriter.println("")
+ for (i in 0..positiveMaxDP) {
+ val ratio = dimen / fromDimen
+ val dp = ratio * i
+ printWriter.printf("\t%.2fdp \r\n", i, dp)
+ }
+ printWriter.println()
+ for (i in 1..negativeMaxDP) {
+ val ratio = dimen / fromDimen
+ val dp = ratio * i
+ printWriter.printf("\t%.2fdp \r\n", i, -dp)
+ }
+ printWriter.println()
+ for (i in 1..positiveMaxSP) {
+ val ratio = dimen / fromDimen
+ val sp = ratio * i
+ printWriter.printf("\t%.2fsp \r\n", i, sp)
+ }
+ printWriter.println(" ")
+ printWriter.close()
+ }
+}
+
+tasks.register("createDimen", DimenFactory::class) {
+ create()
+}
diff --git a/app/build.gradle b/app/build.gradle
deleted file mode 100644
index 967f82a..0000000
--- a/app/build.gradle
+++ /dev/null
@@ -1,43 +0,0 @@
-plugins {
- id 'com.android.application'
- id 'kotlin-android'
-}
-
-android {
- compileSdk 30
-
- defaultConfig {
- applicationId "com.sun.structure_android"
- minSdk 21
- targetSdk 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 'androidx.core:core-ktx:1.3.2'
- implementation 'androidx.appcompat:appcompat:1.2.0'
- implementation 'com.google.android.material:material:1.3.0'
- implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
- testImplementation 'junit:junit:4.+'
- androidTestImplementation 'androidx.test.ext:junit:1.1.2'
- androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
-}
\ No newline at end of file
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
new file mode 100644
index 0000000..c36cb5d
--- /dev/null
+++ b/app/build.gradle.kts
@@ -0,0 +1,193 @@
+import com.android.build.gradle.internal.cxx.configure.gradleLocalProperties
+
+plugins {
+ id(Plugins.android_application)
+ kotlin(Plugins.kotlin_android)
+ kotlin(Plugins.kotlinApt)
+ id(Plugins.kotlinParcelize)
+ id(Plugins.detekt).version(Versions.detekt)
+ jacoco
+}
+
+buildscript {
+ apply(from = "ktlint.gradle.kts")
+ apply(from = "autodimension.gradle.kts")
+}
+
+android {
+ compileSdk = AppConfigs.compile_sdk_version
+
+ defaultConfig {
+ applicationId = AppConfigs.application_id
+ minSdk = AppConfigs.min_sdk_version
+ targetSdk = AppConfigs.target_sdk_version
+ versionCode = AppConfigs.version_code
+ versionName = AppConfigs.version_name
+
+ buildConfigField(
+ "String", "API_KEY", gradleLocalProperties(rootDir).getProperty("api_key")
+ )
+ }
+
+ buildFeatures {
+ viewBinding = true
+ }
+
+ kapt {
+ generateStubs = true
+ useBuildCache = true
+ }
+
+ flavorDimensions("appVariant")
+ productFlavors {
+ create("dev") {
+ setDimension("appVariant")
+ applicationIdSuffix = ".dev"
+ resValue("string", "app_name", "Structure-Dev")
+ }
+ create("prd") {
+ setDimension("appVariant")
+ resValue("string", "app_name", "Structure")
+ versionCode = AppConfigs.version_code_release
+ versionName = AppConfigs.version_name_release
+ }
+ }
+
+ buildTypes {
+ getByName("debug") {
+ isTestCoverageEnabled = true
+ }
+ getByName("release") {
+ isMinifyEnabled = false
+ proguardFiles(
+ getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro"
+ )
+ }
+ }
+ compileOptions {
+ sourceCompatibility = JavaVersion.VERSION_11
+ targetCompatibility = JavaVersion.VERSION_11
+ }
+ kotlinOptions {
+ jvmTarget = "11"
+ }
+}
+
+detekt {
+ config = files("$rootDir/config/detekt/detekt.yml") // config rules file
+ input = files("src/main/java")
+ reports {
+ html.enabled = true // observe findings in your browser with structure and code snippets
+ xml.enabled = false // checkstyle like format mainly for integrations like Jenkins
+ txt.enabled = false // similar to the console output, contains issue signature to manually edit baseline files
+ }
+}
+
+jacoco {
+ toolVersion = Versions.jacoco
+}
+
+project.afterEvaluate {
+ // Grab all build types and product flavors
+ val buildTypeNames: List = android.buildTypes.map { it.name }
+ val productFlavorNames: ArrayList = ArrayList(android.productFlavors.map { it.name })
+ // When no product flavors defined, use empty
+ if (productFlavorNames.isEmpty()) productFlavorNames.add("")
+ productFlavorNames.forEach { productFlavorName ->
+ buildTypeNames.forEach { buildTypeName ->
+ val sourceName: String
+ val sourcePath: String
+
+ if (productFlavorName.isEmpty()) {
+ sourcePath = buildTypeName
+ sourceName = buildTypeName
+ } else {
+ sourcePath = "$productFlavorName/$buildTypeName"
+ sourceName = "$productFlavorName${buildTypeName.capitalize()}"
+ }
+ val testTaskName = "test${sourceName.capitalize()}UnitTest"
+ // Create coverage task of form 'testFlavorTypeCoverage' depending on 'testFlavorTypeUnitTest'
+ // Ex: ./gradlew testDebugUnitTestCoverage
+ task("${testTaskName}Coverage") {
+ // where store all test to run follow second way above
+ group = "coverage"
+ description = "Generate Jacoco coverage reports on the ${sourceName.capitalize()} build."
+ val excludeFiles = setOf(
+ "androidx/**/*.class",
+ "**/BR.class",
+ "**/R.class",
+ "**/R$*.class",
+ "**/BuildConfig.*",
+ "**/Manifest*.*",
+ "**/*Test*.*",
+ "android/**/*.*",
+ "**/*Application*.*",
+ "**/*Activity*.*",
+ "**/*Fragment*.*",
+ "**/*Adapter*.*",
+ "**/*Dialog*.*",
+ "**/*Args*.*",
+ "**/*Companion*.*",
+ "**/Lambda*.*",
+ "**/*Lambda*.*",
+ "**/*Binder*.*",
+ )
+
+ //Explain to Jacoco where are you .class file java and kotlin
+ classDirectories.setFrom(
+ fileTree("build/intermediates/classes/$sourcePath").exclude(excludeFiles),
+ fileTree("build/tmp/kotlin-classes/$sourceName").exclude(excludeFiles)
+ )
+ val coverageSourceDirs = arrayListOf(
+ "src/main/java", "src/$productFlavorName/java", "src/$buildTypeName/java"
+ )
+
+ additionalSourceDirs.setFrom(files(coverageSourceDirs))
+
+ //Explain to Jacoco where is your source code
+ sourceDirectories.setFrom(files(coverageSourceDirs))
+
+ //execute file .exec to generate data report
+ executionData.setFrom(
+ fileTree(
+ mapOf(
+ "dir" to layout.buildDirectory, "includes" to listOf("**/*.exec")
+ )
+ )
+ )
+
+ reports {
+ xml.isEnabled = false
+ html.isEnabled = true
+ html.outputLocation.set(layout.buildDirectory.dir("reports/tests/coverage/${testTaskName}Report"))
+ }
+ dependsOn(testTaskName)
+ }
+ }
+ }
+}
+
+tasks {
+ check {
+ dependsOn("ktlintCheck")
+ dependsOn("ktlintFormat")
+ }
+ clean {
+ dependsOn("createDimen")
+ mustRunAfter("createDimen")
+ }
+}
+
+dependencies {
+ implementation(Deps.core_ktx)
+ implementation(Deps.appcompat)
+ implementation(Deps.material)
+ implementation(Deps.constraint_layout)
+
+ // Glide
+ implementation(Deps.glide_runtime)
+ kapt(Deps.glide_compiler)
+
+ testImplementation(Deps.junit)
+ testImplementation(Deps.mockk)
+}
diff --git a/app/ktlint.gradle.kts b/app/ktlint.gradle.kts
new file mode 100644
index 0000000..cc27b97
--- /dev/null
+++ b/app/ktlint.gradle.kts
@@ -0,0 +1,24 @@
+repositories {
+ jcenter()
+}
+
+val ktlint by configurations.creating
+val ktlintCheck by tasks.creating(JavaExec::class) {
+ group = "verification"
+ description = "Check Kotlin code style."
+ classpath = configurations.getByName("ktlint")
+ main = "com.pinterest.ktlint.Main"
+ args = listOf("src/**/*.kt", "--reporter=html,output=$buildDir/reports/ktlint/ktlint.html")
+}
+
+val ktlintFormat by tasks.creating(JavaExec::class) {
+ group = "formatting"
+ description = "Fix Kotlin code style deviations."
+ classpath = configurations.getByName("ktlint")
+ main = "com.pinterest.ktlint.Main"
+ args = listOf("-F", "src/**/*.kt")
+}
+
+dependencies {
+ ktlint(Deps.ktlint)
+}
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
index 481bb43..ff59496 100644
--- a/app/proguard-rules.pro
+++ b/app/proguard-rules.pro
@@ -1,6 +1,6 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
-# proguardFiles setting in build.gradle.
+# proguardFiles setting in build.gradle.kts.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
diff --git a/app/src/androidTest/java/com/sun/structure_android/ExampleInstrumentedTest.kt b/app/src/androidTest/java/com/sun/mvp/ExampleInstrumentedTest.kt
similarity index 94%
rename from app/src/androidTest/java/com/sun/structure_android/ExampleInstrumentedTest.kt
rename to app/src/androidTest/java/com/sun/mvp/ExampleInstrumentedTest.kt
index a855c53..b9889dc 100644
--- a/app/src/androidTest/java/com/sun/structure_android/ExampleInstrumentedTest.kt
+++ b/app/src/androidTest/java/com/sun/mvp/ExampleInstrumentedTest.kt
@@ -1,13 +1,11 @@
-package com.sun.structure_android
+package com.sun.mvp
-import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.ext.junit.runners.AndroidJUnit4
-
+import androidx.test.platform.app.InstrumentationRegistry
+import org.junit.Assert.*
import org.junit.Test
import org.junit.runner.RunWith
-import org.junit.Assert.*
-
/**
* Instrumented test, which will execute on an Android device.
*
@@ -21,4 +19,4 @@ class ExampleInstrumentedTest {
val appContext = InstrumentationRegistry.getInstrumentation().targetContext
assertEquals("com.sun.structure_android", appContext.packageName)
}
-}
\ No newline at end of file
+}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c2b6fdb..464a745 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,6 +1,8 @@
+ package="com.sun.mvp">
+
+
+ android:name="com.sun.mvp.screen.MainActivity"
+ android:exported="true"
+ android:screenOrientation="portrait">
@@ -20,4 +23,4 @@
-
\ No newline at end of file
+
diff --git a/app/src/main/java/com/sun/mvp/data/model/Movie.kt b/app/src/main/java/com/sun/mvp/data/model/Movie.kt
new file mode 100644
index 0000000..1a3b4da
--- /dev/null
+++ b/app/src/main/java/com/sun/mvp/data/model/Movie.kt
@@ -0,0 +1,26 @@
+package com.sun.mvp.data.model
+
+import android.os.Parcelable
+import kotlinx.parcelize.Parcelize
+
+@Parcelize
+data class Movie(
+ var backDropImage: String = "",
+ var overView: String = "",
+ var vote: Int = 0,
+ var voteCount: Int = 0,
+ var title: String = "",
+ var urlImage: String = "",
+ var originalTitle: String = ""
+) : Parcelable
+
+object MovieEntry {
+ const val OVERVIEW = "overview"
+ const val BACKDROP_IMAGE = "backdrop_path"
+ const val MOVIES = "results"
+ const val VOTE = "vote_average"
+ const val TITLE = "title"
+ const val VOTE_COUNT = "vote_count"
+ const val URL_IMAGE = "poster_path"
+ const val ORIGINAL_TITLE = "original_title"
+}
diff --git a/app/src/main/java/com/sun/mvp/data/repository/MovieRepository.kt b/app/src/main/java/com/sun/mvp/data/repository/MovieRepository.kt
new file mode 100644
index 0000000..edbf40a
--- /dev/null
+++ b/app/src/main/java/com/sun/mvp/data/repository/MovieRepository.kt
@@ -0,0 +1,26 @@
+package com.sun.mvp.data.repository
+
+import com.sun.mvp.data.model.Movie
+import com.sun.mvp.data.repository.source.MovieDataSource
+import com.sun.mvp.data.repository.source.remote.OnResultListener
+
+class MovieRepository private constructor(
+ private val remote: MovieDataSource.Remote,
+ private val local: MovieDataSource.Local
+) : MovieDataSource.Local, MovieDataSource.Remote {
+ override fun getMoviesLocal(listener: OnResultListener>) {
+ TODO("Not yet implemented")
+ }
+
+ override fun getMovies(listener: OnResultListener>) {
+ remote.getMovies(listener)
+ }
+
+ companion object {
+ private var instance: MovieRepository? = null
+
+ fun getInstance(remote: MovieDataSource.Remote, local: MovieDataSource.Local) = synchronized(this) {
+ instance ?: MovieRepository(remote, local).also { instance = it }
+ }
+ }
+}
diff --git a/app/src/main/java/com/sun/mvp/data/repository/source/MovieDataSource.kt b/app/src/main/java/com/sun/mvp/data/repository/source/MovieDataSource.kt
new file mode 100644
index 0000000..5490aa9
--- /dev/null
+++ b/app/src/main/java/com/sun/mvp/data/repository/source/MovieDataSource.kt
@@ -0,0 +1,20 @@
+package com.sun.mvp.data.repository.source
+
+import com.sun.mvp.data.model.Movie
+import com.sun.mvp.data.repository.source.remote.OnResultListener
+
+interface MovieDataSource {
+ /**
+ * Local
+ */
+ interface Local {
+ fun getMoviesLocal(listener: OnResultListener>)
+ }
+
+ /**
+ * Remote
+ */
+ interface Remote {
+ fun getMovies(listener: OnResultListener>)
+ }
+}
diff --git a/app/src/main/java/com/sun/mvp/data/repository/source/local/MovieLocalDataSource.kt b/app/src/main/java/com/sun/mvp/data/repository/source/local/MovieLocalDataSource.kt
new file mode 100644
index 0000000..70db68f
--- /dev/null
+++ b/app/src/main/java/com/sun/mvp/data/repository/source/local/MovieLocalDataSource.kt
@@ -0,0 +1,20 @@
+package com.sun.mvp.data.repository.source.local
+
+import com.sun.mvp.data.model.Movie
+import com.sun.mvp.data.repository.source.MovieDataSource
+import com.sun.mvp.data.repository.source.remote.OnResultListener
+
+class MovieLocalDataSource : MovieDataSource.Local {
+
+ override fun getMoviesLocal(listener: OnResultListener>) {
+ TODO("Not yet implemented")
+ }
+
+ companion object {
+ private var instance: MovieLocalDataSource? = null
+
+ fun getInstance() = synchronized(this) {
+ instance ?: MovieLocalDataSource().also { instance = it }
+ }
+ }
+}
diff --git a/app/src/main/java/com/sun/mvp/data/repository/source/remote/MovieRemoteDataSource.kt b/app/src/main/java/com/sun/mvp/data/repository/source/remote/MovieRemoteDataSource.kt
new file mode 100644
index 0000000..3fc4f8c
--- /dev/null
+++ b/app/src/main/java/com/sun/mvp/data/repository/source/remote/MovieRemoteDataSource.kt
@@ -0,0 +1,25 @@
+package com.sun.mvp.data.repository.source.remote
+
+import com.sun.mvp.data.model.Movie
+import com.sun.mvp.data.model.MovieEntry
+import com.sun.mvp.data.repository.source.MovieDataSource
+import com.sun.mvp.data.repository.source.remote.fetchjson.GetJsonFromUrl
+import com.sun.mvp.utils.Constant
+
+class MovieRemoteDataSource : MovieDataSource.Remote {
+ override fun getMovies(listener: OnResultListener>) {
+ GetJsonFromUrl(
+ urlString = Constant.BASE_URL + Constant.BASE_PAGE,
+ keyEntity = MovieEntry.MOVIES,
+ listener = listener
+ )
+ }
+
+ companion object {
+ private var instance: MovieRemoteDataSource? = null
+
+ fun getInstance() = synchronized(this) {
+ instance ?: MovieRemoteDataSource().also { instance = it }
+ }
+ }
+}
diff --git a/app/src/main/java/com/sun/mvp/data/repository/source/remote/OnResultListener.kt b/app/src/main/java/com/sun/mvp/data/repository/source/remote/OnResultListener.kt
new file mode 100644
index 0000000..4d99dd2
--- /dev/null
+++ b/app/src/main/java/com/sun/mvp/data/repository/source/remote/OnResultListener.kt
@@ -0,0 +1,8 @@
+package com.sun.mvp.data.repository.source.remote
+
+import java.lang.Exception
+
+interface OnResultListener {
+ fun onSuccess(data: T)
+ fun onError(exception: Exception?)
+}
diff --git a/app/src/main/java/com/sun/mvp/data/repository/source/remote/fetchjson/GetJsonFromUrl.kt b/app/src/main/java/com/sun/mvp/data/repository/source/remote/fetchjson/GetJsonFromUrl.kt
new file mode 100644
index 0000000..0935853
--- /dev/null
+++ b/app/src/main/java/com/sun/mvp/data/repository/source/remote/fetchjson/GetJsonFromUrl.kt
@@ -0,0 +1,67 @@
+package com.sun.mvp.data.repository.source.remote.fetchjson
+
+import android.os.Handler
+import android.os.Looper
+import com.sun.mvp.data.repository.source.remote.OnResultListener
+import com.sun.mvp.utils.Constant
+import org.json.JSONObject
+import java.io.BufferedReader
+import java.io.InputStreamReader
+import java.lang.StringBuilder
+import java.net.HttpURLConnection
+import java.net.URL
+import java.util.concurrent.Executor
+import java.util.concurrent.Executors
+
+class GetJsonFromUrl constructor(
+ private val urlString: String,
+ private val keyEntity: String,
+ private val listener: OnResultListener
+) {
+
+ private val mExecutor: Executor = Executors.newSingleThreadExecutor()
+ private val mHandler = Handler(Looper.getMainLooper())
+ private var data: T? = null
+
+ init {
+ callAPI()
+ }
+
+ private fun callAPI() {
+ mExecutor.execute {
+ val responseJson =
+ getJsonStringFromUrl(urlString + Constant.BASE_API_KEY + Constant.BASE_LANGUAGE)
+ data = ParseDataWithJson().parseJsonToData(JSONObject(responseJson), keyEntity) as? T
+ mHandler.post {
+ data?.let { listener.onSuccess(it) }
+ }
+ }
+ }
+
+ private fun getJsonStringFromUrl(urlString: String): String {
+ val url = URL(urlString)
+ val httpURLConnection = url.openConnection() as? HttpURLConnection
+ httpURLConnection?.run {
+ connectTimeout = TIME_OUT
+ readTimeout = TIME_OUT
+ requestMethod = METHOD_GET
+ doOutput = true
+ connect()
+ }
+
+ val bufferedReader = BufferedReader(InputStreamReader(url.openStream()))
+ val stringBuilder = StringBuilder()
+ var line: String?
+ while (bufferedReader.readLine().also { line = it } != null) {
+ stringBuilder.append(line)
+ }
+ bufferedReader.close()
+ httpURLConnection?.disconnect()
+ return stringBuilder.toString()
+ }
+
+ companion object {
+ private const val TIME_OUT = 15000
+ private const val METHOD_GET = "GET"
+ }
+}
diff --git a/app/src/main/java/com/sun/mvp/data/repository/source/remote/fetchjson/ParseDataWithJson.kt b/app/src/main/java/com/sun/mvp/data/repository/source/remote/fetchjson/ParseDataWithJson.kt
new file mode 100644
index 0000000..25ac5de
--- /dev/null
+++ b/app/src/main/java/com/sun/mvp/data/repository/source/remote/fetchjson/ParseDataWithJson.kt
@@ -0,0 +1,39 @@
+package com.sun.mvp.data.repository.source.remote.fetchjson
+
+import android.util.Log
+import com.sun.mvp.data.model.MovieEntry
+import com.sun.mvp.utils.ext.notNull
+import org.json.JSONException
+import org.json.JSONObject
+
+class ParseDataWithJson {
+ fun parseJsonToData(jsonObject: JSONObject?, keyEntity: String): Any {
+ val data = mutableListOf()
+ try {
+ val jsonArray = jsonObject?.getJSONArray(keyEntity)
+ for (i in 0 until (jsonArray?.length() ?: 0)) {
+ val item = parseJsonToObject(jsonArray?.getJSONObject(i), keyEntity)
+ item.notNull {
+ data.add(it)
+ }
+ }
+ } catch (e: JSONException) {
+ Log.e("ParseDataWithJson", "parseJsonToData: ", e)
+ }
+ return data
+ }
+
+ private fun parseJsonToObject(jsonObject: JSONObject?, keyEntity: String): Any? {
+ try {
+ jsonObject?.notNull {
+ return when (keyEntity) {
+ MovieEntry.MOVIES -> ParseJson().movieParseJson(it)
+ else -> null
+ }
+ }
+ } catch (e: JSONException) {
+ Log.e("ParseDataWithJson", "parseJsonToData: ", e)
+ }
+ return null
+ }
+}
diff --git a/app/src/main/java/com/sun/mvp/data/repository/source/remote/fetchjson/ParseJson.kt b/app/src/main/java/com/sun/mvp/data/repository/source/remote/fetchjson/ParseJson.kt
new file mode 100644
index 0000000..0172e61
--- /dev/null
+++ b/app/src/main/java/com/sun/mvp/data/repository/source/remote/fetchjson/ParseJson.kt
@@ -0,0 +1,20 @@
+package com.sun.mvp.data.repository.source.remote.fetchjson
+
+import com.sun.mvp.data.model.Movie
+import com.sun.mvp.data.model.MovieEntry
+import org.json.JSONObject
+
+class ParseJson {
+
+ fun movieParseJson(jsonObject: JSONObject) = Movie().apply {
+ jsonObject.let {
+ vote = it.getInt(MovieEntry.VOTE)
+ title = it.getString(MovieEntry.TITLE)
+ urlImage = it.getString(MovieEntry.URL_IMAGE)
+ originalTitle = it.getString(MovieEntry.ORIGINAL_TITLE)
+ voteCount = it.getInt(MovieEntry.VOTE_COUNT)
+ backDropImage = it.getString(MovieEntry.BACKDROP_IMAGE)
+ overView = it.getString(MovieEntry.OVERVIEW)
+ }
+ }
+}
diff --git a/app/src/main/java/com/sun/mvp/screen/MainActivity.kt b/app/src/main/java/com/sun/mvp/screen/MainActivity.kt
new file mode 100644
index 0000000..55ed14c
--- /dev/null
+++ b/app/src/main/java/com/sun/mvp/screen/MainActivity.kt
@@ -0,0 +1,20 @@
+package com.sun.mvp.screen
+
+import com.sun.mvp.R
+import com.sun.mvp.screen.listmovie.MoviesFragment
+import com.sun.mvp.utils.base.BaseActivity
+
+class MainActivity : BaseActivity() {
+
+ override fun getLayoutResourceId(): Int {
+ return R.layout.activity_main
+ }
+
+ override fun initView() {
+ supportFragmentManager
+ .beginTransaction()
+ .addToBackStack(MoviesFragment::javaClass.name)
+ .replace(R.id.layoutContainer, MoviesFragment.newInstance())
+ .commit()
+ }
+}
diff --git a/app/src/main/java/com/sun/mvp/screen/detail/DetailFragment.kt b/app/src/main/java/com/sun/mvp/screen/detail/DetailFragment.kt
new file mode 100644
index 0000000..421bd1b
--- /dev/null
+++ b/app/src/main/java/com/sun/mvp/screen/detail/DetailFragment.kt
@@ -0,0 +1,53 @@
+package com.sun.mvp.screen.detail
+
+import android.view.LayoutInflater
+import android.view.View
+import androidx.core.os.bundleOf
+import com.sun.mvp.data.model.Movie
+import com.sun.mvp.databinding.FragmentDetailBinding
+import com.sun.mvp.utils.base.BaseFragment
+import com.sun.mvp.utils.ext.goBackFragment
+import com.sun.mvp.utils.ext.loadImageCircleWithUrl
+import com.sun.mvp.utils.ext.loadImageWithUrl
+import com.sun.mvp.utils.ext.notNull
+
+class DetailFragment : BaseFragment() {
+
+ private var mMovie: Movie? = null
+
+ override fun inflateViewBinding(inflater: LayoutInflater): FragmentDetailBinding {
+ return FragmentDetailBinding.inflate(inflater)
+ }
+
+ override fun initData() {
+ arguments?.run {
+ mMovie = getParcelable(ARGUMENT_MOVIE)
+ }
+ mMovie?.notNull {
+ viewBinding.apply {
+ imageBackDrop.loadImageWithUrl(it.backDropImage)
+ imageMovie.loadImageCircleWithUrl(it.urlImage)
+ textTitle.text = it.title
+ textDescription.text = it.overView
+ textRatting.text = it.vote.toString()
+ textTotalReview.text = it.voteCount.toString()
+ }
+ }
+ }
+
+ override fun initView() {
+ viewBinding.buttonImageBack.setOnClickListener(object : View.OnClickListener {
+ override fun onClick(view: View?) {
+ goBackFragment()
+ }
+ })
+ }
+
+ companion object {
+ private const val ARGUMENT_MOVIE = "ARGUMENT_MOVIE"
+
+ fun newInstance(movie: Movie?) = DetailFragment().apply {
+ arguments = bundleOf(ARGUMENT_MOVIE to movie)
+ }
+ }
+}
diff --git a/app/src/main/java/com/sun/mvp/screen/listmovie/MoviesContract.kt b/app/src/main/java/com/sun/mvp/screen/listmovie/MoviesContract.kt
new file mode 100644
index 0000000..4cb4404
--- /dev/null
+++ b/app/src/main/java/com/sun/mvp/screen/listmovie/MoviesContract.kt
@@ -0,0 +1,22 @@
+package com.sun.mvp.screen.listmovie
+
+import com.sun.mvp.data.model.Movie
+import com.sun.mvp.utils.base.BasePresenter
+import java.lang.Exception
+
+class MoviesContract {
+ /**
+ * View
+ */
+ interface View {
+ fun onGetMoviesSuccess(movies: MutableList)
+ fun onError(exception: Exception?)
+ }
+
+ /**
+ * Presenter
+ */
+ interface Presenter : BasePresenter {
+ fun getMovies()
+ }
+}
diff --git a/app/src/main/java/com/sun/mvp/screen/listmovie/MoviesFragment.kt b/app/src/main/java/com/sun/mvp/screen/listmovie/MoviesFragment.kt
new file mode 100644
index 0000000..0d3eb55
--- /dev/null
+++ b/app/src/main/java/com/sun/mvp/screen/listmovie/MoviesFragment.kt
@@ -0,0 +1,63 @@
+package com.sun.mvp.screen.listmovie
+
+import android.view.LayoutInflater
+import android.widget.Toast
+import com.sun.mvp.R
+import com.sun.mvp.data.model.Movie
+import com.sun.mvp.data.repository.MovieRepository
+import com.sun.mvp.data.repository.source.local.MovieLocalDataSource
+import com.sun.mvp.data.repository.source.remote.MovieRemoteDataSource
+import com.sun.mvp.databinding.FragmentMoviesBinding
+import com.sun.mvp.screen.detail.DetailFragment
+import com.sun.mvp.screen.listmovie.adapter.MoviesAdapter
+import com.sun.mvp.utils.OnItemRecyclerViewClickListener
+import com.sun.mvp.utils.base.BaseFragment
+import com.sun.mvp.utils.ext.addFragment
+import java.lang.Exception
+
+class MoviesFragment :
+ BaseFragment(),
+ MoviesContract.View,
+ OnItemRecyclerViewClickListener {
+
+ private lateinit var mMoviesPresenter: MoviesPresenter
+ private val mMovieAdapter: MoviesAdapter by lazy { MoviesAdapter() }
+
+ override fun inflateViewBinding(inflater: LayoutInflater): FragmentMoviesBinding {
+ return FragmentMoviesBinding.inflate(inflater)
+ }
+
+ override fun initView() {
+ viewBinding.recyclerViewMovie.apply {
+ adapter = mMovieAdapter
+ }
+ mMovieAdapter.registerItemRecyclerViewClickListener(this)
+ }
+
+ override fun initData() {
+ mMoviesPresenter = MoviesPresenter(
+ MovieRepository.getInstance(
+ MovieRemoteDataSource.getInstance(),
+ MovieLocalDataSource.getInstance()
+ )
+ )
+ mMoviesPresenter.setView(this)
+ mMoviesPresenter.getMovies()
+ }
+
+ override fun onGetMoviesSuccess(movies: MutableList) {
+ mMovieAdapter.updateData(movies)
+ }
+
+ override fun onError(exception: Exception?) {
+ Toast.makeText(context, exception?.message, Toast.LENGTH_SHORT).show()
+ }
+
+ override fun onItemClick(item: Movie?) {
+ addFragment(R.id.layoutContainer, DetailFragment.newInstance(item), true)
+ }
+
+ companion object {
+ fun newInstance() = MoviesFragment()
+ }
+}
diff --git a/app/src/main/java/com/sun/mvp/screen/listmovie/MoviesPresenter.kt b/app/src/main/java/com/sun/mvp/screen/listmovie/MoviesPresenter.kt
new file mode 100644
index 0000000..e92ee58
--- /dev/null
+++ b/app/src/main/java/com/sun/mvp/screen/listmovie/MoviesPresenter.kt
@@ -0,0 +1,36 @@
+package com.sun.mvp.screen.listmovie
+
+import com.sun.mvp.data.model.Movie
+import com.sun.mvp.data.repository.MovieRepository
+import com.sun.mvp.data.repository.source.remote.OnResultListener
+import java.lang.Exception
+
+class MoviesPresenter internal constructor(private val movieRepository: MovieRepository?) :
+ MoviesContract.Presenter {
+
+ private var mView: MoviesContract.View? = null
+
+ override fun onStart() {
+ // No-op
+ }
+
+ override fun onStop() {
+ // No-op
+ }
+
+ override fun setView(view: MoviesContract.View?) {
+ this.mView = view
+ }
+
+ override fun getMovies() {
+ movieRepository?.getMovies(object : OnResultListener> {
+ override fun onSuccess(data: MutableList) {
+ mView?.onGetMoviesSuccess(data)
+ }
+
+ override fun onError(exception: Exception?) {
+ mView?.onError(exception)
+ }
+ })
+ }
+}
diff --git a/app/src/main/java/com/sun/mvp/screen/listmovie/adapter/MoviesAdapter.kt b/app/src/main/java/com/sun/mvp/screen/listmovie/adapter/MoviesAdapter.kt
new file mode 100644
index 0000000..4f78535
--- /dev/null
+++ b/app/src/main/java/com/sun/mvp/screen/listmovie/adapter/MoviesAdapter.kt
@@ -0,0 +1,83 @@
+package com.sun.mvp.screen.listmovie.adapter
+
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.sun.mvp.R
+import com.sun.mvp.data.model.Movie
+import com.sun.mvp.utils.OnItemRecyclerViewClickListener
+import com.sun.mvp.utils.ext.loadImageCircleWithUrl
+import com.sun.mvp.utils.ext.notNull
+
+class MoviesAdapter : RecyclerView.Adapter() {
+
+ private val movies = mutableListOf()
+ private var onItemClickListener: OnItemRecyclerViewClickListener? = null
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
+ val view =
+ LayoutInflater.from(parent.context).inflate(R.layout.item_layout_movie, parent, false)
+ return ViewHolder(view, onItemClickListener)
+ }
+
+ override fun onBindViewHolder(holder: ViewHolder, position: Int) {
+ holder.bindViewData(movies[position])
+ }
+
+ override fun getItemCount(): Int {
+ return movies.size
+ }
+
+ fun registerItemRecyclerViewClickListener(
+ onItemRecyclerViewClickListener: OnItemRecyclerViewClickListener?
+ ) {
+ onItemClickListener = onItemRecyclerViewClickListener
+ }
+
+ fun updateData(movies: MutableList?) {
+ movies.notNull {
+ this.movies.clear()
+ this.movies.addAll(it)
+ notifyDataSetChanged()
+ }
+ }
+
+ class ViewHolder(
+ itemView: View,
+ private val itemClickListener: OnItemRecyclerViewClickListener?
+ ) : RecyclerView.ViewHolder(itemView), View.OnClickListener {
+ private var mTextViewTitle: TextView? = null
+ private var mTextViewRatting: TextView? = null
+ private var mTextViewContent: TextView? = null
+ private var mImageViewIconMovie: ImageView? = null
+
+ private var movieData: Movie? = null
+ private var listener: OnItemRecyclerViewClickListener? = null
+
+ init {
+ mTextViewTitle = itemView.findViewById(R.id.textViewTitle)
+ mTextViewRatting = itemView.findViewById(R.id.textViewRatting)
+ mTextViewContent = itemView.findViewById(R.id.textViewContent)
+ mImageViewIconMovie = itemView.findViewById(R.id.imageMovie)
+ itemView.setOnClickListener(this)
+ listener = itemClickListener
+ }
+
+ fun bindViewData(movie: Movie) {
+ movie.let {
+ mTextViewTitle?.text = it.title
+ mTextViewRatting?.text = it.vote.toString()
+ mTextViewContent?.text = it.originalTitle
+ mImageViewIconMovie?.loadImageCircleWithUrl(it.urlImage)
+ movieData = it
+ }
+ }
+
+ override fun onClick(view: View?) {
+ listener?.onItemClick(movieData)
+ }
+ }
+}
diff --git a/app/src/main/java/com/sun/mvp/utils/Constant.kt b/app/src/main/java/com/sun/mvp/utils/Constant.kt
new file mode 100644
index 0000000..a711f2e
--- /dev/null
+++ b/app/src/main/java/com/sun/mvp/utils/Constant.kt
@@ -0,0 +1,11 @@
+package com.sun.mvp.utils
+
+import com.sun.mvp.BuildConfig
+
+object Constant {
+ const val BASE_URL = "https://api.themoviedb.org/3/movie/top_rated?"
+ const val BASE_URL_IMAGE = "https://image.tmdb.org/t/p/w500"
+ var BASE_API_KEY = "&api_key=" + BuildConfig.API_KEY
+ const val BASE_LANGUAGE = "&language=en-US"
+ const val BASE_PAGE = "page=1"
+}
diff --git a/app/src/main/java/com/sun/mvp/utils/OnItemRecyclerViewClickListener.kt b/app/src/main/java/com/sun/mvp/utils/OnItemRecyclerViewClickListener.kt
new file mode 100644
index 0000000..a9f9de5
--- /dev/null
+++ b/app/src/main/java/com/sun/mvp/utils/OnItemRecyclerViewClickListener.kt
@@ -0,0 +1,5 @@
+package com.sun.mvp.utils
+
+interface OnItemRecyclerViewClickListener {
+ fun onItemClick(item: T?)
+}
diff --git a/app/src/main/java/com/sun/mvp/utils/base/BaseActivity.kt b/app/src/main/java/com/sun/mvp/utils/base/BaseActivity.kt
new file mode 100644
index 0000000..663c8cf
--- /dev/null
+++ b/app/src/main/java/com/sun/mvp/utils/base/BaseActivity.kt
@@ -0,0 +1,15 @@
+package com.sun.mvp.utils.base
+
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+
+abstract class BaseActivity : AppCompatActivity() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(getLayoutResourceId())
+ initView()
+ }
+
+ abstract fun getLayoutResourceId(): Int
+ abstract fun initView()
+}
diff --git a/app/src/main/java/com/sun/mvp/utils/base/BaseFragment.kt b/app/src/main/java/com/sun/mvp/utils/base/BaseFragment.kt
new file mode 100644
index 0000000..8ff8bb2
--- /dev/null
+++ b/app/src/main/java/com/sun/mvp/utils/base/BaseFragment.kt
@@ -0,0 +1,31 @@
+package com.sun.mvp.utils.base
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.fragment.app.Fragment
+import androidx.viewbinding.ViewBinding
+
+abstract class BaseFragment : Fragment() {
+
+ private lateinit var _viewBinding: viewBinding
+ protected val viewBinding get() = _viewBinding
+
+ abstract fun inflateViewBinding(inflater: LayoutInflater): viewBinding
+
+ abstract fun initData()
+
+ abstract fun initView()
+
+ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
+ _viewBinding = inflateViewBinding(inflater)
+ initView()
+ return viewBinding.root
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ initData()
+ }
+}
diff --git a/app/src/main/java/com/sun/mvp/utils/base/BasePresenter.kt b/app/src/main/java/com/sun/mvp/utils/base/BasePresenter.kt
new file mode 100644
index 0000000..ffadddd
--- /dev/null
+++ b/app/src/main/java/com/sun/mvp/utils/base/BasePresenter.kt
@@ -0,0 +1,7 @@
+package com.sun.mvp.utils.base
+
+interface BasePresenter {
+ fun onStart()
+ fun onStop()
+ fun setView(view: T?)
+}
diff --git a/app/src/main/java/com/sun/mvp/utils/ext/AnyExt.kt b/app/src/main/java/com/sun/mvp/utils/ext/AnyExt.kt
new file mode 100644
index 0000000..1f7f3b1
--- /dev/null
+++ b/app/src/main/java/com/sun/mvp/utils/ext/AnyExt.kt
@@ -0,0 +1,9 @@
+package com.sun.mvp.utils.ext
+
+inline fun T?.notNull(f: (it: T) -> Unit) {
+ if (this != null) f(this)
+}
+
+inline fun T?.isNull(f: () -> Unit) {
+ if (this == null) f()
+}
diff --git a/app/src/main/java/com/sun/mvp/utils/ext/FragmentExt.kt b/app/src/main/java/com/sun/mvp/utils/ext/FragmentExt.kt
new file mode 100644
index 0000000..bb2023a
--- /dev/null
+++ b/app/src/main/java/com/sun/mvp/utils/ext/FragmentExt.kt
@@ -0,0 +1,54 @@
+package com.sun.mvp.utils.ext
+
+import androidx.annotation.IdRes
+import androidx.fragment.app.Fragment
+import com.sun.mvp.R
+
+fun Fragment.addFragment(
+ @IdRes containerId: Int,
+ fragment: Fragment,
+ addToBackStack: Boolean = false,
+ tag: String? = fragment::class.java.simpleName
+) {
+ activity?.supportFragmentManager?.apply {
+ beginTransaction().apply {
+ if (addToBackStack) {
+ addToBackStack(tag)
+ }
+ setCustomAnimations(
+ R.anim.slide_in_right,
+ R.anim.slide_in_right,
+ R.anim.slide_out_right,
+ R.anim.slide_out_right
+ )
+ add(containerId, fragment, tag)
+ }.commit()
+ }
+}
+
+fun Fragment.replaceFragment(
+ @IdRes containerId: Int,
+ fragment: Fragment,
+ addToBackStack: Boolean,
+ tag: String? = fragment::class.java.simpleName
+) {
+ activity?.supportFragmentManager?.apply {
+ beginTransaction().apply {
+ if (addToBackStack) {
+ addToBackStack(tag)
+ }
+ replace(containerId, fragment, tag)
+ }.commit()
+ }
+}
+
+fun Fragment.goBackFragment(): Boolean {
+ activity?.supportFragmentManager?.notNull {
+ val isShowPreviousPage = it.backStackEntryCount > 0
+ if (isShowPreviousPage) {
+ it.popBackStackImmediate()
+ }
+ return isShowPreviousPage
+ }
+ return false
+}
diff --git a/app/src/main/java/com/sun/mvp/utils/ext/ImageViewExt.kt b/app/src/main/java/com/sun/mvp/utils/ext/ImageViewExt.kt
new file mode 100644
index 0000000..9d1952e
--- /dev/null
+++ b/app/src/main/java/com/sun/mvp/utils/ext/ImageViewExt.kt
@@ -0,0 +1,18 @@
+package com.sun.mvp.utils.ext
+
+import android.widget.ImageView
+import com.bumptech.glide.Glide
+import com.sun.mvp.utils.Constant
+
+fun ImageView.loadImageCircleWithUrl(url: String) {
+ Glide.with(this)
+ .load(Constant.BASE_URL_IMAGE + url)
+ .circleCrop()
+ .into(this)
+}
+
+fun ImageView.loadImageWithUrl(url: String) {
+ Glide.with(this)
+ .load(Constant.BASE_URL_IMAGE + url)
+ .into(this)
+}
diff --git a/app/src/main/java/com/sun/structure_android/MainActivity.kt b/app/src/main/java/com/sun/structure_android/MainActivity.kt
deleted file mode 100644
index e708c5d..0000000
--- a/app/src/main/java/com/sun/structure_android/MainActivity.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.sun.structure_android
-
-import androidx.appcompat.app.AppCompatActivity
-import android.os.Bundle
-
-class MainActivity : AppCompatActivity() {
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_main)
- }
-}
\ No newline at end of file
diff --git a/app/src/main/res/anim/slide_in_right.xml b/app/src/main/res/anim/slide_in_right.xml
new file mode 100644
index 0000000..294128c
--- /dev/null
+++ b/app/src/main/res/anim/slide_in_right.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
diff --git a/app/src/main/res/anim/slide_out_right.xml b/app/src/main/res/anim/slide_out_right.xml
new file mode 100644
index 0000000..1ab787f
--- /dev/null
+++ b/app/src/main/res/anim/slide_out_right.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_back.xml b/app/src/main/res/drawable/ic_back.xml
new file mode 100644
index 0000000..3ddbf6b
--- /dev/null
+++ b/app/src/main/res/drawable/ic_back.xml
@@ -0,0 +1,11 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_corona.xml b/app/src/main/res/drawable/ic_corona.xml
new file mode 100644
index 0000000..40627fe
--- /dev/null
+++ b/app/src/main/res/drawable/ic_corona.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_star.xml b/app/src/main/res/drawable/ic_star.xml
new file mode 100644
index 0000000..d28d8a9
--- /dev/null
+++ b/app/src/main/res/drawable/ic_star.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 4fc2444..0e1491b 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -1,18 +1,7 @@
-
-
-
-
-
\ No newline at end of file
+ tools:context=".screen.MainActivity"/>
diff --git a/app/src/main/res/layout/fragment_detail.xml b/app/src/main/res/layout/fragment_detail.xml
new file mode 100644
index 0000000..422d951
--- /dev/null
+++ b/app/src/main/res/layout/fragment_detail.xml
@@ -0,0 +1,151 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_movies.xml b/app/src/main/res/layout/fragment_movies.xml
new file mode 100644
index 0000000..f6a3796
--- /dev/null
+++ b/app/src/main/res/layout/fragment_movies.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/item_layout_movie.xml b/app/src/main/res/layout/item_layout_movie.xml
new file mode 100644
index 0000000..aa4fc76
--- /dev/null
+++ b/app/src/main/res/layout/item_layout_movie.xml
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values-sw1024dp/auto_dimens.xml b/app/src/main/res/values-sw1024dp/auto_dimens.xml
new file mode 100644
index 0000000..331336b
--- /dev/null
+++ b/app/src/main/res/values-sw1024dp/auto_dimens.xml
@@ -0,0 +1,526 @@
+
+
+ 0.00dp
+ 2.84dp
+ 5.69dp
+ 8.53dp
+ 11.38dp
+ 14.22dp
+ 17.07dp
+ 19.91dp
+ 22.76dp
+ 25.60dp
+ 28.44dp
+ 31.29dp
+ 34.13dp
+ 36.98dp
+ 39.82dp
+ 42.67dp
+ 45.51dp
+ 48.36dp
+ 51.20dp
+ 54.04dp
+ 56.89dp
+ 59.73dp
+ 62.58dp
+ 65.42dp
+ 68.27dp
+ 71.11dp
+ 73.96dp
+ 76.80dp
+ 79.64dp
+ 82.49dp
+ 85.33dp
+ 88.18dp
+ 91.02dp
+ 93.87dp
+ 96.71dp
+ 99.56dp
+ 102.40dp
+ 105.24dp
+ 108.09dp
+ 110.93dp
+ 113.78dp
+ 116.62dp
+ 119.47dp
+ 122.31dp
+ 125.16dp
+ 128.00dp
+ 130.84dp
+ 133.69dp
+ 136.53dp
+ 139.38dp
+ 142.22dp
+ 145.07dp
+ 147.91dp
+ 150.76dp
+ 153.60dp
+ 156.44dp
+ 159.29dp
+ 162.13dp
+ 164.98dp
+ 167.82dp
+ 170.67dp
+ 173.51dp
+ 176.36dp
+ 179.20dp
+ 182.04dp
+ 184.89dp
+ 187.73dp
+ 190.58dp
+ 193.42dp
+ 196.27dp
+ 199.11dp
+ 201.96dp
+ 204.80dp
+ 207.64dp
+ 210.49dp
+ 213.33dp
+ 216.18dp
+ 219.02dp
+ 221.87dp
+ 224.71dp
+ 227.56dp
+ 230.40dp
+ 233.24dp
+ 236.09dp
+ 238.93dp
+ 241.78dp
+ 244.62dp
+ 247.47dp
+ 250.31dp
+ 253.16dp
+ 256.00dp
+ 258.84dp
+ 261.69dp
+ 264.53dp
+ 267.38dp
+ 270.22dp
+ 273.07dp
+ 275.91dp
+ 278.76dp
+ 281.60dp
+ 284.44dp
+ 287.29dp
+ 290.13dp
+ 292.98dp
+ 295.82dp
+ 298.67dp
+ 301.51dp
+ 304.36dp
+ 307.20dp
+ 310.04dp
+ 312.89dp
+ 315.73dp
+ 318.58dp
+ 321.42dp
+ 324.27dp
+ 327.11dp
+ 329.96dp
+ 332.80dp
+ 335.64dp
+ 338.49dp
+ 341.33dp
+ 344.18dp
+ 347.02dp
+ 349.87dp
+ 352.71dp
+ 355.56dp
+ 358.40dp
+ 361.24dp
+ 364.09dp
+ 366.93dp
+ 369.78dp
+ 372.62dp
+ 375.47dp
+ 378.31dp
+ 381.16dp
+ 384.00dp
+ 386.84dp
+ 389.69dp
+ 392.53dp
+ 395.38dp
+ 398.22dp
+ 401.07dp
+ 403.91dp
+ 406.76dp
+ 409.60dp
+ 412.44dp
+ 415.29dp
+ 418.13dp
+ 420.98dp
+ 423.82dp
+ 426.67dp
+ 429.51dp
+ 432.36dp
+ 435.20dp
+ 438.04dp
+ 440.89dp
+ 443.73dp
+ 446.58dp
+ 449.42dp
+ 452.27dp
+ 455.11dp
+ 457.96dp
+ 460.80dp
+ 463.64dp
+ 466.49dp
+ 469.33dp
+ 472.18dp
+ 475.02dp
+ 477.87dp
+ 480.71dp
+ 483.56dp
+ 486.40dp
+ 489.24dp
+ 492.09dp
+ 494.93dp
+ 497.78dp
+ 500.62dp
+ 503.47dp
+ 506.31dp
+ 509.16dp
+ 512.00dp
+ 514.84dp
+ 517.69dp
+ 520.53dp
+ 523.38dp
+ 526.22dp
+ 529.07dp
+ 531.91dp
+ 534.76dp
+ 537.60dp
+ 540.44dp
+ 543.29dp
+ 546.13dp
+ 548.98dp
+ 551.82dp
+ 554.67dp
+ 557.51dp
+ 560.36dp
+ 563.20dp
+ 566.04dp
+ 568.89dp
+ 571.73dp
+ 574.58dp
+ 577.42dp
+ 580.27dp
+ 583.11dp
+ 585.96dp
+ 588.80dp
+ 591.64dp
+ 594.49dp
+ 597.33dp
+ 600.18dp
+ 603.02dp
+ 605.87dp
+ 608.71dp
+ 611.56dp
+ 614.40dp
+ 617.24dp
+ 620.09dp
+ 622.93dp
+ 625.78dp
+ 628.62dp
+ 631.47dp
+ 634.31dp
+ 637.16dp
+ 640.00dp
+ 642.84dp
+ 645.69dp
+ 648.53dp
+ 651.38dp
+ 654.22dp
+ 657.07dp
+ 659.91dp
+ 662.76dp
+ 665.60dp
+ 668.44dp
+ 671.29dp
+ 674.13dp
+ 676.98dp
+ 679.82dp
+ 682.67dp
+ 685.51dp
+ 688.36dp
+ 691.20dp
+ 694.04dp
+ 696.89dp
+ 699.73dp
+ 702.58dp
+ 705.42dp
+ 708.27dp
+ 711.11dp
+ 713.96dp
+ 716.80dp
+ 719.64dp
+ 722.49dp
+ 725.33dp
+ 728.18dp
+ 731.02dp
+ 733.87dp
+ 736.71dp
+ 739.56dp
+ 742.40dp
+ 745.24dp
+ 748.09dp
+ 750.93dp
+ 753.78dp
+ 756.62dp
+ 759.47dp
+ 762.31dp
+ 765.16dp
+ 768.00dp
+ 770.84dp
+ 773.69dp
+ 776.53dp
+ 779.38dp
+ 782.22dp
+ 785.07dp
+ 787.91dp
+ 790.76dp
+ 793.60dp
+ 796.44dp
+ 799.29dp
+ 802.13dp
+ 804.98dp
+ 807.82dp
+ 810.67dp
+ 813.51dp
+ 816.36dp
+ 819.20dp
+ 822.04dp
+ 824.89dp
+ 827.73dp
+ 830.58dp
+ 833.42dp
+ 836.27dp
+ 839.11dp
+ 841.96dp
+ 844.80dp
+ 847.64dp
+ 850.49dp
+ 853.33dp
+ 856.18dp
+ 859.02dp
+ 861.87dp
+ 864.71dp
+ 867.56dp
+ 870.40dp
+ 873.24dp
+ 876.09dp
+ 878.93dp
+ 881.78dp
+ 884.62dp
+ 887.47dp
+ 890.31dp
+ 893.16dp
+ 896.00dp
+ 898.84dp
+ 901.69dp
+ 904.53dp
+ 907.38dp
+ 910.22dp
+ 913.07dp
+ 915.91dp
+ 918.76dp
+ 921.60dp
+ 924.44dp
+ 927.29dp
+ 930.13dp
+ 932.98dp
+ 935.82dp
+ 938.67dp
+ 941.51dp
+ 944.36dp
+ 947.20dp
+ 950.04dp
+ 952.89dp
+ 955.73dp
+ 958.58dp
+ 961.42dp
+ 964.27dp
+ 967.11dp
+ 969.96dp
+ 972.80dp
+ 975.64dp
+ 978.49dp
+ 981.33dp
+ 984.18dp
+ 987.02dp
+ 989.87dp
+ 992.71dp
+ 995.56dp
+ 998.40dp
+ 1001.24dp
+ 1004.09dp
+ 1006.93dp
+ 1009.78dp
+ 1012.62dp
+ 1015.47dp
+ 1018.31dp
+ 1021.16dp
+ 1024.00dp
+ 1026.84dp
+ 1029.69dp
+ 1032.53dp
+ 1035.38dp
+ 1038.22dp
+ 1041.07dp
+ 1043.91dp
+ 1046.76dp
+ 1049.60dp
+ 1052.44dp
+ 1055.29dp
+ 1058.13dp
+ 1060.98dp
+ 1063.82dp
+ 1066.67dp
+ 1069.51dp
+ 1072.36dp
+ 1075.20dp
+ 1078.04dp
+ 1080.89dp
+ 1083.73dp
+ 1086.58dp
+ 1089.42dp
+ 1092.27dp
+ 1095.11dp
+ 1097.96dp
+ 1100.80dp
+ 1103.64dp
+ 1106.49dp
+ 1109.33dp
+ 1112.18dp
+ 1115.02dp
+ 1117.87dp
+ 1120.71dp
+ 1123.56dp
+ 1126.40dp
+ 1129.24dp
+ 1132.09dp
+ 1134.93dp
+ 1137.78dp
+
+ -2.84dp
+ -5.69dp
+ -8.53dp
+ -11.38dp
+ -14.22dp
+ -17.07dp
+ -19.91dp
+ -22.76dp
+ -25.60dp
+ -28.44dp
+ -31.29dp
+ -34.13dp
+ -36.98dp
+ -39.82dp
+ -42.67dp
+ -45.51dp
+ -48.36dp
+ -51.20dp
+ -54.04dp
+ -56.89dp
+ -59.73dp
+ -62.58dp
+ -65.42dp
+ -68.27dp
+ -71.11dp
+ -73.96dp
+ -76.80dp
+ -79.64dp
+ -82.49dp
+ -85.33dp
+ -88.18dp
+ -91.02dp
+ -93.87dp
+ -96.71dp
+ -99.56dp
+ -102.40dp
+ -105.24dp
+ -108.09dp
+ -110.93dp
+ -113.78dp
+ -116.62dp
+ -119.47dp
+ -122.31dp
+ -125.16dp
+ -128.00dp
+ -130.84dp
+ -133.69dp
+ -136.53dp
+ -139.38dp
+ -142.22dp
+ -145.07dp
+ -147.91dp
+ -150.76dp
+ -153.60dp
+ -156.44dp
+ -159.29dp
+ -162.13dp
+ -164.98dp
+ -167.82dp
+ -170.67dp
+
+ 2.84sp
+ 5.69sp
+ 8.53sp
+ 11.38sp
+ 14.22sp
+ 17.07sp
+ 19.91sp
+ 22.76sp
+ 25.60sp
+ 28.44sp
+ 31.29sp
+ 34.13sp
+ 36.98sp
+ 39.82sp
+ 42.67sp
+ 45.51sp
+ 48.36sp
+ 51.20sp
+ 54.04sp
+ 56.89sp
+ 59.73sp
+ 62.58sp
+ 65.42sp
+ 68.27sp
+ 71.11sp
+ 73.96sp
+ 76.80sp
+ 79.64sp
+ 82.49sp
+ 85.33sp
+ 88.18sp
+ 91.02sp
+ 93.87sp
+ 96.71sp
+ 99.56sp
+ 102.40sp
+ 105.24sp
+ 108.09sp
+ 110.93sp
+ 113.78sp
+ 116.62sp
+ 119.47sp
+ 122.31sp
+ 125.16sp
+ 128.00sp
+ 130.84sp
+ 133.69sp
+ 136.53sp
+ 139.38sp
+ 142.22sp
+ 145.07sp
+ 147.91sp
+ 150.76sp
+ 153.60sp
+ 156.44sp
+ 159.29sp
+ 162.13sp
+ 164.98sp
+ 167.82sp
+ 170.67sp
+
diff --git a/app/src/main/res/values-sw1080dp/auto_dimens.xml b/app/src/main/res/values-sw1080dp/auto_dimens.xml
new file mode 100644
index 0000000..7cc3a45
--- /dev/null
+++ b/app/src/main/res/values-sw1080dp/auto_dimens.xml
@@ -0,0 +1,526 @@
+
+
+ 0.00dp
+ 3.00dp
+ 6.00dp
+ 9.00dp
+ 12.00dp
+ 15.00dp
+ 18.00dp
+ 21.00dp
+ 24.00dp
+ 27.00dp
+ 30.00dp
+ 33.00dp
+ 36.00dp
+ 39.00dp
+ 42.00dp
+ 45.00dp
+ 48.00dp
+ 51.00dp
+ 54.00dp
+ 57.00dp
+ 60.00dp
+ 63.00dp
+ 66.00dp
+ 69.00dp
+ 72.00dp
+ 75.00dp
+ 78.00dp
+ 81.00dp
+ 84.00dp
+ 87.00dp
+ 90.00dp
+ 93.00dp
+ 96.00dp
+ 99.00dp
+ 102.00dp
+ 105.00dp
+ 108.00dp
+ 111.00dp
+ 114.00dp
+ 117.00dp
+ 120.00dp
+ 123.00dp
+ 126.00dp
+ 129.00dp
+ 132.00dp
+ 135.00dp
+ 138.00dp
+ 141.00dp
+ 144.00dp
+ 147.00dp
+ 150.00dp
+ 153.00dp
+ 156.00dp
+ 159.00dp
+ 162.00dp
+ 165.00dp
+ 168.00dp
+ 171.00dp
+ 174.00dp
+ 177.00dp
+ 180.00dp
+ 183.00dp
+ 186.00dp
+ 189.00dp
+ 192.00dp
+ 195.00dp
+ 198.00dp
+ 201.00dp
+ 204.00dp
+ 207.00dp
+ 210.00dp
+ 213.00dp
+ 216.00dp
+ 219.00dp
+ 222.00dp
+ 225.00dp
+ 228.00dp
+ 231.00dp
+ 234.00dp
+ 237.00dp
+ 240.00dp
+ 243.00dp
+ 246.00dp
+ 249.00dp
+ 252.00dp
+ 255.00dp
+ 258.00dp
+ 261.00dp
+ 264.00dp
+ 267.00dp
+ 270.00dp
+ 273.00dp
+ 276.00dp
+ 279.00dp
+ 282.00dp
+ 285.00dp
+ 288.00dp
+ 291.00dp
+ 294.00dp
+ 297.00dp
+ 300.00dp
+ 303.00dp
+ 306.00dp
+ 309.00dp
+ 312.00dp
+ 315.00dp
+ 318.00dp
+ 321.00dp
+ 324.00dp
+ 327.00dp
+ 330.00dp
+ 333.00dp
+ 336.00dp
+ 339.00dp
+ 342.00dp
+ 345.00dp
+ 348.00dp
+ 351.00dp
+ 354.00dp
+ 357.00dp
+ 360.00dp
+ 363.00dp
+ 366.00dp
+ 369.00dp
+ 372.00dp
+ 375.00dp
+ 378.00dp
+ 381.00dp
+ 384.00dp
+ 387.00dp
+ 390.00dp
+ 393.00dp
+ 396.00dp
+ 399.00dp
+ 402.00dp
+ 405.00dp
+ 408.00dp
+ 411.00dp
+ 414.00dp
+ 417.00dp
+ 420.00dp
+ 423.00dp
+ 426.00dp
+ 429.00dp
+ 432.00dp
+ 435.00dp
+ 438.00dp
+ 441.00dp
+ 444.00dp
+ 447.00dp
+ 450.00dp
+ 453.00dp
+ 456.00dp
+ 459.00dp
+ 462.00dp
+ 465.00dp
+ 468.00dp
+ 471.00dp
+ 474.00dp
+ 477.00dp
+ 480.00dp
+ 483.00dp
+ 486.00dp
+ 489.00dp
+ 492.00dp
+ 495.00dp
+ 498.00dp
+ 501.00dp
+ 504.00dp
+ 507.00dp
+ 510.00dp
+ 513.00dp
+ 516.00dp
+ 519.00dp
+ 522.00dp
+ 525.00dp
+ 528.00dp
+ 531.00dp
+ 534.00dp
+ 537.00dp
+ 540.00dp
+ 543.00dp
+ 546.00dp
+ 549.00dp
+ 552.00dp
+ 555.00dp
+ 558.00dp
+ 561.00dp
+ 564.00dp
+ 567.00dp
+ 570.00dp
+ 573.00dp
+ 576.00dp
+ 579.00dp
+ 582.00dp
+ 585.00dp
+ 588.00dp
+ 591.00dp
+ 594.00dp
+ 597.00dp
+ 600.00dp
+ 603.00dp
+ 606.00dp
+ 609.00dp
+ 612.00dp
+ 615.00dp
+ 618.00dp
+ 621.00dp
+ 624.00dp
+ 627.00dp
+ 630.00dp
+ 633.00dp
+ 636.00dp
+ 639.00dp
+ 642.00dp
+ 645.00dp
+ 648.00dp
+ 651.00dp
+ 654.00dp
+ 657.00dp
+ 660.00dp
+ 663.00dp
+ 666.00dp
+ 669.00dp
+ 672.00dp
+ 675.00dp
+ 678.00dp
+ 681.00dp
+ 684.00dp
+ 687.00dp
+ 690.00dp
+ 693.00dp
+ 696.00dp
+ 699.00dp
+ 702.00dp
+ 705.00dp
+ 708.00dp
+ 711.00dp
+ 714.00dp
+ 717.00dp
+ 720.00dp
+ 723.00dp
+ 726.00dp
+ 729.00dp
+ 732.00dp
+ 735.00dp
+ 738.00dp
+ 741.00dp
+ 744.00dp
+ 747.00dp
+ 750.00dp
+ 753.00dp
+ 756.00dp
+ 759.00dp
+ 762.00dp
+ 765.00dp
+ 768.00dp
+ 771.00dp
+ 774.00dp
+ 777.00dp
+ 780.00dp
+ 783.00dp
+ 786.00dp
+ 789.00dp
+ 792.00dp
+ 795.00dp
+ 798.00dp
+ 801.00dp
+ 804.00dp
+ 807.00dp
+ 810.00dp
+ 813.00dp
+ 816.00dp
+ 819.00dp
+ 822.00dp
+ 825.00dp
+ 828.00dp
+ 831.00dp
+ 834.00dp
+ 837.00dp
+ 840.00dp
+ 843.00dp
+ 846.00dp
+ 849.00dp
+ 852.00dp
+ 855.00dp
+ 858.00dp
+ 861.00dp
+ 864.00dp
+ 867.00dp
+ 870.00dp
+ 873.00dp
+ 876.00dp
+ 879.00dp
+ 882.00dp
+ 885.00dp
+ 888.00dp
+ 891.00dp
+ 894.00dp
+ 897.00dp
+ 900.00dp
+ 903.00dp
+ 906.00dp
+ 909.00dp
+ 912.00dp
+ 915.00dp
+ 918.00dp
+ 921.00dp
+ 924.00dp
+ 927.00dp
+ 930.00dp
+ 933.00dp
+ 936.00dp
+ 939.00dp
+ 942.00dp
+ 945.00dp
+ 948.00dp
+ 951.00dp
+ 954.00dp
+ 957.00dp
+ 960.00dp
+ 963.00dp
+ 966.00dp
+ 969.00dp
+ 972.00dp
+ 975.00dp
+ 978.00dp
+ 981.00dp
+ 984.00dp
+ 987.00dp
+ 990.00dp
+ 993.00dp
+ 996.00dp
+ 999.00dp
+ 1002.00dp
+ 1005.00dp
+ 1008.00dp
+ 1011.00dp
+ 1014.00dp
+ 1017.00dp
+ 1020.00dp
+ 1023.00dp
+ 1026.00dp
+ 1029.00dp
+ 1032.00dp
+ 1035.00dp
+ 1038.00dp
+ 1041.00dp
+ 1044.00dp
+ 1047.00dp
+ 1050.00dp
+ 1053.00dp
+ 1056.00dp
+ 1059.00dp
+ 1062.00dp
+ 1065.00dp
+ 1068.00dp
+ 1071.00dp
+ 1074.00dp
+ 1077.00dp
+ 1080.00dp
+ 1083.00dp
+ 1086.00dp
+ 1089.00dp
+ 1092.00dp
+ 1095.00dp
+ 1098.00dp
+ 1101.00dp
+ 1104.00dp
+ 1107.00dp
+ 1110.00dp
+ 1113.00dp
+ 1116.00dp
+ 1119.00dp
+ 1122.00dp
+ 1125.00dp
+ 1128.00dp
+ 1131.00dp
+ 1134.00dp
+ 1137.00dp
+ 1140.00dp
+ 1143.00dp
+ 1146.00dp
+ 1149.00dp
+ 1152.00dp
+ 1155.00dp
+ 1158.00dp
+ 1161.00dp
+ 1164.00dp
+ 1167.00dp
+ 1170.00dp
+ 1173.00dp
+ 1176.00dp
+ 1179.00dp
+ 1182.00dp
+ 1185.00dp
+ 1188.00dp
+ 1191.00dp
+ 1194.00dp
+ 1197.00dp
+ 1200.00dp
+
+ -3.00dp
+ -6.00dp
+ -9.00dp
+ -12.00dp
+ -15.00dp
+ -18.00dp
+ -21.00dp
+ -24.00dp
+ -27.00dp
+ -30.00dp
+ -33.00dp
+ -36.00dp
+ -39.00dp
+ -42.00dp
+ -45.00dp
+ -48.00dp
+ -51.00dp
+ -54.00dp
+ -57.00dp
+ -60.00dp
+ -63.00dp
+ -66.00dp
+ -69.00dp
+ -72.00dp
+ -75.00dp
+ -78.00dp
+ -81.00dp
+ -84.00dp
+ -87.00dp
+ -90.00dp
+ -93.00dp
+ -96.00dp
+ -99.00dp
+ -102.00dp
+ -105.00dp
+ -108.00dp
+ -111.00dp
+ -114.00dp
+ -117.00dp
+ -120.00dp
+ -123.00dp
+ -126.00dp
+ -129.00dp
+ -132.00dp
+ -135.00dp
+ -138.00dp
+ -141.00dp
+ -144.00dp
+ -147.00dp
+ -150.00dp
+ -153.00dp
+ -156.00dp
+ -159.00dp
+ -162.00dp
+ -165.00dp
+ -168.00dp
+ -171.00dp
+ -174.00dp
+ -177.00dp
+ -180.00dp
+
+ 3.00sp
+ 6.00sp
+ 9.00sp
+ 12.00sp
+ 15.00sp
+ 18.00sp
+ 21.00sp
+ 24.00sp
+ 27.00sp
+ 30.00sp
+ 33.00sp
+ 36.00sp
+ 39.00sp
+ 42.00sp
+ 45.00sp
+ 48.00sp
+ 51.00sp
+ 54.00sp
+ 57.00sp
+ 60.00sp
+ 63.00sp
+ 66.00sp
+ 69.00sp
+ 72.00sp
+ 75.00sp
+ 78.00sp
+ 81.00sp
+ 84.00sp
+ 87.00sp
+ 90.00sp
+ 93.00sp
+ 96.00sp
+ 99.00sp
+ 102.00sp
+ 105.00sp
+ 108.00sp
+ 111.00sp
+ 114.00sp
+ 117.00sp
+ 120.00sp
+ 123.00sp
+ 126.00sp
+ 129.00sp
+ 132.00sp
+ 135.00sp
+ 138.00sp
+ 141.00sp
+ 144.00sp
+ 147.00sp
+ 150.00sp
+ 153.00sp
+ 156.00sp
+ 159.00sp
+ 162.00sp
+ 165.00sp
+ 168.00sp
+ 171.00sp
+ 174.00sp
+ 177.00sp
+ 180.00sp
+
diff --git a/app/src/main/res/values-sw1280dp/auto_dimens.xml b/app/src/main/res/values-sw1280dp/auto_dimens.xml
new file mode 100644
index 0000000..a2b81d7
--- /dev/null
+++ b/app/src/main/res/values-sw1280dp/auto_dimens.xml
@@ -0,0 +1,526 @@
+
+
+ 0.00dp
+ 3.56dp
+ 7.11dp
+ 10.67dp
+ 14.22dp
+ 17.78dp
+ 21.33dp
+ 24.89dp
+ 28.44dp
+ 32.00dp
+ 35.56dp
+ 39.11dp
+ 42.67dp
+ 46.22dp
+ 49.78dp
+ 53.33dp
+ 56.89dp
+ 60.44dp
+ 64.00dp
+ 67.56dp
+ 71.11dp
+ 74.67dp
+ 78.22dp
+ 81.78dp
+ 85.33dp
+ 88.89dp
+ 92.44dp
+ 96.00dp
+ 99.56dp
+ 103.11dp
+ 106.67dp
+ 110.22dp
+ 113.78dp
+ 117.33dp
+ 120.89dp
+ 124.44dp
+ 128.00dp
+ 131.56dp
+ 135.11dp
+ 138.67dp
+ 142.22dp
+ 145.78dp
+ 149.33dp
+ 152.89dp
+ 156.44dp
+ 160.00dp
+ 163.56dp
+ 167.11dp
+ 170.67dp
+ 174.22dp
+ 177.78dp
+ 181.33dp
+ 184.89dp
+ 188.44dp
+ 192.00dp
+ 195.56dp
+ 199.11dp
+ 202.67dp
+ 206.22dp
+ 209.78dp
+ 213.33dp
+ 216.89dp
+ 220.44dp
+ 224.00dp
+ 227.56dp
+ 231.11dp
+ 234.67dp
+ 238.22dp
+ 241.78dp
+ 245.33dp
+ 248.89dp
+ 252.44dp
+ 256.00dp
+ 259.56dp
+ 263.11dp
+ 266.67dp
+ 270.22dp
+ 273.78dp
+ 277.33dp
+ 280.89dp
+ 284.44dp
+ 288.00dp
+ 291.56dp
+ 295.11dp
+ 298.67dp
+ 302.22dp
+ 305.78dp
+ 309.33dp
+ 312.89dp
+ 316.44dp
+ 320.00dp
+ 323.56dp
+ 327.11dp
+ 330.67dp
+ 334.22dp
+ 337.78dp
+ 341.33dp
+ 344.89dp
+ 348.44dp
+ 352.00dp
+ 355.56dp
+ 359.11dp
+ 362.67dp
+ 366.22dp
+ 369.78dp
+ 373.33dp
+ 376.89dp
+ 380.44dp
+ 384.00dp
+ 387.56dp
+ 391.11dp
+ 394.67dp
+ 398.22dp
+ 401.78dp
+ 405.33dp
+ 408.89dp
+ 412.44dp
+ 416.00dp
+ 419.56dp
+ 423.11dp
+ 426.67dp
+ 430.22dp
+ 433.78dp
+ 437.33dp
+ 440.89dp
+ 444.44dp
+ 448.00dp
+ 451.56dp
+ 455.11dp
+ 458.67dp
+ 462.22dp
+ 465.78dp
+ 469.33dp
+ 472.89dp
+ 476.44dp
+ 480.00dp
+ 483.56dp
+ 487.11dp
+ 490.67dp
+ 494.22dp
+ 497.78dp
+ 501.33dp
+ 504.89dp
+ 508.44dp
+ 512.00dp
+ 515.56dp
+ 519.11dp
+ 522.67dp
+ 526.22dp
+ 529.78dp
+ 533.33dp
+ 536.89dp
+ 540.44dp
+ 544.00dp
+ 547.56dp
+ 551.11dp
+ 554.67dp
+ 558.22dp
+ 561.78dp
+ 565.33dp
+ 568.89dp
+ 572.44dp
+ 576.00dp
+ 579.56dp
+ 583.11dp
+ 586.67dp
+ 590.22dp
+ 593.78dp
+ 597.33dp
+ 600.89dp
+ 604.44dp
+ 608.00dp
+ 611.56dp
+ 615.11dp
+ 618.67dp
+ 622.22dp
+ 625.78dp
+ 629.33dp
+ 632.89dp
+ 636.44dp
+ 640.00dp
+ 643.56dp
+ 647.11dp
+ 650.67dp
+ 654.22dp
+ 657.78dp
+ 661.33dp
+ 664.89dp
+ 668.44dp
+ 672.00dp
+ 675.56dp
+ 679.11dp
+ 682.67dp
+ 686.22dp
+ 689.78dp
+ 693.33dp
+ 696.89dp
+ 700.44dp
+ 704.00dp
+ 707.56dp
+ 711.11dp
+ 714.67dp
+ 718.22dp
+ 721.78dp
+ 725.33dp
+ 728.89dp
+ 732.44dp
+ 736.00dp
+ 739.56dp
+ 743.11dp
+ 746.67dp
+ 750.22dp
+ 753.78dp
+ 757.33dp
+ 760.89dp
+ 764.44dp
+ 768.00dp
+ 771.56dp
+ 775.11dp
+ 778.67dp
+ 782.22dp
+ 785.78dp
+ 789.33dp
+ 792.89dp
+ 796.44dp
+ 800.00dp
+ 803.56dp
+ 807.11dp
+ 810.67dp
+ 814.22dp
+ 817.78dp
+ 821.33dp
+ 824.89dp
+ 828.44dp
+ 832.00dp
+ 835.56dp
+ 839.11dp
+ 842.67dp
+ 846.22dp
+ 849.78dp
+ 853.33dp
+ 856.89dp
+ 860.44dp
+ 864.00dp
+ 867.56dp
+ 871.11dp
+ 874.67dp
+ 878.22dp
+ 881.78dp
+ 885.33dp
+ 888.89dp
+ 892.44dp
+ 896.00dp
+ 899.56dp
+ 903.11dp
+ 906.67dp
+ 910.22dp
+ 913.78dp
+ 917.33dp
+ 920.89dp
+ 924.44dp
+ 928.00dp
+ 931.56dp
+ 935.11dp
+ 938.67dp
+ 942.22dp
+ 945.78dp
+ 949.33dp
+ 952.89dp
+ 956.44dp
+ 960.00dp
+ 963.56dp
+ 967.11dp
+ 970.67dp
+ 974.22dp
+ 977.78dp
+ 981.33dp
+ 984.89dp
+ 988.44dp
+ 992.00dp
+ 995.56dp
+ 999.11dp
+ 1002.67dp
+ 1006.22dp
+ 1009.78dp
+ 1013.33dp
+ 1016.89dp
+ 1020.44dp
+ 1024.00dp
+ 1027.56dp
+ 1031.11dp
+ 1034.67dp
+ 1038.22dp
+ 1041.78dp
+ 1045.33dp
+ 1048.89dp
+ 1052.44dp
+ 1056.00dp
+ 1059.56dp
+ 1063.11dp
+ 1066.67dp
+ 1070.22dp
+ 1073.78dp
+ 1077.33dp
+ 1080.89dp
+ 1084.44dp
+ 1088.00dp
+ 1091.56dp
+ 1095.11dp
+ 1098.67dp
+ 1102.22dp
+ 1105.78dp
+ 1109.33dp
+ 1112.89dp
+ 1116.44dp
+ 1120.00dp
+ 1123.56dp
+ 1127.11dp
+ 1130.67dp
+ 1134.22dp
+ 1137.78dp
+ 1141.33dp
+ 1144.89dp
+ 1148.44dp
+ 1152.00dp
+ 1155.56dp
+ 1159.11dp
+ 1162.67dp
+ 1166.22dp
+ 1169.78dp
+ 1173.33dp
+ 1176.89dp
+ 1180.44dp
+ 1184.00dp
+ 1187.56dp
+ 1191.11dp
+ 1194.67dp
+ 1198.22dp
+ 1201.78dp
+ 1205.33dp
+ 1208.89dp
+ 1212.44dp
+ 1216.00dp
+ 1219.56dp
+ 1223.11dp
+ 1226.67dp
+ 1230.22dp
+ 1233.78dp
+ 1237.33dp
+ 1240.89dp
+ 1244.44dp
+ 1248.00dp
+ 1251.56dp
+ 1255.11dp
+ 1258.67dp
+ 1262.22dp
+ 1265.78dp
+ 1269.33dp
+ 1272.89dp
+ 1276.44dp
+ 1280.00dp
+ 1283.56dp
+ 1287.11dp
+ 1290.67dp
+ 1294.22dp
+ 1297.78dp
+ 1301.33dp
+ 1304.89dp
+ 1308.44dp
+ 1312.00dp
+ 1315.56dp
+ 1319.11dp
+ 1322.67dp
+ 1326.22dp
+ 1329.78dp
+ 1333.33dp
+ 1336.89dp
+ 1340.44dp
+ 1344.00dp
+ 1347.56dp
+ 1351.11dp
+ 1354.67dp
+ 1358.22dp
+ 1361.78dp
+ 1365.33dp
+ 1368.89dp
+ 1372.44dp
+ 1376.00dp
+ 1379.56dp
+ 1383.11dp
+ 1386.67dp
+ 1390.22dp
+ 1393.78dp
+ 1397.33dp
+ 1400.89dp
+ 1404.44dp
+ 1408.00dp
+ 1411.56dp
+ 1415.11dp
+ 1418.67dp
+ 1422.22dp
+
+ -3.56dp
+ -7.11dp
+ -10.67dp
+ -14.22dp
+ -17.78dp
+ -21.33dp
+ -24.89dp
+ -28.44dp
+ -32.00dp
+ -35.56dp
+ -39.11dp
+ -42.67dp
+ -46.22dp
+ -49.78dp
+ -53.33dp
+ -56.89dp
+ -60.44dp
+ -64.00dp
+ -67.56dp
+ -71.11dp
+ -74.67dp
+ -78.22dp
+ -81.78dp
+ -85.33dp
+ -88.89dp
+ -92.44dp
+ -96.00dp
+ -99.56dp
+ -103.11dp
+ -106.67dp
+ -110.22dp
+ -113.78dp
+ -117.33dp
+ -120.89dp
+ -124.44dp
+ -128.00dp
+ -131.56dp
+ -135.11dp
+ -138.67dp
+ -142.22dp
+ -145.78dp
+ -149.33dp
+ -152.89dp
+ -156.44dp
+ -160.00dp
+ -163.56dp
+ -167.11dp
+ -170.67dp
+ -174.22dp
+ -177.78dp
+ -181.33dp
+ -184.89dp
+ -188.44dp
+ -192.00dp
+ -195.56dp
+ -199.11dp
+ -202.67dp
+ -206.22dp
+ -209.78dp
+ -213.33dp
+
+ 3.56sp
+ 7.11sp
+ 10.67sp
+ 14.22sp
+ 17.78sp
+ 21.33sp
+ 24.89sp
+ 28.44sp
+ 32.00sp
+ 35.56sp
+ 39.11sp
+ 42.67sp
+ 46.22sp
+ 49.78sp
+ 53.33sp
+ 56.89sp
+ 60.44sp
+ 64.00sp
+ 67.56sp
+ 71.11sp
+ 74.67sp
+ 78.22sp
+ 81.78sp
+ 85.33sp
+ 88.89sp
+ 92.44sp
+ 96.00sp
+ 99.56sp
+ 103.11sp
+ 106.67sp
+ 110.22sp
+ 113.78sp
+ 117.33sp
+ 120.89sp
+ 124.44sp
+ 128.00sp
+ 131.56sp
+ 135.11sp
+ 138.67sp
+ 142.22sp
+ 145.78sp
+ 149.33sp
+ 152.89sp
+ 156.44sp
+ 160.00sp
+ 163.56sp
+ 167.11sp
+ 170.67sp
+ 174.22sp
+ 177.78sp
+ 181.33sp
+ 184.89sp
+ 188.44sp
+ 192.00sp
+ 195.56sp
+ 199.11sp
+ 202.67sp
+ 206.22sp
+ 209.78sp
+ 213.33sp
+
diff --git a/app/src/main/res/values-sw1440dp/auto_dimens.xml b/app/src/main/res/values-sw1440dp/auto_dimens.xml
new file mode 100644
index 0000000..f63ca2c
--- /dev/null
+++ b/app/src/main/res/values-sw1440dp/auto_dimens.xml
@@ -0,0 +1,526 @@
+
+
+ 0.00dp
+ 4.00dp
+ 8.00dp
+ 12.00dp
+ 16.00dp
+ 20.00dp
+ 24.00dp
+ 28.00dp
+ 32.00dp
+ 36.00dp
+ 40.00dp
+ 44.00dp
+ 48.00dp
+ 52.00dp
+ 56.00dp
+ 60.00dp
+ 64.00dp
+ 68.00dp
+ 72.00dp
+ 76.00dp
+ 80.00dp
+ 84.00dp
+ 88.00dp
+ 92.00dp
+ 96.00dp
+ 100.00dp
+ 104.00dp
+ 108.00dp
+ 112.00dp
+ 116.00dp
+ 120.00dp
+ 124.00dp
+ 128.00dp
+ 132.00dp
+ 136.00dp
+ 140.00dp
+ 144.00dp
+ 148.00dp
+ 152.00dp
+ 156.00dp
+ 160.00dp
+ 164.00dp
+ 168.00dp
+ 172.00dp
+ 176.00dp
+ 180.00dp
+ 184.00dp
+ 188.00dp
+ 192.00dp
+ 196.00dp
+ 200.00dp
+ 204.00dp
+ 208.00dp
+ 212.00dp
+ 216.00dp
+ 220.00dp
+ 224.00dp
+ 228.00dp
+ 232.00dp
+ 236.00dp
+ 240.00dp
+ 244.00dp
+ 248.00dp
+ 252.00dp
+ 256.00dp
+ 260.00dp
+ 264.00dp
+ 268.00dp
+ 272.00dp
+ 276.00dp
+ 280.00dp
+ 284.00dp
+ 288.00dp
+ 292.00dp
+ 296.00dp
+ 300.00dp
+ 304.00dp
+ 308.00dp
+ 312.00dp
+ 316.00dp
+ 320.00dp
+ 324.00dp
+ 328.00dp
+ 332.00dp
+ 336.00dp
+ 340.00dp
+ 344.00dp
+ 348.00dp
+ 352.00dp
+ 356.00dp
+ 360.00dp
+ 364.00dp
+ 368.00dp
+ 372.00dp
+ 376.00dp
+ 380.00dp
+ 384.00dp
+ 388.00dp
+ 392.00dp
+ 396.00dp
+ 400.00dp
+ 404.00dp
+ 408.00dp
+ 412.00dp
+ 416.00dp
+ 420.00dp
+ 424.00dp
+ 428.00dp
+ 432.00dp
+ 436.00dp
+ 440.00dp
+ 444.00dp
+ 448.00dp
+ 452.00dp
+ 456.00dp
+ 460.00dp
+ 464.00dp
+ 468.00dp
+ 472.00dp
+ 476.00dp
+ 480.00dp
+ 484.00dp
+ 488.00dp
+ 492.00dp
+ 496.00dp
+ 500.00dp
+ 504.00dp
+ 508.00dp
+ 512.00dp
+ 516.00dp
+ 520.00dp
+ 524.00dp
+ 528.00dp
+ 532.00dp
+ 536.00dp
+ 540.00dp
+ 544.00dp
+ 548.00dp
+ 552.00dp
+ 556.00dp
+ 560.00dp
+ 564.00dp
+ 568.00dp
+ 572.00dp
+ 576.00dp
+ 580.00dp
+ 584.00dp
+ 588.00dp
+ 592.00dp
+ 596.00dp
+ 600.00dp
+ 604.00dp
+ 608.00dp
+ 612.00dp
+ 616.00dp
+ 620.00dp
+ 624.00dp
+ 628.00dp
+ 632.00dp
+ 636.00dp
+ 640.00dp
+ 644.00dp
+ 648.00dp
+ 652.00dp
+ 656.00dp
+ 660.00dp
+ 664.00dp
+ 668.00dp
+ 672.00dp
+ 676.00dp
+ 680.00dp
+ 684.00dp
+ 688.00dp
+ 692.00dp
+ 696.00dp
+ 700.00dp
+ 704.00dp
+ 708.00dp
+ 712.00dp
+ 716.00dp
+ 720.00dp
+ 724.00dp
+ 728.00dp
+ 732.00dp
+ 736.00dp
+ 740.00dp
+ 744.00dp
+ 748.00dp
+ 752.00dp
+ 756.00dp
+ 760.00dp
+ 764.00dp
+ 768.00dp
+ 772.00dp
+ 776.00dp
+ 780.00dp
+ 784.00dp
+ 788.00dp
+ 792.00dp
+ 796.00dp
+ 800.00dp
+ 804.00dp
+ 808.00dp
+ 812.00dp
+ 816.00dp
+ 820.00dp
+ 824.00dp
+ 828.00dp
+ 832.00dp
+ 836.00dp
+ 840.00dp
+ 844.00dp
+ 848.00dp
+ 852.00dp
+ 856.00dp
+ 860.00dp
+ 864.00dp
+ 868.00dp
+ 872.00dp
+ 876.00dp
+ 880.00dp
+ 884.00dp
+ 888.00dp
+ 892.00dp
+ 896.00dp
+ 900.00dp
+ 904.00dp
+ 908.00dp
+ 912.00dp
+ 916.00dp
+ 920.00dp
+ 924.00dp
+ 928.00dp
+ 932.00dp
+ 936.00dp
+ 940.00dp
+ 944.00dp
+ 948.00dp
+ 952.00dp
+ 956.00dp
+ 960.00dp
+ 964.00dp
+ 968.00dp
+ 972.00dp
+ 976.00dp
+ 980.00dp
+ 984.00dp
+ 988.00dp
+ 992.00dp
+ 996.00dp
+ 1000.00dp
+ 1004.00dp
+ 1008.00dp
+ 1012.00dp
+ 1016.00dp
+ 1020.00dp
+ 1024.00dp
+ 1028.00dp
+ 1032.00dp
+ 1036.00dp
+ 1040.00dp
+ 1044.00dp
+ 1048.00dp
+ 1052.00dp
+ 1056.00dp
+ 1060.00dp
+ 1064.00dp
+ 1068.00dp
+ 1072.00dp
+ 1076.00dp
+ 1080.00dp
+ 1084.00dp
+ 1088.00dp
+ 1092.00dp
+ 1096.00dp
+ 1100.00dp
+ 1104.00dp
+ 1108.00dp
+ 1112.00dp
+ 1116.00dp
+ 1120.00dp
+ 1124.00dp
+ 1128.00dp
+ 1132.00dp
+ 1136.00dp
+ 1140.00dp
+ 1144.00dp
+ 1148.00dp
+ 1152.00dp
+ 1156.00dp
+ 1160.00dp
+ 1164.00dp
+ 1168.00dp
+ 1172.00dp
+ 1176.00dp
+ 1180.00dp
+ 1184.00dp
+ 1188.00dp
+ 1192.00dp
+ 1196.00dp
+ 1200.00dp
+ 1204.00dp
+ 1208.00dp
+ 1212.00dp
+ 1216.00dp
+ 1220.00dp
+ 1224.00dp
+ 1228.00dp
+ 1232.00dp
+ 1236.00dp
+ 1240.00dp
+ 1244.00dp
+ 1248.00dp
+ 1252.00dp
+ 1256.00dp
+ 1260.00dp
+ 1264.00dp
+ 1268.00dp
+ 1272.00dp
+ 1276.00dp
+ 1280.00dp
+ 1284.00dp
+ 1288.00dp
+ 1292.00dp
+ 1296.00dp
+ 1300.00dp
+ 1304.00dp
+ 1308.00dp
+ 1312.00dp
+ 1316.00dp
+ 1320.00dp
+ 1324.00dp
+ 1328.00dp
+ 1332.00dp
+ 1336.00dp
+ 1340.00dp
+ 1344.00dp
+ 1348.00dp
+ 1352.00dp
+ 1356.00dp
+ 1360.00dp
+ 1364.00dp
+ 1368.00dp
+ 1372.00dp
+ 1376.00dp
+ 1380.00dp
+ 1384.00dp
+ 1388.00dp
+ 1392.00dp
+ 1396.00dp
+ 1400.00dp
+ 1404.00dp
+ 1408.00dp
+ 1412.00dp
+ 1416.00dp
+ 1420.00dp
+ 1424.00dp
+ 1428.00dp
+ 1432.00dp
+ 1436.00dp
+ 1440.00dp
+ 1444.00dp
+ 1448.00dp
+ 1452.00dp
+ 1456.00dp
+ 1460.00dp
+ 1464.00dp
+ 1468.00dp
+ 1472.00dp
+ 1476.00dp
+ 1480.00dp
+ 1484.00dp
+ 1488.00dp
+ 1492.00dp
+ 1496.00dp
+ 1500.00dp
+ 1504.00dp
+ 1508.00dp
+ 1512.00dp
+ 1516.00dp
+ 1520.00dp
+ 1524.00dp
+ 1528.00dp
+ 1532.00dp
+ 1536.00dp
+ 1540.00dp
+ 1544.00dp
+ 1548.00dp
+ 1552.00dp
+ 1556.00dp
+ 1560.00dp
+ 1564.00dp
+ 1568.00dp
+ 1572.00dp
+ 1576.00dp
+ 1580.00dp
+ 1584.00dp
+ 1588.00dp
+ 1592.00dp
+ 1596.00dp
+ 1600.00dp
+
+ -4.00dp
+ -8.00dp
+ -12.00dp
+ -16.00dp
+ -20.00dp
+ -24.00dp
+ -28.00dp
+ -32.00dp
+ -36.00dp
+ -40.00dp
+ -44.00dp
+ -48.00dp
+ -52.00dp
+ -56.00dp
+ -60.00dp
+ -64.00dp
+ -68.00dp
+ -72.00dp
+ -76.00dp
+ -80.00dp
+ -84.00dp
+ -88.00dp
+ -92.00dp
+ -96.00dp
+ -100.00dp
+ -104.00dp
+ -108.00dp
+ -112.00dp
+ -116.00dp
+ -120.00dp
+ -124.00dp
+ -128.00dp
+ -132.00dp
+ -136.00dp
+ -140.00dp
+ -144.00dp
+ -148.00dp
+ -152.00dp
+ -156.00dp
+ -160.00dp
+ -164.00dp
+ -168.00dp
+ -172.00dp
+ -176.00dp
+ -180.00dp
+ -184.00dp
+ -188.00dp
+ -192.00dp
+ -196.00dp
+ -200.00dp
+ -204.00dp
+ -208.00dp
+ -212.00dp
+ -216.00dp
+ -220.00dp
+ -224.00dp
+ -228.00dp
+ -232.00dp
+ -236.00dp
+ -240.00dp
+
+ 4.00sp
+ 8.00sp
+ 12.00sp
+ 16.00sp
+ 20.00sp
+ 24.00sp
+ 28.00sp
+ 32.00sp
+ 36.00sp
+ 40.00sp
+ 44.00sp
+ 48.00sp
+ 52.00sp
+ 56.00sp
+ 60.00sp
+ 64.00sp
+ 68.00sp
+ 72.00sp
+ 76.00sp
+ 80.00sp
+ 84.00sp
+ 88.00sp
+ 92.00sp
+ 96.00sp
+ 100.00sp
+ 104.00sp
+ 108.00sp
+ 112.00sp
+ 116.00sp
+ 120.00sp
+ 124.00sp
+ 128.00sp
+ 132.00sp
+ 136.00sp
+ 140.00sp
+ 144.00sp
+ 148.00sp
+ 152.00sp
+ 156.00sp
+ 160.00sp
+ 164.00sp
+ 168.00sp
+ 172.00sp
+ 176.00sp
+ 180.00sp
+ 184.00sp
+ 188.00sp
+ 192.00sp
+ 196.00sp
+ 200.00sp
+ 204.00sp
+ 208.00sp
+ 212.00sp
+ 216.00sp
+ 220.00sp
+ 224.00sp
+ 228.00sp
+ 232.00sp
+ 236.00sp
+ 240.00sp
+
diff --git a/app/src/main/res/values-sw2560dp/auto_dimens.xml b/app/src/main/res/values-sw2560dp/auto_dimens.xml
new file mode 100644
index 0000000..adbdac0
--- /dev/null
+++ b/app/src/main/res/values-sw2560dp/auto_dimens.xml
@@ -0,0 +1,526 @@
+
+
+ 0.00dp
+ 7.11dp
+ 14.22dp
+ 21.33dp
+ 28.44dp
+ 35.56dp
+ 42.67dp
+ 49.78dp
+ 56.89dp
+ 64.00dp
+ 71.11dp
+ 78.22dp
+ 85.33dp
+ 92.44dp
+ 99.56dp
+ 106.67dp
+ 113.78dp
+ 120.89dp
+ 128.00dp
+ 135.11dp
+ 142.22dp
+ 149.33dp
+ 156.44dp
+ 163.56dp
+ 170.67dp
+ 177.78dp
+ 184.89dp
+ 192.00dp
+ 199.11dp
+ 206.22dp
+ 213.33dp
+ 220.44dp
+ 227.56dp
+ 234.67dp
+ 241.78dp
+ 248.89dp
+ 256.00dp
+ 263.11dp
+ 270.22dp
+ 277.33dp
+ 284.44dp
+ 291.56dp
+ 298.67dp
+ 305.78dp
+ 312.89dp
+ 320.00dp
+ 327.11dp
+ 334.22dp
+ 341.33dp
+ 348.44dp
+ 355.56dp
+ 362.67dp
+ 369.78dp
+ 376.89dp
+ 384.00dp
+ 391.11dp
+ 398.22dp
+ 405.33dp
+ 412.44dp
+ 419.56dp
+ 426.67dp
+ 433.78dp
+ 440.89dp
+ 448.00dp
+ 455.11dp
+ 462.22dp
+ 469.33dp
+ 476.44dp
+ 483.56dp
+ 490.67dp
+ 497.78dp
+ 504.89dp
+ 512.00dp
+ 519.11dp
+ 526.22dp
+ 533.33dp
+ 540.44dp
+ 547.56dp
+ 554.67dp
+ 561.78dp
+ 568.89dp
+ 576.00dp
+ 583.11dp
+ 590.22dp
+ 597.33dp
+ 604.44dp
+ 611.56dp
+ 618.67dp
+ 625.78dp
+ 632.89dp
+ 640.00dp
+ 647.11dp
+ 654.22dp
+ 661.33dp
+ 668.44dp
+ 675.56dp
+ 682.67dp
+ 689.78dp
+ 696.89dp
+ 704.00dp
+ 711.11dp
+ 718.22dp
+ 725.33dp
+ 732.44dp
+ 739.56dp
+ 746.67dp
+ 753.78dp
+ 760.89dp
+ 768.00dp
+ 775.11dp
+ 782.22dp
+ 789.33dp
+ 796.44dp
+ 803.56dp
+ 810.67dp
+ 817.78dp
+ 824.89dp
+ 832.00dp
+ 839.11dp
+ 846.22dp
+ 853.33dp
+ 860.44dp
+ 867.56dp
+ 874.67dp
+ 881.78dp
+ 888.89dp
+ 896.00dp
+ 903.11dp
+ 910.22dp
+ 917.33dp
+ 924.44dp
+ 931.56dp
+ 938.67dp
+ 945.78dp
+ 952.89dp
+ 960.00dp
+ 967.11dp
+ 974.22dp
+ 981.33dp
+ 988.44dp
+ 995.56dp
+ 1002.67dp
+ 1009.78dp
+ 1016.89dp
+ 1024.00dp
+ 1031.11dp
+ 1038.22dp
+ 1045.33dp
+ 1052.44dp
+ 1059.56dp
+ 1066.67dp
+ 1073.78dp
+ 1080.89dp
+ 1088.00dp
+ 1095.11dp
+ 1102.22dp
+ 1109.33dp
+ 1116.44dp
+ 1123.56dp
+ 1130.67dp
+ 1137.78dp
+ 1144.89dp
+ 1152.00dp
+ 1159.11dp
+ 1166.22dp
+ 1173.33dp
+ 1180.44dp
+ 1187.56dp
+ 1194.67dp
+ 1201.78dp
+ 1208.89dp
+ 1216.00dp
+ 1223.11dp
+ 1230.22dp
+ 1237.33dp
+ 1244.44dp
+ 1251.56dp
+ 1258.67dp
+ 1265.78dp
+ 1272.89dp
+ 1280.00dp
+ 1287.11dp
+ 1294.22dp
+ 1301.33dp
+ 1308.44dp
+ 1315.56dp
+ 1322.67dp
+ 1329.78dp
+ 1336.89dp
+ 1344.00dp
+ 1351.11dp
+ 1358.22dp
+ 1365.33dp
+ 1372.44dp
+ 1379.56dp
+ 1386.67dp
+ 1393.78dp
+ 1400.89dp
+ 1408.00dp
+ 1415.11dp
+ 1422.22dp
+ 1429.33dp
+ 1436.44dp
+ 1443.56dp
+ 1450.67dp
+ 1457.78dp
+ 1464.89dp
+ 1472.00dp
+ 1479.11dp
+ 1486.22dp
+ 1493.33dp
+ 1500.44dp
+ 1507.56dp
+ 1514.67dp
+ 1521.78dp
+ 1528.89dp
+ 1536.00dp
+ 1543.11dp
+ 1550.22dp
+ 1557.33dp
+ 1564.44dp
+ 1571.56dp
+ 1578.67dp
+ 1585.78dp
+ 1592.89dp
+ 1600.00dp
+ 1607.11dp
+ 1614.22dp
+ 1621.33dp
+ 1628.44dp
+ 1635.56dp
+ 1642.67dp
+ 1649.78dp
+ 1656.89dp
+ 1664.00dp
+ 1671.11dp
+ 1678.22dp
+ 1685.33dp
+ 1692.44dp
+ 1699.56dp
+ 1706.67dp
+ 1713.78dp
+ 1720.89dp
+ 1728.00dp
+ 1735.11dp
+ 1742.22dp
+ 1749.33dp
+ 1756.44dp
+ 1763.56dp
+ 1770.67dp
+ 1777.78dp
+ 1784.89dp
+ 1792.00dp
+ 1799.11dp
+ 1806.22dp
+ 1813.33dp
+ 1820.44dp
+ 1827.56dp
+ 1834.67dp
+ 1841.78dp
+ 1848.89dp
+ 1856.00dp
+ 1863.11dp
+ 1870.22dp
+ 1877.33dp
+ 1884.44dp
+ 1891.56dp
+ 1898.67dp
+ 1905.78dp
+ 1912.89dp
+ 1920.00dp
+ 1927.11dp
+ 1934.22dp
+ 1941.33dp
+ 1948.44dp
+ 1955.56dp
+ 1962.67dp
+ 1969.78dp
+ 1976.89dp
+ 1984.00dp
+ 1991.11dp
+ 1998.22dp
+ 2005.33dp
+ 2012.44dp
+ 2019.56dp
+ 2026.67dp
+ 2033.78dp
+ 2040.89dp
+ 2048.00dp
+ 2055.11dp
+ 2062.22dp
+ 2069.33dp
+ 2076.44dp
+ 2083.56dp
+ 2090.67dp
+ 2097.78dp
+ 2104.89dp
+ 2112.00dp
+ 2119.11dp
+ 2126.22dp
+ 2133.33dp
+ 2140.44dp
+ 2147.56dp
+ 2154.67dp
+ 2161.78dp
+ 2168.89dp
+ 2176.00dp
+ 2183.11dp
+ 2190.22dp
+ 2197.33dp
+ 2204.44dp
+ 2211.56dp
+ 2218.67dp
+ 2225.78dp
+ 2232.89dp
+ 2240.00dp
+ 2247.11dp
+ 2254.22dp
+ 2261.33dp
+ 2268.44dp
+ 2275.56dp
+ 2282.67dp
+ 2289.78dp
+ 2296.89dp
+ 2304.00dp
+ 2311.11dp
+ 2318.22dp
+ 2325.33dp
+ 2332.44dp
+ 2339.56dp
+ 2346.67dp
+ 2353.78dp
+ 2360.89dp
+ 2368.00dp
+ 2375.11dp
+ 2382.22dp
+ 2389.33dp
+ 2396.44dp
+ 2403.56dp
+ 2410.67dp
+ 2417.78dp
+ 2424.89dp
+ 2432.00dp
+ 2439.11dp
+ 2446.22dp
+ 2453.33dp
+ 2460.44dp
+ 2467.56dp
+ 2474.67dp
+ 2481.78dp
+ 2488.89dp
+ 2496.00dp
+ 2503.11dp
+ 2510.22dp
+ 2517.33dp
+ 2524.44dp
+ 2531.56dp
+ 2538.67dp
+ 2545.78dp
+ 2552.89dp
+ 2560.00dp
+ 2567.11dp
+ 2574.22dp
+ 2581.33dp
+ 2588.44dp
+ 2595.56dp
+ 2602.67dp
+ 2609.78dp
+ 2616.89dp
+ 2624.00dp
+ 2631.11dp
+ 2638.22dp
+ 2645.33dp
+ 2652.44dp
+ 2659.56dp
+ 2666.67dp
+ 2673.78dp
+ 2680.89dp
+ 2688.00dp
+ 2695.11dp
+ 2702.22dp
+ 2709.33dp
+ 2716.44dp
+ 2723.56dp
+ 2730.67dp
+ 2737.78dp
+ 2744.89dp
+ 2752.00dp
+ 2759.11dp
+ 2766.22dp
+ 2773.33dp
+ 2780.44dp
+ 2787.56dp
+ 2794.67dp
+ 2801.78dp
+ 2808.89dp
+ 2816.00dp
+ 2823.11dp
+ 2830.22dp
+ 2837.33dp
+ 2844.44dp
+
+ -7.11dp
+ -14.22dp
+ -21.33dp
+ -28.44dp
+ -35.56dp
+ -42.67dp
+ -49.78dp
+ -56.89dp
+ -64.00dp
+ -71.11dp
+ -78.22dp
+ -85.33dp
+ -92.44dp
+ -99.56dp
+ -106.67dp
+ -113.78dp
+ -120.89dp
+ -128.00dp
+ -135.11dp
+ -142.22dp
+ -149.33dp
+ -156.44dp
+ -163.56dp
+ -170.67dp
+ -177.78dp
+ -184.89dp
+ -192.00dp
+ -199.11dp
+ -206.22dp
+ -213.33dp
+ -220.44dp
+ -227.56dp
+ -234.67dp
+ -241.78dp
+ -248.89dp
+ -256.00dp
+ -263.11dp
+ -270.22dp
+ -277.33dp
+ -284.44dp
+ -291.56dp
+ -298.67dp
+ -305.78dp
+ -312.89dp
+ -320.00dp
+ -327.11dp
+ -334.22dp
+ -341.33dp
+ -348.44dp
+ -355.56dp
+ -362.67dp
+ -369.78dp
+ -376.89dp
+ -384.00dp
+ -391.11dp
+ -398.22dp
+ -405.33dp
+ -412.44dp
+ -419.56dp
+ -426.67dp
+
+ 7.11sp
+ 14.22sp
+ 21.33sp
+ 28.44sp
+ 35.56sp
+ 42.67sp
+ 49.78sp
+ 56.89sp
+ 64.00sp
+ 71.11sp
+ 78.22sp
+ 85.33sp
+ 92.44sp
+ 99.56sp
+ 106.67sp
+ 113.78sp
+ 120.89sp
+ 128.00sp
+ 135.11sp
+ 142.22sp
+ 149.33sp
+ 156.44sp
+ 163.56sp
+ 170.67sp
+ 177.78sp
+ 184.89sp
+ 192.00sp
+ 199.11sp
+ 206.22sp
+ 213.33sp
+ 220.44sp
+ 227.56sp
+ 234.67sp
+ 241.78sp
+ 248.89sp
+ 256.00sp
+ 263.11sp
+ 270.22sp
+ 277.33sp
+ 284.44sp
+ 291.56sp
+ 298.67sp
+ 305.78sp
+ 312.89sp
+ 320.00sp
+ 327.11sp
+ 334.22sp
+ 341.33sp
+ 348.44sp
+ 355.56sp
+ 362.67sp
+ 369.78sp
+ 376.89sp
+ 384.00sp
+ 391.11sp
+ 398.22sp
+ 405.33sp
+ 412.44sp
+ 419.56sp
+ 426.67sp
+
diff --git a/app/src/main/res/values-sw320dp/auto_dimens.xml b/app/src/main/res/values-sw320dp/auto_dimens.xml
new file mode 100644
index 0000000..311c825
--- /dev/null
+++ b/app/src/main/res/values-sw320dp/auto_dimens.xml
@@ -0,0 +1,526 @@
+
+
+ 0.00dp
+ 0.89dp
+ 1.78dp
+ 2.67dp
+ 3.56dp
+ 4.44dp
+ 5.33dp
+ 6.22dp
+ 7.11dp
+ 8.00dp
+ 8.89dp
+ 9.78dp
+ 10.67dp
+ 11.56dp
+ 12.44dp
+ 13.33dp
+ 14.22dp
+ 15.11dp
+ 16.00dp
+ 16.89dp
+ 17.78dp
+ 18.67dp
+ 19.56dp
+ 20.44dp
+ 21.33dp
+ 22.22dp
+ 23.11dp
+ 24.00dp
+ 24.89dp
+ 25.78dp
+ 26.67dp
+ 27.56dp
+ 28.44dp
+ 29.33dp
+ 30.22dp
+ 31.11dp
+ 32.00dp
+ 32.89dp
+ 33.78dp
+ 34.67dp
+ 35.56dp
+ 36.44dp
+ 37.33dp
+ 38.22dp
+ 39.11dp
+ 40.00dp
+ 40.89dp
+ 41.78dp
+ 42.67dp
+ 43.56dp
+ 44.44dp
+ 45.33dp
+ 46.22dp
+ 47.11dp
+ 48.00dp
+ 48.89dp
+ 49.78dp
+ 50.67dp
+ 51.56dp
+ 52.44dp
+ 53.33dp
+ 54.22dp
+ 55.11dp
+ 56.00dp
+ 56.89dp
+ 57.78dp
+ 58.67dp
+ 59.56dp
+ 60.44dp
+ 61.33dp
+ 62.22dp
+ 63.11dp
+ 64.00dp
+ 64.89dp
+ 65.78dp
+ 66.67dp
+ 67.56dp
+ 68.44dp
+ 69.33dp
+ 70.22dp
+ 71.11dp
+ 72.00dp
+ 72.89dp
+ 73.78dp
+ 74.67dp
+ 75.56dp
+ 76.44dp
+ 77.33dp
+ 78.22dp
+ 79.11dp
+ 80.00dp
+ 80.89dp
+ 81.78dp
+ 82.67dp
+ 83.56dp
+ 84.44dp
+ 85.33dp
+ 86.22dp
+ 87.11dp
+ 88.00dp
+ 88.89dp
+ 89.78dp
+ 90.67dp
+ 91.56dp
+ 92.44dp
+ 93.33dp
+ 94.22dp
+ 95.11dp
+ 96.00dp
+ 96.89dp
+ 97.78dp
+ 98.67dp
+ 99.56dp
+ 100.44dp
+ 101.33dp
+ 102.22dp
+ 103.11dp
+ 104.00dp
+ 104.89dp
+ 105.78dp
+ 106.67dp
+ 107.56dp
+ 108.44dp
+ 109.33dp
+ 110.22dp
+ 111.11dp
+ 112.00dp
+ 112.89dp
+ 113.78dp
+ 114.67dp
+ 115.56dp
+ 116.44dp
+ 117.33dp
+ 118.22dp
+ 119.11dp
+ 120.00dp
+ 120.89dp
+ 121.78dp
+ 122.67dp
+ 123.56dp
+ 124.44dp
+ 125.33dp
+ 126.22dp
+ 127.11dp
+ 128.00dp
+ 128.89dp
+ 129.78dp
+ 130.67dp
+ 131.56dp
+ 132.44dp
+ 133.33dp
+ 134.22dp
+ 135.11dp
+ 136.00dp
+ 136.89dp
+ 137.78dp
+ 138.67dp
+ 139.56dp
+ 140.44dp
+ 141.33dp
+ 142.22dp
+ 143.11dp
+ 144.00dp
+ 144.89dp
+ 145.78dp
+ 146.67dp
+ 147.56dp
+ 148.44dp
+ 149.33dp
+ 150.22dp
+ 151.11dp
+ 152.00dp
+ 152.89dp
+ 153.78dp
+ 154.67dp
+ 155.56dp
+ 156.44dp
+ 157.33dp
+ 158.22dp
+ 159.11dp
+ 160.00dp
+ 160.89dp
+ 161.78dp
+ 162.67dp
+ 163.56dp
+ 164.44dp
+ 165.33dp
+ 166.22dp
+ 167.11dp
+ 168.00dp
+ 168.89dp
+ 169.78dp
+ 170.67dp
+ 171.56dp
+ 172.44dp
+ 173.33dp
+ 174.22dp
+ 175.11dp
+ 176.00dp
+ 176.89dp
+ 177.78dp
+ 178.67dp
+ 179.56dp
+ 180.44dp
+ 181.33dp
+ 182.22dp
+ 183.11dp
+ 184.00dp
+ 184.89dp
+ 185.78dp
+ 186.67dp
+ 187.56dp
+ 188.44dp
+ 189.33dp
+ 190.22dp
+ 191.11dp
+ 192.00dp
+ 192.89dp
+ 193.78dp
+ 194.67dp
+ 195.56dp
+ 196.44dp
+ 197.33dp
+ 198.22dp
+ 199.11dp
+ 200.00dp
+ 200.89dp
+ 201.78dp
+ 202.67dp
+ 203.56dp
+ 204.44dp
+ 205.33dp
+ 206.22dp
+ 207.11dp
+ 208.00dp
+ 208.89dp
+ 209.78dp
+ 210.67dp
+ 211.56dp
+ 212.44dp
+ 213.33dp
+ 214.22dp
+ 215.11dp
+ 216.00dp
+ 216.89dp
+ 217.78dp
+ 218.67dp
+ 219.56dp
+ 220.44dp
+ 221.33dp
+ 222.22dp
+ 223.11dp
+ 224.00dp
+ 224.89dp
+ 225.78dp
+ 226.67dp
+ 227.56dp
+ 228.44dp
+ 229.33dp
+ 230.22dp
+ 231.11dp
+ 232.00dp
+ 232.89dp
+ 233.78dp
+ 234.67dp
+ 235.56dp
+ 236.44dp
+ 237.33dp
+ 238.22dp
+ 239.11dp
+ 240.00dp
+ 240.89dp
+ 241.78dp
+ 242.67dp
+ 243.56dp
+ 244.44dp
+ 245.33dp
+ 246.22dp
+ 247.11dp
+ 248.00dp
+ 248.89dp
+ 249.78dp
+ 250.67dp
+ 251.56dp
+ 252.44dp
+ 253.33dp
+ 254.22dp
+ 255.11dp
+ 256.00dp
+ 256.89dp
+ 257.78dp
+ 258.67dp
+ 259.56dp
+ 260.44dp
+ 261.33dp
+ 262.22dp
+ 263.11dp
+ 264.00dp
+ 264.89dp
+ 265.78dp
+ 266.67dp
+ 267.56dp
+ 268.44dp
+ 269.33dp
+ 270.22dp
+ 271.11dp
+ 272.00dp
+ 272.89dp
+ 273.78dp
+ 274.67dp
+ 275.56dp
+ 276.44dp
+ 277.33dp
+ 278.22dp
+ 279.11dp
+ 280.00dp
+ 280.89dp
+ 281.78dp
+ 282.67dp
+ 283.56dp
+ 284.44dp
+ 285.33dp
+ 286.22dp
+ 287.11dp
+ 288.00dp
+ 288.89dp
+ 289.78dp
+ 290.67dp
+ 291.56dp
+ 292.44dp
+ 293.33dp
+ 294.22dp
+ 295.11dp
+ 296.00dp
+ 296.89dp
+ 297.78dp
+ 298.67dp
+ 299.56dp
+ 300.44dp
+ 301.33dp
+ 302.22dp
+ 303.11dp
+ 304.00dp
+ 304.89dp
+ 305.78dp
+ 306.67dp
+ 307.56dp
+ 308.44dp
+ 309.33dp
+ 310.22dp
+ 311.11dp
+ 312.00dp
+ 312.89dp
+ 313.78dp
+ 314.67dp
+ 315.56dp
+ 316.44dp
+ 317.33dp
+ 318.22dp
+ 319.11dp
+ 320.00dp
+ 320.89dp
+ 321.78dp
+ 322.67dp
+ 323.56dp
+ 324.44dp
+ 325.33dp
+ 326.22dp
+ 327.11dp
+ 328.00dp
+ 328.89dp
+ 329.78dp
+ 330.67dp
+ 331.56dp
+ 332.44dp
+ 333.33dp
+ 334.22dp
+ 335.11dp
+ 336.00dp
+ 336.89dp
+ 337.78dp
+ 338.67dp
+ 339.56dp
+ 340.44dp
+ 341.33dp
+ 342.22dp
+ 343.11dp
+ 344.00dp
+ 344.89dp
+ 345.78dp
+ 346.67dp
+ 347.56dp
+ 348.44dp
+ 349.33dp
+ 350.22dp
+ 351.11dp
+ 352.00dp
+ 352.89dp
+ 353.78dp
+ 354.67dp
+ 355.56dp
+
+ -0.89dp
+ -1.78dp
+ -2.67dp
+ -3.56dp
+ -4.44dp
+ -5.33dp
+ -6.22dp
+ -7.11dp
+ -8.00dp
+ -8.89dp
+ -9.78dp
+ -10.67dp
+ -11.56dp
+ -12.44dp
+ -13.33dp
+ -14.22dp
+ -15.11dp
+ -16.00dp
+ -16.89dp
+ -17.78dp
+ -18.67dp
+ -19.56dp
+ -20.44dp
+ -21.33dp
+ -22.22dp
+ -23.11dp
+ -24.00dp
+ -24.89dp
+ -25.78dp
+ -26.67dp
+ -27.56dp
+ -28.44dp
+ -29.33dp
+ -30.22dp
+ -31.11dp
+ -32.00dp
+ -32.89dp
+ -33.78dp
+ -34.67dp
+ -35.56dp
+ -36.44dp
+ -37.33dp
+ -38.22dp
+ -39.11dp
+ -40.00dp
+ -40.89dp
+ -41.78dp
+ -42.67dp
+ -43.56dp
+ -44.44dp
+ -45.33dp
+ -46.22dp
+ -47.11dp
+ -48.00dp
+ -48.89dp
+ -49.78dp
+ -50.67dp
+ -51.56dp
+ -52.44dp
+ -53.33dp
+
+ 0.89sp
+ 1.78sp
+ 2.67sp
+ 3.56sp
+ 4.44sp
+ 5.33sp
+ 6.22sp
+ 7.11sp
+ 8.00sp
+ 8.89sp
+ 9.78sp
+ 10.67sp
+ 11.56sp
+ 12.44sp
+ 13.33sp
+ 14.22sp
+ 15.11sp
+ 16.00sp
+ 16.89sp
+ 17.78sp
+ 18.67sp
+ 19.56sp
+ 20.44sp
+ 21.33sp
+ 22.22sp
+ 23.11sp
+ 24.00sp
+ 24.89sp
+ 25.78sp
+ 26.67sp
+ 27.56sp
+ 28.44sp
+ 29.33sp
+ 30.22sp
+ 31.11sp
+ 32.00sp
+ 32.89sp
+ 33.78sp
+ 34.67sp
+ 35.56sp
+ 36.44sp
+ 37.33sp
+ 38.22sp
+ 39.11sp
+ 40.00sp
+ 40.89sp
+ 41.78sp
+ 42.67sp
+ 43.56sp
+ 44.44sp
+ 45.33sp
+ 46.22sp
+ 47.11sp
+ 48.00sp
+ 48.89sp
+ 49.78sp
+ 50.67sp
+ 51.56sp
+ 52.44sp
+ 53.33sp
+
diff --git a/app/src/main/res/values-sw360dp/auto_dimens.xml b/app/src/main/res/values-sw360dp/auto_dimens.xml
new file mode 100644
index 0000000..b929783
--- /dev/null
+++ b/app/src/main/res/values-sw360dp/auto_dimens.xml
@@ -0,0 +1,526 @@
+
+
+ 0.00dp
+ 1.00dp
+ 2.00dp
+ 3.00dp
+ 4.00dp
+ 5.00dp
+ 6.00dp
+ 7.00dp
+ 8.00dp
+ 9.00dp
+ 10.00dp
+ 11.00dp
+ 12.00dp
+ 13.00dp
+ 14.00dp
+ 15.00dp
+ 16.00dp
+ 17.00dp
+ 18.00dp
+ 19.00dp
+ 20.00dp
+ 21.00dp
+ 22.00dp
+ 23.00dp
+ 24.00dp
+ 25.00dp
+ 26.00dp
+ 27.00dp
+ 28.00dp
+ 29.00dp
+ 30.00dp
+ 31.00dp
+ 32.00dp
+ 33.00dp
+ 34.00dp
+ 35.00dp
+ 36.00dp
+ 37.00dp
+ 38.00dp
+ 39.00dp
+ 40.00dp
+ 41.00dp
+ 42.00dp
+ 43.00dp
+ 44.00dp
+ 45.00dp
+ 46.00dp
+ 47.00dp
+ 48.00dp
+ 49.00dp
+ 50.00dp
+ 51.00dp
+ 52.00dp
+ 53.00dp
+ 54.00dp
+ 55.00dp
+ 56.00dp
+ 57.00dp
+ 58.00dp
+ 59.00dp
+ 60.00dp
+ 61.00dp
+ 62.00dp
+ 63.00dp
+ 64.00dp
+ 65.00dp
+ 66.00dp
+ 67.00dp
+ 68.00dp
+ 69.00dp
+ 70.00dp
+ 71.00dp
+ 72.00dp
+ 73.00dp
+ 74.00dp
+ 75.00dp
+ 76.00dp
+ 77.00dp
+ 78.00dp
+ 79.00dp
+ 80.00dp
+ 81.00dp
+ 82.00dp
+ 83.00dp
+ 84.00dp
+ 85.00dp
+ 86.00dp
+ 87.00dp
+ 88.00dp
+ 89.00dp
+ 90.00dp
+ 91.00dp
+ 92.00dp
+ 93.00dp
+ 94.00dp
+ 95.00dp
+ 96.00dp
+ 97.00dp
+ 98.00dp
+ 99.00dp
+ 100.00dp
+ 101.00dp
+ 102.00dp
+ 103.00dp
+ 104.00dp
+ 105.00dp
+ 106.00dp
+ 107.00dp
+ 108.00dp
+ 109.00dp
+ 110.00dp
+ 111.00dp
+ 112.00dp
+ 113.00dp
+ 114.00dp
+ 115.00dp
+ 116.00dp
+ 117.00dp
+ 118.00dp
+ 119.00dp
+ 120.00dp
+ 121.00dp
+ 122.00dp
+ 123.00dp
+ 124.00dp
+ 125.00dp
+ 126.00dp
+ 127.00dp
+ 128.00dp
+ 129.00dp
+ 130.00dp
+ 131.00dp
+ 132.00dp
+ 133.00dp
+ 134.00dp
+ 135.00dp
+ 136.00dp
+ 137.00dp
+ 138.00dp
+ 139.00dp
+ 140.00dp
+ 141.00dp
+ 142.00dp
+ 143.00dp
+ 144.00dp
+ 145.00dp
+ 146.00dp
+ 147.00dp
+ 148.00dp
+ 149.00dp
+ 150.00dp
+ 151.00dp
+ 152.00dp
+ 153.00dp
+ 154.00dp
+ 155.00dp
+ 156.00dp
+ 157.00dp
+ 158.00dp
+ 159.00dp
+ 160.00dp
+ 161.00dp
+ 162.00dp
+ 163.00dp
+ 164.00dp
+ 165.00dp
+ 166.00dp
+ 167.00dp
+ 168.00dp
+ 169.00dp
+ 170.00dp
+ 171.00dp
+ 172.00dp
+ 173.00dp
+ 174.00dp
+ 175.00dp
+ 176.00dp
+ 177.00dp
+ 178.00dp
+ 179.00dp
+ 180.00dp
+ 181.00dp
+ 182.00dp
+ 183.00dp
+ 184.00dp
+ 185.00dp
+ 186.00dp
+ 187.00dp
+ 188.00dp
+ 189.00dp
+ 190.00dp
+ 191.00dp
+ 192.00dp
+ 193.00dp
+ 194.00dp
+ 195.00dp
+ 196.00dp
+ 197.00dp
+ 198.00dp
+ 199.00dp
+ 200.00dp
+ 201.00dp
+ 202.00dp
+ 203.00dp
+ 204.00dp
+ 205.00dp
+ 206.00dp
+ 207.00dp
+ 208.00dp
+ 209.00dp
+ 210.00dp
+ 211.00dp
+ 212.00dp
+ 213.00dp
+ 214.00dp
+ 215.00dp
+ 216.00dp
+ 217.00dp
+ 218.00dp
+ 219.00dp
+ 220.00dp
+ 221.00dp
+ 222.00dp
+ 223.00dp
+ 224.00dp
+ 225.00dp
+ 226.00dp
+ 227.00dp
+ 228.00dp
+ 229.00dp
+ 230.00dp
+ 231.00dp
+ 232.00dp
+ 233.00dp
+ 234.00dp
+ 235.00dp
+ 236.00dp
+ 237.00dp
+ 238.00dp
+ 239.00dp
+ 240.00dp
+ 241.00dp
+ 242.00dp
+ 243.00dp
+ 244.00dp
+ 245.00dp
+ 246.00dp
+ 247.00dp
+ 248.00dp
+ 249.00dp
+ 250.00dp
+ 251.00dp
+ 252.00dp
+ 253.00dp
+ 254.00dp
+ 255.00dp
+ 256.00dp
+ 257.00dp
+ 258.00dp
+ 259.00dp
+ 260.00dp
+ 261.00dp
+ 262.00dp
+ 263.00dp
+ 264.00dp
+ 265.00dp
+ 266.00dp
+ 267.00dp
+ 268.00dp
+ 269.00dp
+ 270.00dp
+ 271.00dp
+ 272.00dp
+ 273.00dp
+ 274.00dp
+ 275.00dp
+ 276.00dp
+ 277.00dp
+ 278.00dp
+ 279.00dp
+ 280.00dp
+ 281.00dp
+ 282.00dp
+ 283.00dp
+ 284.00dp
+ 285.00dp
+ 286.00dp
+ 287.00dp
+ 288.00dp
+ 289.00dp
+ 290.00dp
+ 291.00dp
+ 292.00dp
+ 293.00dp
+ 294.00dp
+ 295.00dp
+ 296.00dp
+ 297.00dp
+ 298.00dp
+ 299.00dp
+ 300.00dp
+ 301.00dp
+ 302.00dp
+ 303.00dp
+ 304.00dp
+ 305.00dp
+ 306.00dp
+ 307.00dp
+ 308.00dp
+ 309.00dp
+ 310.00dp
+ 311.00dp
+ 312.00dp
+ 313.00dp
+ 314.00dp
+ 315.00dp
+ 316.00dp
+ 317.00dp
+ 318.00dp
+ 319.00dp
+ 320.00dp
+ 321.00dp
+ 322.00dp
+ 323.00dp
+ 324.00dp
+ 325.00dp
+ 326.00dp
+ 327.00dp
+ 328.00dp
+ 329.00dp
+ 330.00dp
+ 331.00dp
+ 332.00dp
+ 333.00dp
+ 334.00dp
+ 335.00dp
+ 336.00dp
+ 337.00dp
+ 338.00dp
+ 339.00dp
+ 340.00dp
+ 341.00dp
+ 342.00dp
+ 343.00dp
+ 344.00dp
+ 345.00dp
+ 346.00dp
+ 347.00dp
+ 348.00dp
+ 349.00dp
+ 350.00dp
+ 351.00dp
+ 352.00dp
+ 353.00dp
+ 354.00dp
+ 355.00dp
+ 356.00dp
+ 357.00dp
+ 358.00dp
+ 359.00dp
+ 360.00dp
+ 361.00dp
+ 362.00dp
+ 363.00dp
+ 364.00dp
+ 365.00dp
+ 366.00dp
+ 367.00dp
+ 368.00dp
+ 369.00dp
+ 370.00dp
+ 371.00dp
+ 372.00dp
+ 373.00dp
+ 374.00dp
+ 375.00dp
+ 376.00dp
+ 377.00dp
+ 378.00dp
+ 379.00dp
+ 380.00dp
+ 381.00dp
+ 382.00dp
+ 383.00dp
+ 384.00dp
+ 385.00dp
+ 386.00dp
+ 387.00dp
+ 388.00dp
+ 389.00dp
+ 390.00dp
+ 391.00dp
+ 392.00dp
+ 393.00dp
+ 394.00dp
+ 395.00dp
+ 396.00dp
+ 397.00dp
+ 398.00dp
+ 399.00dp
+ 400.00dp
+
+ -1.00dp
+ -2.00dp
+ -3.00dp
+ -4.00dp
+ -5.00dp
+ -6.00dp
+ -7.00dp
+ -8.00dp
+ -9.00dp
+ -10.00dp
+ -11.00dp
+ -12.00dp
+ -13.00dp
+ -14.00dp
+ -15.00dp
+ -16.00dp
+ -17.00dp
+ -18.00dp
+ -19.00dp
+ -20.00dp
+ -21.00dp
+ -22.00dp
+ -23.00dp
+ -24.00dp
+ -25.00dp
+ -26.00dp
+ -27.00dp
+ -28.00dp
+ -29.00dp
+ -30.00dp
+ -31.00dp
+ -32.00dp
+ -33.00dp
+ -34.00dp
+ -35.00dp
+ -36.00dp
+ -37.00dp
+ -38.00dp
+ -39.00dp
+ -40.00dp
+ -41.00dp
+ -42.00dp
+ -43.00dp
+ -44.00dp
+ -45.00dp
+ -46.00dp
+ -47.00dp
+ -48.00dp
+ -49.00dp
+ -50.00dp
+ -51.00dp
+ -52.00dp
+ -53.00dp
+ -54.00dp
+ -55.00dp
+ -56.00dp
+ -57.00dp
+ -58.00dp
+ -59.00dp
+ -60.00dp
+
+ 1.00sp
+ 2.00sp
+ 3.00sp
+ 4.00sp
+ 5.00sp
+ 6.00sp
+ 7.00sp
+ 8.00sp
+ 9.00sp
+ 10.00sp
+ 11.00sp
+ 12.00sp
+ 13.00sp
+ 14.00sp
+ 15.00sp
+ 16.00sp
+ 17.00sp
+ 18.00sp
+ 19.00sp
+ 20.00sp
+ 21.00sp
+ 22.00sp
+ 23.00sp
+ 24.00sp
+ 25.00sp
+ 26.00sp
+ 27.00sp
+ 28.00sp
+ 29.00sp
+ 30.00sp
+ 31.00sp
+ 32.00sp
+ 33.00sp
+ 34.00sp
+ 35.00sp
+ 36.00sp
+ 37.00sp
+ 38.00sp
+ 39.00sp
+ 40.00sp
+ 41.00sp
+ 42.00sp
+ 43.00sp
+ 44.00sp
+ 45.00sp
+ 46.00sp
+ 47.00sp
+ 48.00sp
+ 49.00sp
+ 50.00sp
+ 51.00sp
+ 52.00sp
+ 53.00sp
+ 54.00sp
+ 55.00sp
+ 56.00sp
+ 57.00sp
+ 58.00sp
+ 59.00sp
+ 60.00sp
+
diff --git a/app/src/main/res/values-sw3840dp/auto_dimens.xml b/app/src/main/res/values-sw3840dp/auto_dimens.xml
new file mode 100644
index 0000000..6aa72e8
--- /dev/null
+++ b/app/src/main/res/values-sw3840dp/auto_dimens.xml
@@ -0,0 +1,526 @@
+
+
+ 0.00dp
+ 10.67dp
+ 21.33dp
+ 32.00dp
+ 42.67dp
+ 53.33dp
+ 64.00dp
+ 74.67dp
+ 85.33dp
+ 96.00dp
+ 106.67dp
+ 117.33dp
+ 128.00dp
+ 138.67dp
+ 149.33dp
+ 160.00dp
+ 170.67dp
+ 181.33dp
+ 192.00dp
+ 202.67dp
+ 213.33dp
+ 224.00dp
+ 234.67dp
+ 245.33dp
+ 256.00dp
+ 266.67dp
+ 277.33dp
+ 288.00dp
+ 298.67dp
+ 309.33dp
+ 320.00dp
+ 330.67dp
+ 341.33dp
+ 352.00dp
+ 362.67dp
+ 373.33dp
+ 384.00dp
+ 394.67dp
+ 405.33dp
+ 416.00dp
+ 426.67dp
+ 437.33dp
+ 448.00dp
+ 458.67dp
+ 469.33dp
+ 480.00dp
+ 490.67dp
+ 501.33dp
+ 512.00dp
+ 522.67dp
+ 533.33dp
+ 544.00dp
+ 554.67dp
+ 565.33dp
+ 576.00dp
+ 586.67dp
+ 597.33dp
+ 608.00dp
+ 618.67dp
+ 629.33dp
+ 640.00dp
+ 650.67dp
+ 661.33dp
+ 672.00dp
+ 682.67dp
+ 693.33dp
+ 704.00dp
+ 714.67dp
+ 725.33dp
+ 736.00dp
+ 746.67dp
+ 757.33dp
+ 768.00dp
+ 778.67dp
+ 789.33dp
+ 800.00dp
+ 810.67dp
+ 821.33dp
+ 832.00dp
+ 842.67dp
+ 853.33dp
+ 864.00dp
+ 874.67dp
+ 885.33dp
+ 896.00dp
+ 906.67dp
+ 917.33dp
+ 928.00dp
+ 938.67dp
+ 949.33dp
+ 960.00dp
+ 970.67dp
+ 981.33dp
+ 992.00dp
+ 1002.67dp
+ 1013.33dp
+ 1024.00dp
+ 1034.67dp
+ 1045.33dp
+ 1056.00dp
+ 1066.67dp
+ 1077.33dp
+ 1088.00dp
+ 1098.67dp
+ 1109.33dp
+ 1120.00dp
+ 1130.67dp
+ 1141.33dp
+ 1152.00dp
+ 1162.67dp
+ 1173.33dp
+ 1184.00dp
+ 1194.67dp
+ 1205.33dp
+ 1216.00dp
+ 1226.67dp
+ 1237.33dp
+ 1248.00dp
+ 1258.67dp
+ 1269.33dp
+ 1280.00dp
+ 1290.67dp
+ 1301.33dp
+ 1312.00dp
+ 1322.67dp
+ 1333.33dp
+ 1344.00dp
+ 1354.67dp
+ 1365.33dp
+ 1376.00dp
+ 1386.67dp
+ 1397.33dp
+ 1408.00dp
+ 1418.67dp
+ 1429.33dp
+ 1440.00dp
+ 1450.67dp
+ 1461.33dp
+ 1472.00dp
+ 1482.67dp
+ 1493.33dp
+ 1504.00dp
+ 1514.67dp
+ 1525.33dp
+ 1536.00dp
+ 1546.67dp
+ 1557.33dp
+ 1568.00dp
+ 1578.67dp
+ 1589.33dp
+ 1600.00dp
+ 1610.67dp
+ 1621.33dp
+ 1632.00dp
+ 1642.67dp
+ 1653.33dp
+ 1664.00dp
+ 1674.67dp
+ 1685.33dp
+ 1696.00dp
+ 1706.67dp
+ 1717.33dp
+ 1728.00dp
+ 1738.67dp
+ 1749.33dp
+ 1760.00dp
+ 1770.67dp
+ 1781.33dp
+ 1792.00dp
+ 1802.67dp
+ 1813.33dp
+ 1824.00dp
+ 1834.67dp
+ 1845.33dp
+ 1856.00dp
+ 1866.67dp
+ 1877.33dp
+ 1888.00dp
+ 1898.67dp
+ 1909.33dp
+ 1920.00dp
+ 1930.67dp
+ 1941.33dp
+ 1952.00dp
+ 1962.67dp
+ 1973.33dp
+ 1984.00dp
+ 1994.67dp
+ 2005.33dp
+ 2016.00dp
+ 2026.67dp
+ 2037.33dp
+ 2048.00dp
+ 2058.67dp
+ 2069.33dp
+ 2080.00dp
+ 2090.67dp
+ 2101.33dp
+ 2112.00dp
+ 2122.67dp
+ 2133.33dp
+ 2144.00dp
+ 2154.67dp
+ 2165.33dp
+ 2176.00dp
+ 2186.67dp
+ 2197.33dp
+ 2208.00dp
+ 2218.67dp
+ 2229.33dp
+ 2240.00dp
+ 2250.67dp
+ 2261.33dp
+ 2272.00dp
+ 2282.67dp
+ 2293.33dp
+ 2304.00dp
+ 2314.67dp
+ 2325.33dp
+ 2336.00dp
+ 2346.67dp
+ 2357.33dp
+ 2368.00dp
+ 2378.67dp
+ 2389.33dp
+ 2400.00dp
+ 2410.67dp
+ 2421.33dp
+ 2432.00dp
+ 2442.67dp
+ 2453.33dp
+ 2464.00dp
+ 2474.67dp
+ 2485.33dp
+ 2496.00dp
+ 2506.67dp
+ 2517.33dp
+ 2528.00dp
+ 2538.67dp
+ 2549.33dp
+ 2560.00dp
+ 2570.67dp
+ 2581.33dp
+ 2592.00dp
+ 2602.67dp
+ 2613.33dp
+ 2624.00dp
+ 2634.67dp
+ 2645.33dp
+ 2656.00dp
+ 2666.67dp
+ 2677.33dp
+ 2688.00dp
+ 2698.67dp
+ 2709.33dp
+ 2720.00dp
+ 2730.67dp
+ 2741.33dp
+ 2752.00dp
+ 2762.67dp
+ 2773.33dp
+ 2784.00dp
+ 2794.67dp
+ 2805.33dp
+ 2816.00dp
+ 2826.67dp
+ 2837.33dp
+ 2848.00dp
+ 2858.67dp
+ 2869.33dp
+ 2880.00dp
+ 2890.67dp
+ 2901.33dp
+ 2912.00dp
+ 2922.67dp
+ 2933.33dp
+ 2944.00dp
+ 2954.67dp
+ 2965.33dp
+ 2976.00dp
+ 2986.67dp
+ 2997.33dp
+ 3008.00dp
+ 3018.67dp
+ 3029.33dp
+ 3040.00dp
+ 3050.67dp
+ 3061.33dp
+ 3072.00dp
+ 3082.67dp
+ 3093.33dp
+ 3104.00dp
+ 3114.67dp
+ 3125.33dp
+ 3136.00dp
+ 3146.67dp
+ 3157.33dp
+ 3168.00dp
+ 3178.67dp
+ 3189.33dp
+ 3200.00dp
+ 3210.67dp
+ 3221.33dp
+ 3232.00dp
+ 3242.67dp
+ 3253.33dp
+ 3264.00dp
+ 3274.67dp
+ 3285.33dp
+ 3296.00dp
+ 3306.67dp
+ 3317.33dp
+ 3328.00dp
+ 3338.67dp
+ 3349.33dp
+ 3360.00dp
+ 3370.67dp
+ 3381.33dp
+ 3392.00dp
+ 3402.67dp
+ 3413.33dp
+ 3424.00dp
+ 3434.67dp
+ 3445.33dp
+ 3456.00dp
+ 3466.67dp
+ 3477.33dp
+ 3488.00dp
+ 3498.67dp
+ 3509.33dp
+ 3520.00dp
+ 3530.67dp
+ 3541.33dp
+ 3552.00dp
+ 3562.67dp
+ 3573.33dp
+ 3584.00dp
+ 3594.67dp
+ 3605.33dp
+ 3616.00dp
+ 3626.67dp
+ 3637.33dp
+ 3648.00dp
+ 3658.67dp
+ 3669.33dp
+ 3680.00dp
+ 3690.67dp
+ 3701.33dp
+ 3712.00dp
+ 3722.67dp
+ 3733.33dp
+ 3744.00dp
+ 3754.67dp
+ 3765.33dp
+ 3776.00dp
+ 3786.67dp
+ 3797.33dp
+ 3808.00dp
+ 3818.67dp
+ 3829.33dp
+ 3840.00dp
+ 3850.67dp
+ 3861.33dp
+ 3872.00dp
+ 3882.67dp
+ 3893.33dp
+ 3904.00dp
+ 3914.67dp
+ 3925.33dp
+ 3936.00dp
+ 3946.67dp
+ 3957.33dp
+ 3968.00dp
+ 3978.67dp
+ 3989.33dp
+ 4000.00dp
+ 4010.67dp
+ 4021.33dp
+ 4032.00dp
+ 4042.67dp
+ 4053.33dp
+ 4064.00dp
+ 4074.67dp
+ 4085.33dp
+ 4096.00dp
+ 4106.67dp
+ 4117.33dp
+ 4128.00dp
+ 4138.67dp
+ 4149.33dp
+ 4160.00dp
+ 4170.67dp
+ 4181.33dp
+ 4192.00dp
+ 4202.67dp
+ 4213.33dp
+ 4224.00dp
+ 4234.67dp
+ 4245.33dp
+ 4256.00dp
+ 4266.67dp
+
+ -10.67dp
+ -21.33dp
+ -32.00dp
+ -42.67dp
+ -53.33dp
+ -64.00dp
+ -74.67dp
+ -85.33dp
+ -96.00dp
+ -106.67dp
+ -117.33dp
+ -128.00dp
+ -138.67dp
+ -149.33dp
+ -160.00dp
+ -170.67dp
+ -181.33dp
+ -192.00dp
+ -202.67dp
+ -213.33dp
+ -224.00dp
+ -234.67dp
+ -245.33dp
+ -256.00dp
+ -266.67dp
+ -277.33dp
+ -288.00dp
+ -298.67dp
+ -309.33dp
+ -320.00dp
+ -330.67dp
+ -341.33dp
+ -352.00dp
+ -362.67dp
+ -373.33dp
+ -384.00dp
+ -394.67dp
+ -405.33dp
+ -416.00dp
+ -426.67dp
+ -437.33dp
+ -448.00dp
+ -458.67dp
+ -469.33dp
+ -480.00dp
+ -490.67dp
+ -501.33dp
+ -512.00dp
+ -522.67dp
+ -533.33dp
+ -544.00dp
+ -554.67dp
+ -565.33dp
+ -576.00dp
+ -586.67dp
+ -597.33dp
+ -608.00dp
+ -618.67dp
+ -629.33dp
+ -640.00dp
+
+ 10.67sp
+ 21.33sp
+ 32.00sp
+ 42.67sp
+ 53.33sp
+ 64.00sp
+ 74.67sp
+ 85.33sp
+ 96.00sp
+ 106.67sp
+ 117.33sp
+ 128.00sp
+ 138.67sp
+ 149.33sp
+ 160.00sp
+ 170.67sp
+ 181.33sp
+ 192.00sp
+ 202.67sp
+ 213.33sp
+ 224.00sp
+ 234.67sp
+ 245.33sp
+ 256.00sp
+ 266.67sp
+ 277.33sp
+ 288.00sp
+ 298.67sp
+ 309.33sp
+ 320.00sp
+ 330.67sp
+ 341.33sp
+ 352.00sp
+ 362.67sp
+ 373.33sp
+ 384.00sp
+ 394.67sp
+ 405.33sp
+ 416.00sp
+ 426.67sp
+ 437.33sp
+ 448.00sp
+ 458.67sp
+ 469.33sp
+ 480.00sp
+ 490.67sp
+ 501.33sp
+ 512.00sp
+ 522.67sp
+ 533.33sp
+ 544.00sp
+ 554.67sp
+ 565.33sp
+ 576.00sp
+ 586.67sp
+ 597.33sp
+ 608.00sp
+ 618.67sp
+ 629.33sp
+ 640.00sp
+
diff --git a/app/src/main/res/values-sw384dp/auto_dimens.xml b/app/src/main/res/values-sw384dp/auto_dimens.xml
new file mode 100644
index 0000000..b77a3ec
--- /dev/null
+++ b/app/src/main/res/values-sw384dp/auto_dimens.xml
@@ -0,0 +1,526 @@
+
+
+ 0.00dp
+ 1.07dp
+ 2.13dp
+ 3.20dp
+ 4.27dp
+ 5.33dp
+ 6.40dp
+ 7.47dp
+ 8.53dp
+ 9.60dp
+ 10.67dp
+ 11.73dp
+ 12.80dp
+ 13.87dp
+ 14.93dp
+ 16.00dp
+ 17.07dp
+ 18.13dp
+ 19.20dp
+ 20.27dp
+ 21.33dp
+ 22.40dp
+ 23.47dp
+ 24.53dp
+ 25.60dp
+ 26.67dp
+ 27.73dp
+ 28.80dp
+ 29.87dp
+ 30.93dp
+ 32.00dp
+ 33.07dp
+ 34.13dp
+ 35.20dp
+ 36.27dp
+ 37.33dp
+ 38.40dp
+ 39.47dp
+ 40.53dp
+ 41.60dp
+ 42.67dp
+ 43.73dp
+ 44.80dp
+ 45.87dp
+ 46.93dp
+ 48.00dp
+ 49.07dp
+ 50.13dp
+ 51.20dp
+ 52.27dp
+ 53.33dp
+ 54.40dp
+ 55.47dp
+ 56.53dp
+ 57.60dp
+ 58.67dp
+ 59.73dp
+ 60.80dp
+ 61.87dp
+ 62.93dp
+ 64.00dp
+ 65.07dp
+ 66.13dp
+ 67.20dp
+ 68.27dp
+ 69.33dp
+ 70.40dp
+ 71.47dp
+ 72.53dp
+ 73.60dp
+ 74.67dp
+ 75.73dp
+ 76.80dp
+ 77.87dp
+ 78.93dp
+ 80.00dp
+ 81.07dp
+ 82.13dp
+ 83.20dp
+ 84.27dp
+ 85.33dp
+ 86.40dp
+ 87.47dp
+ 88.53dp
+ 89.60dp
+ 90.67dp
+ 91.73dp
+ 92.80dp
+ 93.87dp
+ 94.93dp
+ 96.00dp
+ 97.07dp
+ 98.13dp
+ 99.20dp
+ 100.27dp
+ 101.33dp
+ 102.40dp
+ 103.47dp
+ 104.53dp
+ 105.60dp
+ 106.67dp
+ 107.73dp
+ 108.80dp
+ 109.87dp
+ 110.93dp
+ 112.00dp
+ 113.07dp
+ 114.13dp
+ 115.20dp
+ 116.27dp
+ 117.33dp
+ 118.40dp
+ 119.47dp
+ 120.53dp
+ 121.60dp
+ 122.67dp
+ 123.73dp
+ 124.80dp
+ 125.87dp
+ 126.93dp
+ 128.00dp
+ 129.07dp
+ 130.13dp
+ 131.20dp
+ 132.27dp
+ 133.33dp
+ 134.40dp
+ 135.47dp
+ 136.53dp
+ 137.60dp
+ 138.67dp
+ 139.73dp
+ 140.80dp
+ 141.87dp
+ 142.93dp
+ 144.00dp
+ 145.07dp
+ 146.13dp
+ 147.20dp
+ 148.27dp
+ 149.33dp
+ 150.40dp
+ 151.47dp
+ 152.53dp
+ 153.60dp
+ 154.67dp
+ 155.73dp
+ 156.80dp
+ 157.87dp
+ 158.93dp
+ 160.00dp
+ 161.07dp
+ 162.13dp
+ 163.20dp
+ 164.27dp
+ 165.33dp
+ 166.40dp
+ 167.47dp
+ 168.53dp
+ 169.60dp
+ 170.67dp
+ 171.73dp
+ 172.80dp
+ 173.87dp
+ 174.93dp
+ 176.00dp
+ 177.07dp
+ 178.13dp
+ 179.20dp
+ 180.27dp
+ 181.33dp
+ 182.40dp
+ 183.47dp
+ 184.53dp
+ 185.60dp
+ 186.67dp
+ 187.73dp
+ 188.80dp
+ 189.87dp
+ 190.93dp
+ 192.00dp
+ 193.07dp
+ 194.13dp
+ 195.20dp
+ 196.27dp
+ 197.33dp
+ 198.40dp
+ 199.47dp
+ 200.53dp
+ 201.60dp
+ 202.67dp
+ 203.73dp
+ 204.80dp
+ 205.87dp
+ 206.93dp
+ 208.00dp
+ 209.07dp
+ 210.13dp
+ 211.20dp
+ 212.27dp
+ 213.33dp
+ 214.40dp
+ 215.47dp
+ 216.53dp
+ 217.60dp
+ 218.67dp
+ 219.73dp
+ 220.80dp
+ 221.87dp
+ 222.93dp
+ 224.00dp
+ 225.07dp
+ 226.13dp
+ 227.20dp
+ 228.27dp
+ 229.33dp
+ 230.40dp
+ 231.47dp
+ 232.53dp
+ 233.60dp
+ 234.67dp
+ 235.73dp
+ 236.80dp
+ 237.87dp
+ 238.93dp
+ 240.00dp
+ 241.07dp
+ 242.13dp
+ 243.20dp
+ 244.27dp
+ 245.33dp
+ 246.40dp
+ 247.47dp
+ 248.53dp
+ 249.60dp
+ 250.67dp
+ 251.73dp
+ 252.80dp
+ 253.87dp
+ 254.93dp
+ 256.00dp
+ 257.07dp
+ 258.13dp
+ 259.20dp
+ 260.27dp
+ 261.33dp
+ 262.40dp
+ 263.47dp
+ 264.53dp
+ 265.60dp
+ 266.67dp
+ 267.73dp
+ 268.80dp
+ 269.87dp
+ 270.93dp
+ 272.00dp
+ 273.07dp
+ 274.13dp
+ 275.20dp
+ 276.27dp
+ 277.33dp
+ 278.40dp
+ 279.47dp
+ 280.53dp
+ 281.60dp
+ 282.67dp
+ 283.73dp
+ 284.80dp
+ 285.87dp
+ 286.93dp
+ 288.00dp
+ 289.07dp
+ 290.13dp
+ 291.20dp
+ 292.27dp
+ 293.33dp
+ 294.40dp
+ 295.47dp
+ 296.53dp
+ 297.60dp
+ 298.67dp
+ 299.73dp
+ 300.80dp
+ 301.87dp
+ 302.93dp
+ 304.00dp
+ 305.07dp
+ 306.13dp
+ 307.20dp
+ 308.27dp
+ 309.33dp
+ 310.40dp
+ 311.47dp
+ 312.53dp
+ 313.60dp
+ 314.67dp
+ 315.73dp
+ 316.80dp
+ 317.87dp
+ 318.93dp
+ 320.00dp
+ 321.07dp
+ 322.13dp
+ 323.20dp
+ 324.27dp
+ 325.33dp
+ 326.40dp
+ 327.47dp
+ 328.53dp
+ 329.60dp
+ 330.67dp
+ 331.73dp
+ 332.80dp
+ 333.87dp
+ 334.93dp
+ 336.00dp
+ 337.07dp
+ 338.13dp
+ 339.20dp
+ 340.27dp
+ 341.33dp
+ 342.40dp
+ 343.47dp
+ 344.53dp
+ 345.60dp
+ 346.67dp
+ 347.73dp
+ 348.80dp
+ 349.87dp
+ 350.93dp
+ 352.00dp
+ 353.07dp
+ 354.13dp
+ 355.20dp
+ 356.27dp
+ 357.33dp
+ 358.40dp
+ 359.47dp
+ 360.53dp
+ 361.60dp
+ 362.67dp
+ 363.73dp
+ 364.80dp
+ 365.87dp
+ 366.93dp
+ 368.00dp
+ 369.07dp
+ 370.13dp
+ 371.20dp
+ 372.27dp
+ 373.33dp
+ 374.40dp
+ 375.47dp
+ 376.53dp
+ 377.60dp
+ 378.67dp
+ 379.73dp
+ 380.80dp
+ 381.87dp
+ 382.93dp
+ 384.00dp
+ 385.07dp
+ 386.13dp
+ 387.20dp
+ 388.27dp
+ 389.33dp
+ 390.40dp
+ 391.47dp
+ 392.53dp
+ 393.60dp
+ 394.67dp
+ 395.73dp
+ 396.80dp
+ 397.87dp
+ 398.93dp
+ 400.00dp
+ 401.07dp
+ 402.13dp
+ 403.20dp
+ 404.27dp
+ 405.33dp
+ 406.40dp
+ 407.47dp
+ 408.53dp
+ 409.60dp
+ 410.67dp
+ 411.73dp
+ 412.80dp
+ 413.87dp
+ 414.93dp
+ 416.00dp
+ 417.07dp
+ 418.13dp
+ 419.20dp
+ 420.27dp
+ 421.33dp
+ 422.40dp
+ 423.47dp
+ 424.53dp
+ 425.60dp
+ 426.67dp
+
+ -1.07dp
+ -2.13dp
+ -3.20dp
+ -4.27dp
+ -5.33dp
+ -6.40dp
+ -7.47dp
+ -8.53dp
+ -9.60dp
+ -10.67dp
+ -11.73dp
+ -12.80dp
+ -13.87dp
+ -14.93dp
+ -16.00dp
+ -17.07dp
+ -18.13dp
+ -19.20dp
+ -20.27dp
+ -21.33dp
+ -22.40dp
+ -23.47dp
+ -24.53dp
+ -25.60dp
+ -26.67dp
+ -27.73dp
+ -28.80dp
+ -29.87dp
+ -30.93dp
+ -32.00dp
+ -33.07dp
+ -34.13dp
+ -35.20dp
+ -36.27dp
+ -37.33dp
+ -38.40dp
+ -39.47dp
+ -40.53dp
+ -41.60dp
+ -42.67dp
+ -43.73dp
+ -44.80dp
+ -45.87dp
+ -46.93dp
+ -48.00dp
+ -49.07dp
+ -50.13dp
+ -51.20dp
+ -52.27dp
+ -53.33dp
+ -54.40dp
+ -55.47dp
+ -56.53dp
+ -57.60dp
+ -58.67dp
+ -59.73dp
+ -60.80dp
+ -61.87dp
+ -62.93dp
+ -64.00dp
+
+ 1.07sp
+ 2.13sp
+ 3.20sp
+ 4.27sp
+ 5.33sp
+ 6.40sp
+ 7.47sp
+ 8.53sp
+ 9.60sp
+ 10.67sp
+ 11.73sp
+ 12.80sp
+ 13.87sp
+ 14.93sp
+ 16.00sp
+ 17.07sp
+ 18.13sp
+ 19.20sp
+ 20.27sp
+ 21.33sp
+ 22.40sp
+ 23.47sp
+ 24.53sp
+ 25.60sp
+ 26.67sp
+ 27.73sp
+ 28.80sp
+ 29.87sp
+ 30.93sp
+ 32.00sp
+ 33.07sp
+ 34.13sp
+ 35.20sp
+ 36.27sp
+ 37.33sp
+ 38.40sp
+ 39.47sp
+ 40.53sp
+ 41.60sp
+ 42.67sp
+ 43.73sp
+ 44.80sp
+ 45.87sp
+ 46.93sp
+ 48.00sp
+ 49.07sp
+ 50.13sp
+ 51.20sp
+ 52.27sp
+ 53.33sp
+ 54.40sp
+ 55.47sp
+ 56.53sp
+ 57.60sp
+ 58.67sp
+ 59.73sp
+ 60.80sp
+ 61.87sp
+ 62.93sp
+ 64.00sp
+
diff --git a/app/src/main/res/values-sw411dp/auto_dimens.xml b/app/src/main/res/values-sw411dp/auto_dimens.xml
new file mode 100644
index 0000000..8c0ee2b
--- /dev/null
+++ b/app/src/main/res/values-sw411dp/auto_dimens.xml
@@ -0,0 +1,526 @@
+
+
+ 0.00dp
+ 1.14dp
+ 2.28dp
+ 3.42dp
+ 4.57dp
+ 5.71dp
+ 6.85dp
+ 7.99dp
+ 9.13dp
+ 10.27dp
+ 11.42dp
+ 12.56dp
+ 13.70dp
+ 14.84dp
+ 15.98dp
+ 17.13dp
+ 18.27dp
+ 19.41dp
+ 20.55dp
+ 21.69dp
+ 22.83dp
+ 23.98dp
+ 25.12dp
+ 26.26dp
+ 27.40dp
+ 28.54dp
+ 29.68dp
+ 30.82dp
+ 31.97dp
+ 33.11dp
+ 34.25dp
+ 35.39dp
+ 36.53dp
+ 37.67dp
+ 38.82dp
+ 39.96dp
+ 41.10dp
+ 42.24dp
+ 43.38dp
+ 44.52dp
+ 45.67dp
+ 46.81dp
+ 47.95dp
+ 49.09dp
+ 50.23dp
+ 51.38dp
+ 52.52dp
+ 53.66dp
+ 54.80dp
+ 55.94dp
+ 57.08dp
+ 58.22dp
+ 59.37dp
+ 60.51dp
+ 61.65dp
+ 62.79dp
+ 63.93dp
+ 65.07dp
+ 66.22dp
+ 67.36dp
+ 68.50dp
+ 69.64dp
+ 70.78dp
+ 71.92dp
+ 73.07dp
+ 74.21dp
+ 75.35dp
+ 76.49dp
+ 77.63dp
+ 78.78dp
+ 79.92dp
+ 81.06dp
+ 82.20dp
+ 83.34dp
+ 84.48dp
+ 85.63dp
+ 86.77dp
+ 87.91dp
+ 89.05dp
+ 90.19dp
+ 91.33dp
+ 92.47dp
+ 93.62dp
+ 94.76dp
+ 95.90dp
+ 97.04dp
+ 98.18dp
+ 99.32dp
+ 100.47dp
+ 101.61dp
+ 102.75dp
+ 103.89dp
+ 105.03dp
+ 106.17dp
+ 107.32dp
+ 108.46dp
+ 109.60dp
+ 110.74dp
+ 111.88dp
+ 113.03dp
+ 114.17dp
+ 115.31dp
+ 116.45dp
+ 117.59dp
+ 118.73dp
+ 119.88dp
+ 121.02dp
+ 122.16dp
+ 123.30dp
+ 124.44dp
+ 125.58dp
+ 126.72dp
+ 127.87dp
+ 129.01dp
+ 130.15dp
+ 131.29dp
+ 132.43dp
+ 133.57dp
+ 134.72dp
+ 135.86dp
+ 137.00dp
+ 138.14dp
+ 139.28dp
+ 140.43dp
+ 141.57dp
+ 142.71dp
+ 143.85dp
+ 144.99dp
+ 146.13dp
+ 147.27dp
+ 148.42dp
+ 149.56dp
+ 150.70dp
+ 151.84dp
+ 152.98dp
+ 154.13dp
+ 155.27dp
+ 156.41dp
+ 157.55dp
+ 158.69dp
+ 159.83dp
+ 160.97dp
+ 162.12dp
+ 163.26dp
+ 164.40dp
+ 165.54dp
+ 166.68dp
+ 167.82dp
+ 168.97dp
+ 170.11dp
+ 171.25dp
+ 172.39dp
+ 173.53dp
+ 174.68dp
+ 175.82dp
+ 176.96dp
+ 178.10dp
+ 179.24dp
+ 180.38dp
+ 181.52dp
+ 182.67dp
+ 183.81dp
+ 184.95dp
+ 186.09dp
+ 187.23dp
+ 188.38dp
+ 189.52dp
+ 190.66dp
+ 191.80dp
+ 192.94dp
+ 194.08dp
+ 195.22dp
+ 196.37dp
+ 197.51dp
+ 198.65dp
+ 199.79dp
+ 200.93dp
+ 202.07dp
+ 203.22dp
+ 204.36dp
+ 205.50dp
+ 206.64dp
+ 207.78dp
+ 208.93dp
+ 210.07dp
+ 211.21dp
+ 212.35dp
+ 213.49dp
+ 214.63dp
+ 215.77dp
+ 216.92dp
+ 218.06dp
+ 219.20dp
+ 220.34dp
+ 221.48dp
+ 222.63dp
+ 223.77dp
+ 224.91dp
+ 226.05dp
+ 227.19dp
+ 228.33dp
+ 229.47dp
+ 230.62dp
+ 231.76dp
+ 232.90dp
+ 234.04dp
+ 235.18dp
+ 236.32dp
+ 237.47dp
+ 238.61dp
+ 239.75dp
+ 240.89dp
+ 242.03dp
+ 243.18dp
+ 244.32dp
+ 245.46dp
+ 246.60dp
+ 247.74dp
+ 248.88dp
+ 250.02dp
+ 251.17dp
+ 252.31dp
+ 253.45dp
+ 254.59dp
+ 255.73dp
+ 256.88dp
+ 258.02dp
+ 259.16dp
+ 260.30dp
+ 261.44dp
+ 262.58dp
+ 263.73dp
+ 264.87dp
+ 266.01dp
+ 267.15dp
+ 268.29dp
+ 269.43dp
+ 270.57dp
+ 271.72dp
+ 272.86dp
+ 274.00dp
+ 275.14dp
+ 276.28dp
+ 277.42dp
+ 278.57dp
+ 279.71dp
+ 280.85dp
+ 281.99dp
+ 283.13dp
+ 284.27dp
+ 285.42dp
+ 286.56dp
+ 287.70dp
+ 288.84dp
+ 289.98dp
+ 291.13dp
+ 292.27dp
+ 293.41dp
+ 294.55dp
+ 295.69dp
+ 296.83dp
+ 297.98dp
+ 299.12dp
+ 300.26dp
+ 301.40dp
+ 302.54dp
+ 303.68dp
+ 304.82dp
+ 305.97dp
+ 307.11dp
+ 308.25dp
+ 309.39dp
+ 310.53dp
+ 311.67dp
+ 312.82dp
+ 313.96dp
+ 315.10dp
+ 316.24dp
+ 317.38dp
+ 318.52dp
+ 319.67dp
+ 320.81dp
+ 321.95dp
+ 323.09dp
+ 324.23dp
+ 325.38dp
+ 326.52dp
+ 327.66dp
+ 328.80dp
+ 329.94dp
+ 331.08dp
+ 332.23dp
+ 333.37dp
+ 334.51dp
+ 335.65dp
+ 336.79dp
+ 337.93dp
+ 339.07dp
+ 340.22dp
+ 341.36dp
+ 342.50dp
+ 343.64dp
+ 344.78dp
+ 345.92dp
+ 347.07dp
+ 348.21dp
+ 349.35dp
+ 350.49dp
+ 351.63dp
+ 352.77dp
+ 353.92dp
+ 355.06dp
+ 356.20dp
+ 357.34dp
+ 358.48dp
+ 359.63dp
+ 360.77dp
+ 361.91dp
+ 363.05dp
+ 364.19dp
+ 365.33dp
+ 366.48dp
+ 367.62dp
+ 368.76dp
+ 369.90dp
+ 371.04dp
+ 372.18dp
+ 373.32dp
+ 374.47dp
+ 375.61dp
+ 376.75dp
+ 377.89dp
+ 379.03dp
+ 380.17dp
+ 381.32dp
+ 382.46dp
+ 383.60dp
+ 384.74dp
+ 385.88dp
+ 387.02dp
+ 388.17dp
+ 389.31dp
+ 390.45dp
+ 391.59dp
+ 392.73dp
+ 393.88dp
+ 395.02dp
+ 396.16dp
+ 397.30dp
+ 398.44dp
+ 399.58dp
+ 400.73dp
+ 401.87dp
+ 403.01dp
+ 404.15dp
+ 405.29dp
+ 406.43dp
+ 407.57dp
+ 408.72dp
+ 409.86dp
+ 411.00dp
+ 412.14dp
+ 413.28dp
+ 414.42dp
+ 415.57dp
+ 416.71dp
+ 417.85dp
+ 418.99dp
+ 420.13dp
+ 421.27dp
+ 422.42dp
+ 423.56dp
+ 424.70dp
+ 425.84dp
+ 426.98dp
+ 428.13dp
+ 429.27dp
+ 430.41dp
+ 431.55dp
+ 432.69dp
+ 433.83dp
+ 434.98dp
+ 436.12dp
+ 437.26dp
+ 438.40dp
+ 439.54dp
+ 440.68dp
+ 441.82dp
+ 442.97dp
+ 444.11dp
+ 445.25dp
+ 446.39dp
+ 447.53dp
+ 448.67dp
+ 449.82dp
+ 450.96dp
+ 452.10dp
+ 453.24dp
+ 454.38dp
+ 455.52dp
+ 456.67dp
+
+ -1.14dp
+ -2.28dp
+ -3.42dp
+ -4.57dp
+ -5.71dp
+ -6.85dp
+ -7.99dp
+ -9.13dp
+ -10.27dp
+ -11.42dp
+ -12.56dp
+ -13.70dp
+ -14.84dp
+ -15.98dp
+ -17.13dp
+ -18.27dp
+ -19.41dp
+ -20.55dp
+ -21.69dp
+ -22.83dp
+ -23.98dp
+ -25.12dp
+ -26.26dp
+ -27.40dp
+ -28.54dp
+ -29.68dp
+ -30.82dp
+ -31.97dp
+ -33.11dp
+ -34.25dp
+ -35.39dp
+ -36.53dp
+ -37.67dp
+ -38.82dp
+ -39.96dp
+ -41.10dp
+ -42.24dp
+ -43.38dp
+ -44.52dp
+ -45.67dp
+ -46.81dp
+ -47.95dp
+ -49.09dp
+ -50.23dp
+ -51.38dp
+ -52.52dp
+ -53.66dp
+ -54.80dp
+ -55.94dp
+ -57.08dp
+ -58.22dp
+ -59.37dp
+ -60.51dp
+ -61.65dp
+ -62.79dp
+ -63.93dp
+ -65.07dp
+ -66.22dp
+ -67.36dp
+ -68.50dp
+
+ 1.14sp
+ 2.28sp
+ 3.42sp
+ 4.57sp
+ 5.71sp
+ 6.85sp
+ 7.99sp
+ 9.13sp
+ 10.27sp
+ 11.42sp
+ 12.56sp
+ 13.70sp
+ 14.84sp
+ 15.98sp
+ 17.13sp
+ 18.27sp
+ 19.41sp
+ 20.55sp
+ 21.69sp
+ 22.83sp
+ 23.98sp
+ 25.12sp
+ 26.26sp
+ 27.40sp
+ 28.54sp
+ 29.68sp
+ 30.82sp
+ 31.97sp
+ 33.11sp
+ 34.25sp
+ 35.39sp
+ 36.53sp
+ 37.67sp
+ 38.82sp
+ 39.96sp
+ 41.10sp
+ 42.24sp
+ 43.38sp
+ 44.52sp
+ 45.67sp
+ 46.81sp
+ 47.95sp
+ 49.09sp
+ 50.23sp
+ 51.38sp
+ 52.52sp
+ 53.66sp
+ 54.80sp
+ 55.94sp
+ 57.08sp
+ 58.22sp
+ 59.37sp
+ 60.51sp
+ 61.65sp
+ 62.79sp
+ 63.93sp
+ 65.07sp
+ 66.22sp
+ 67.36sp
+ 68.50sp
+
diff --git a/app/src/main/res/values-sw480dp/auto_dimens.xml b/app/src/main/res/values-sw480dp/auto_dimens.xml
new file mode 100644
index 0000000..327a616
--- /dev/null
+++ b/app/src/main/res/values-sw480dp/auto_dimens.xml
@@ -0,0 +1,526 @@
+
+
+ 0.00dp
+ 1.33dp
+ 2.67dp
+ 4.00dp
+ 5.33dp
+ 6.67dp
+ 8.00dp
+ 9.33dp
+ 10.67dp
+ 12.00dp
+ 13.33dp
+ 14.67dp
+ 16.00dp
+ 17.33dp
+ 18.67dp
+ 20.00dp
+ 21.33dp
+ 22.67dp
+ 24.00dp
+ 25.33dp
+ 26.67dp
+ 28.00dp
+ 29.33dp
+ 30.67dp
+ 32.00dp
+ 33.33dp
+ 34.67dp
+ 36.00dp
+ 37.33dp
+ 38.67dp
+ 40.00dp
+ 41.33dp
+ 42.67dp
+ 44.00dp
+ 45.33dp
+ 46.67dp
+ 48.00dp
+ 49.33dp
+ 50.67dp
+ 52.00dp
+ 53.33dp
+ 54.67dp
+ 56.00dp
+ 57.33dp
+ 58.67dp
+ 60.00dp
+ 61.33dp
+ 62.67dp
+ 64.00dp
+ 65.33dp
+ 66.67dp
+ 68.00dp
+ 69.33dp
+ 70.67dp
+ 72.00dp
+ 73.33dp
+ 74.67dp
+ 76.00dp
+ 77.33dp
+ 78.67dp
+ 80.00dp
+ 81.33dp
+ 82.67dp
+ 84.00dp
+ 85.33dp
+ 86.67dp
+ 88.00dp
+ 89.33dp
+ 90.67dp
+ 92.00dp
+ 93.33dp
+ 94.67dp
+ 96.00dp
+ 97.33dp
+ 98.67dp
+ 100.00dp
+ 101.33dp
+ 102.67dp
+ 104.00dp
+ 105.33dp
+ 106.67dp
+ 108.00dp
+ 109.33dp
+ 110.67dp
+ 112.00dp
+ 113.33dp
+ 114.67dp
+ 116.00dp
+ 117.33dp
+ 118.67dp
+ 120.00dp
+ 121.33dp
+ 122.67dp
+ 124.00dp
+ 125.33dp
+ 126.67dp
+ 128.00dp
+ 129.33dp
+ 130.67dp
+ 132.00dp
+ 133.33dp
+ 134.67dp
+ 136.00dp
+ 137.33dp
+ 138.67dp
+ 140.00dp
+ 141.33dp
+ 142.67dp
+ 144.00dp
+ 145.33dp
+ 146.67dp
+ 148.00dp
+ 149.33dp
+ 150.67dp
+ 152.00dp
+ 153.33dp
+ 154.67dp
+ 156.00dp
+ 157.33dp
+ 158.67dp
+ 160.00dp
+ 161.33dp
+ 162.67dp
+ 164.00dp
+ 165.33dp
+ 166.67dp
+ 168.00dp
+ 169.33dp
+ 170.67dp
+ 172.00dp
+ 173.33dp
+ 174.67dp
+ 176.00dp
+ 177.33dp
+ 178.67dp
+ 180.00dp
+ 181.33dp
+ 182.67dp
+ 184.00dp
+ 185.33dp
+ 186.67dp
+ 188.00dp
+ 189.33dp
+ 190.67dp
+ 192.00dp
+ 193.33dp
+ 194.67dp
+ 196.00dp
+ 197.33dp
+ 198.67dp
+ 200.00dp
+ 201.33dp
+ 202.67dp
+ 204.00dp
+ 205.33dp
+ 206.67dp
+ 208.00dp
+ 209.33dp
+ 210.67dp
+ 212.00dp
+ 213.33dp
+ 214.67dp
+ 216.00dp
+ 217.33dp
+ 218.67dp
+ 220.00dp
+ 221.33dp
+ 222.67dp
+ 224.00dp
+ 225.33dp
+ 226.67dp
+ 228.00dp
+ 229.33dp
+ 230.67dp
+ 232.00dp
+ 233.33dp
+ 234.67dp
+ 236.00dp
+ 237.33dp
+ 238.67dp
+ 240.00dp
+ 241.33dp
+ 242.67dp
+ 244.00dp
+ 245.33dp
+ 246.67dp
+ 248.00dp
+ 249.33dp
+ 250.67dp
+ 252.00dp
+ 253.33dp
+ 254.67dp
+ 256.00dp
+ 257.33dp
+ 258.67dp
+ 260.00dp
+ 261.33dp
+ 262.67dp
+ 264.00dp
+ 265.33dp
+ 266.67dp
+ 268.00dp
+ 269.33dp
+ 270.67dp
+ 272.00dp
+ 273.33dp
+ 274.67dp
+ 276.00dp
+ 277.33dp
+ 278.67dp
+ 280.00dp
+ 281.33dp
+ 282.67dp
+ 284.00dp
+ 285.33dp
+ 286.67dp
+ 288.00dp
+ 289.33dp
+ 290.67dp
+ 292.00dp
+ 293.33dp
+ 294.67dp
+ 296.00dp
+ 297.33dp
+ 298.67dp
+ 300.00dp
+ 301.33dp
+ 302.67dp
+ 304.00dp
+ 305.33dp
+ 306.67dp
+ 308.00dp
+ 309.33dp
+ 310.67dp
+ 312.00dp
+ 313.33dp
+ 314.67dp
+ 316.00dp
+ 317.33dp
+ 318.67dp
+ 320.00dp
+ 321.33dp
+ 322.67dp
+ 324.00dp
+ 325.33dp
+ 326.67dp
+ 328.00dp
+ 329.33dp
+ 330.67dp
+ 332.00dp
+ 333.33dp
+ 334.67dp
+ 336.00dp
+ 337.33dp
+ 338.67dp
+ 340.00dp
+ 341.33dp
+ 342.67dp
+ 344.00dp
+ 345.33dp
+ 346.67dp
+ 348.00dp
+ 349.33dp
+ 350.67dp
+ 352.00dp
+ 353.33dp
+ 354.67dp
+ 356.00dp
+ 357.33dp
+ 358.67dp
+ 360.00dp
+ 361.33dp
+ 362.67dp
+ 364.00dp
+ 365.33dp
+ 366.67dp
+ 368.00dp
+ 369.33dp
+ 370.67dp
+ 372.00dp
+ 373.33dp
+ 374.67dp
+ 376.00dp
+ 377.33dp
+ 378.67dp
+ 380.00dp
+ 381.33dp
+ 382.67dp
+ 384.00dp
+ 385.33dp
+ 386.67dp
+ 388.00dp
+ 389.33dp
+ 390.67dp
+ 392.00dp
+ 393.33dp
+ 394.67dp
+ 396.00dp
+ 397.33dp
+ 398.67dp
+ 400.00dp
+ 401.33dp
+ 402.67dp
+ 404.00dp
+ 405.33dp
+ 406.67dp
+ 408.00dp
+ 409.33dp
+ 410.67dp
+ 412.00dp
+ 413.33dp
+ 414.67dp
+ 416.00dp
+ 417.33dp
+ 418.67dp
+ 420.00dp
+ 421.33dp
+ 422.67dp
+ 424.00dp
+ 425.33dp
+ 426.67dp
+ 428.00dp
+ 429.33dp
+ 430.67dp
+ 432.00dp
+ 433.33dp
+ 434.67dp
+ 436.00dp
+ 437.33dp
+ 438.67dp
+ 440.00dp
+ 441.33dp
+ 442.67dp
+ 444.00dp
+ 445.33dp
+ 446.67dp
+ 448.00dp
+ 449.33dp
+ 450.67dp
+ 452.00dp
+ 453.33dp
+ 454.67dp
+ 456.00dp
+ 457.33dp
+ 458.67dp
+ 460.00dp
+ 461.33dp
+ 462.67dp
+ 464.00dp
+ 465.33dp
+ 466.67dp
+ 468.00dp
+ 469.33dp
+ 470.67dp
+ 472.00dp
+ 473.33dp
+ 474.67dp
+ 476.00dp
+ 477.33dp
+ 478.67dp
+ 480.00dp
+ 481.33dp
+ 482.67dp
+ 484.00dp
+ 485.33dp
+ 486.67dp
+ 488.00dp
+ 489.33dp
+ 490.67dp
+ 492.00dp
+ 493.33dp
+ 494.67dp
+ 496.00dp
+ 497.33dp
+ 498.67dp
+ 500.00dp
+ 501.33dp
+ 502.67dp
+ 504.00dp
+ 505.33dp
+ 506.67dp
+ 508.00dp
+ 509.33dp
+ 510.67dp
+ 512.00dp
+ 513.33dp
+ 514.67dp
+ 516.00dp
+ 517.33dp
+ 518.67dp
+ 520.00dp
+ 521.33dp
+ 522.67dp
+ 524.00dp
+ 525.33dp
+ 526.67dp
+ 528.00dp
+ 529.33dp
+ 530.67dp
+ 532.00dp
+ 533.33dp
+
+ -1.33dp
+ -2.67dp
+ -4.00dp
+ -5.33dp
+ -6.67dp
+ -8.00dp
+ -9.33dp
+ -10.67dp
+ -12.00dp
+ -13.33dp
+ -14.67dp
+ -16.00dp
+ -17.33dp
+ -18.67dp
+ -20.00dp
+ -21.33dp
+ -22.67dp
+ -24.00dp
+ -25.33dp
+ -26.67dp
+ -28.00dp
+ -29.33dp
+ -30.67dp
+ -32.00dp
+ -33.33dp
+ -34.67dp
+ -36.00dp
+ -37.33dp
+ -38.67dp
+ -40.00dp
+ -41.33dp
+ -42.67dp
+ -44.00dp
+ -45.33dp
+ -46.67dp
+ -48.00dp
+ -49.33dp
+ -50.67dp
+ -52.00dp
+ -53.33dp
+ -54.67dp
+ -56.00dp
+ -57.33dp
+ -58.67dp
+ -60.00dp
+ -61.33dp
+ -62.67dp
+ -64.00dp
+ -65.33dp
+ -66.67dp
+ -68.00dp
+ -69.33dp
+ -70.67dp
+ -72.00dp
+ -73.33dp
+ -74.67dp
+ -76.00dp
+ -77.33dp
+ -78.67dp
+ -80.00dp
+
+ 1.33sp
+ 2.67sp
+ 4.00sp
+ 5.33sp
+ 6.67sp
+ 8.00sp
+ 9.33sp
+ 10.67sp
+ 12.00sp
+ 13.33sp
+ 14.67sp
+ 16.00sp
+ 17.33sp
+ 18.67sp
+ 20.00sp
+ 21.33sp
+ 22.67sp
+ 24.00sp
+ 25.33sp
+ 26.67sp
+ 28.00sp
+ 29.33sp
+ 30.67sp
+ 32.00sp
+ 33.33sp
+ 34.67sp
+ 36.00sp
+ 37.33sp
+ 38.67sp
+ 40.00sp
+ 41.33sp
+ 42.67sp
+ 44.00sp
+ 45.33sp
+ 46.67sp
+ 48.00sp
+ 49.33sp
+ 50.67sp
+ 52.00sp
+ 53.33sp
+ 54.67sp
+ 56.00sp
+ 57.33sp
+ 58.67sp
+ 60.00sp
+ 61.33sp
+ 62.67sp
+ 64.00sp
+ 65.33sp
+ 66.67sp
+ 68.00sp
+ 69.33sp
+ 70.67sp
+ 72.00sp
+ 73.33sp
+ 74.67sp
+ 76.00sp
+ 77.33sp
+ 78.67sp
+ 80.00sp
+
diff --git a/app/src/main/res/values-sw540dp/auto_dimens.xml b/app/src/main/res/values-sw540dp/auto_dimens.xml
new file mode 100644
index 0000000..c310ac3
--- /dev/null
+++ b/app/src/main/res/values-sw540dp/auto_dimens.xml
@@ -0,0 +1,526 @@
+
+
+ 0.00dp
+ 1.50dp
+ 3.00dp
+ 4.50dp
+ 6.00dp
+ 7.50dp
+ 9.00dp
+ 10.50dp
+ 12.00dp
+ 13.50dp
+ 15.00dp
+ 16.50dp
+ 18.00dp
+ 19.50dp
+ 21.00dp
+ 22.50dp
+ 24.00dp
+ 25.50dp
+ 27.00dp
+ 28.50dp
+ 30.00dp
+ 31.50dp
+ 33.00dp
+ 34.50dp
+ 36.00dp
+ 37.50dp
+ 39.00dp
+ 40.50dp
+ 42.00dp
+ 43.50dp
+ 45.00dp
+ 46.50dp
+ 48.00dp
+ 49.50dp
+ 51.00dp
+ 52.50dp
+ 54.00dp
+ 55.50dp
+ 57.00dp
+ 58.50dp
+ 60.00dp
+ 61.50dp
+ 63.00dp
+ 64.50dp
+ 66.00dp
+ 67.50dp
+ 69.00dp
+ 70.50dp
+ 72.00dp
+ 73.50dp
+ 75.00dp
+ 76.50dp
+ 78.00dp
+ 79.50dp
+ 81.00dp
+ 82.50dp
+ 84.00dp
+ 85.50dp
+ 87.00dp
+ 88.50dp
+ 90.00dp
+ 91.50dp
+ 93.00dp
+ 94.50dp
+ 96.00dp
+ 97.50dp
+ 99.00dp
+ 100.50dp
+ 102.00dp
+ 103.50dp
+ 105.00dp
+ 106.50dp
+ 108.00dp
+ 109.50dp
+ 111.00dp
+ 112.50dp
+ 114.00dp
+ 115.50dp
+ 117.00dp
+ 118.50dp
+ 120.00dp
+ 121.50dp
+ 123.00dp
+ 124.50dp
+ 126.00dp
+ 127.50dp
+ 129.00dp
+ 130.50dp
+ 132.00dp
+ 133.50dp
+ 135.00dp
+ 136.50dp
+ 138.00dp
+ 139.50dp
+ 141.00dp
+ 142.50dp
+ 144.00dp
+ 145.50dp
+ 147.00dp
+ 148.50dp
+ 150.00dp
+ 151.50dp
+ 153.00dp
+ 154.50dp
+ 156.00dp
+ 157.50dp
+ 159.00dp
+ 160.50dp
+ 162.00dp
+ 163.50dp
+ 165.00dp
+ 166.50dp
+ 168.00dp
+ 169.50dp
+ 171.00dp
+ 172.50dp
+ 174.00dp
+ 175.50dp
+ 177.00dp
+ 178.50dp
+ 180.00dp
+ 181.50dp
+ 183.00dp
+ 184.50dp
+ 186.00dp
+ 187.50dp
+ 189.00dp
+ 190.50dp
+ 192.00dp
+ 193.50dp
+ 195.00dp
+ 196.50dp
+ 198.00dp
+ 199.50dp
+ 201.00dp
+ 202.50dp
+ 204.00dp
+ 205.50dp
+ 207.00dp
+ 208.50dp
+ 210.00dp
+ 211.50dp
+ 213.00dp
+ 214.50dp
+ 216.00dp
+ 217.50dp
+ 219.00dp
+ 220.50dp
+ 222.00dp
+ 223.50dp
+ 225.00dp
+ 226.50dp
+ 228.00dp
+ 229.50dp
+ 231.00dp
+ 232.50dp
+ 234.00dp
+ 235.50dp
+ 237.00dp
+ 238.50dp
+ 240.00dp
+ 241.50dp
+ 243.00dp
+ 244.50dp
+ 246.00dp
+ 247.50dp
+ 249.00dp
+ 250.50dp
+ 252.00dp
+ 253.50dp
+ 255.00dp
+ 256.50dp
+ 258.00dp
+ 259.50dp
+ 261.00dp
+ 262.50dp
+ 264.00dp
+ 265.50dp
+ 267.00dp
+ 268.50dp
+ 270.00dp
+ 271.50dp
+ 273.00dp
+ 274.50dp
+ 276.00dp
+ 277.50dp
+ 279.00dp
+ 280.50dp
+ 282.00dp
+ 283.50dp
+ 285.00dp
+ 286.50dp
+ 288.00dp
+ 289.50dp
+ 291.00dp
+ 292.50dp
+ 294.00dp
+ 295.50dp
+ 297.00dp
+ 298.50dp
+ 300.00dp
+ 301.50dp
+ 303.00dp
+ 304.50dp
+ 306.00dp
+ 307.50dp
+ 309.00dp
+ 310.50dp
+ 312.00dp
+ 313.50dp
+ 315.00dp
+ 316.50dp
+ 318.00dp
+ 319.50dp
+ 321.00dp
+ 322.50dp
+ 324.00dp
+ 325.50dp
+ 327.00dp
+ 328.50dp
+ 330.00dp
+ 331.50dp
+ 333.00dp
+ 334.50dp
+ 336.00dp
+ 337.50dp
+ 339.00dp
+ 340.50dp
+ 342.00dp
+ 343.50dp
+ 345.00dp
+ 346.50dp
+ 348.00dp
+ 349.50dp
+ 351.00dp
+ 352.50dp
+ 354.00dp
+ 355.50dp
+ 357.00dp
+ 358.50dp
+ 360.00dp
+ 361.50dp
+ 363.00dp
+ 364.50dp
+ 366.00dp
+ 367.50dp
+ 369.00dp
+ 370.50dp
+ 372.00dp
+ 373.50dp
+ 375.00dp
+ 376.50dp
+ 378.00dp
+ 379.50dp
+ 381.00dp
+ 382.50dp
+ 384.00dp
+ 385.50dp
+ 387.00dp
+ 388.50dp
+ 390.00dp
+ 391.50dp
+ 393.00dp
+ 394.50dp
+ 396.00dp
+ 397.50dp
+ 399.00dp
+ 400.50dp
+ 402.00dp
+ 403.50dp
+ 405.00dp
+ 406.50dp
+ 408.00dp
+ 409.50dp
+ 411.00dp
+ 412.50dp
+ 414.00dp
+ 415.50dp
+ 417.00dp
+ 418.50dp
+ 420.00dp
+ 421.50dp
+ 423.00dp
+ 424.50dp
+ 426.00dp
+ 427.50dp
+ 429.00dp
+ 430.50dp
+ 432.00dp
+ 433.50dp
+ 435.00dp
+ 436.50dp
+ 438.00dp
+ 439.50dp
+ 441.00dp
+ 442.50dp
+ 444.00dp
+ 445.50dp
+ 447.00dp
+ 448.50dp
+ 450.00dp
+ 451.50dp
+ 453.00dp
+ 454.50dp
+ 456.00dp
+ 457.50dp
+ 459.00dp
+ 460.50dp
+ 462.00dp
+ 463.50dp
+ 465.00dp
+ 466.50dp
+ 468.00dp
+ 469.50dp
+ 471.00dp
+ 472.50dp
+ 474.00dp
+ 475.50dp
+ 477.00dp
+ 478.50dp
+ 480.00dp
+ 481.50dp
+ 483.00dp
+ 484.50dp
+ 486.00dp
+ 487.50dp
+ 489.00dp
+ 490.50dp
+ 492.00dp
+ 493.50dp
+ 495.00dp
+ 496.50dp
+ 498.00dp
+ 499.50dp
+ 501.00dp
+ 502.50dp
+ 504.00dp
+ 505.50dp
+ 507.00dp
+ 508.50dp
+ 510.00dp
+ 511.50dp
+ 513.00dp
+ 514.50dp
+ 516.00dp
+ 517.50dp
+ 519.00dp
+ 520.50dp
+ 522.00dp
+ 523.50dp
+ 525.00dp
+ 526.50dp
+ 528.00dp
+ 529.50dp
+ 531.00dp
+ 532.50dp
+ 534.00dp
+ 535.50dp
+ 537.00dp
+ 538.50dp
+ 540.00dp
+ 541.50dp
+ 543.00dp
+ 544.50dp
+ 546.00dp
+ 547.50dp
+ 549.00dp
+ 550.50dp
+ 552.00dp
+ 553.50dp
+ 555.00dp
+ 556.50dp
+ 558.00dp
+ 559.50dp
+ 561.00dp
+ 562.50dp
+ 564.00dp
+ 565.50dp
+ 567.00dp
+ 568.50dp
+ 570.00dp
+ 571.50dp
+ 573.00dp
+ 574.50dp
+ 576.00dp
+ 577.50dp
+ 579.00dp
+ 580.50dp
+ 582.00dp
+ 583.50dp
+ 585.00dp
+ 586.50dp
+ 588.00dp
+ 589.50dp
+ 591.00dp
+ 592.50dp
+ 594.00dp
+ 595.50dp
+ 597.00dp
+ 598.50dp
+ 600.00dp
+
+ -1.50dp
+ -3.00dp
+ -4.50dp
+ -6.00dp
+ -7.50dp
+ -9.00dp
+ -10.50dp
+ -12.00dp
+ -13.50dp
+ -15.00dp
+ -16.50dp
+ -18.00dp
+ -19.50dp
+ -21.00dp
+ -22.50dp
+ -24.00dp
+ -25.50dp
+ -27.00dp
+ -28.50dp
+ -30.00dp
+ -31.50dp
+ -33.00dp
+ -34.50dp
+ -36.00dp
+ -37.50dp
+ -39.00dp
+ -40.50dp
+ -42.00dp
+ -43.50dp
+ -45.00dp
+ -46.50dp
+ -48.00dp
+ -49.50dp
+ -51.00dp
+ -52.50dp
+ -54.00dp
+ -55.50dp
+ -57.00dp
+ -58.50dp
+ -60.00dp
+ -61.50dp
+ -63.00dp
+ -64.50dp
+ -66.00dp
+ -67.50dp
+ -69.00dp
+ -70.50dp
+ -72.00dp
+ -73.50dp
+ -75.00dp
+ -76.50dp
+ -78.00dp
+ -79.50dp
+ -81.00dp
+ -82.50dp
+ -84.00dp
+ -85.50dp
+ -87.00dp
+ -88.50dp
+ -90.00dp
+
+ 1.50sp
+ 3.00sp
+ 4.50sp
+ 6.00sp
+ 7.50sp
+ 9.00sp
+ 10.50sp
+ 12.00sp
+ 13.50sp
+ 15.00sp
+ 16.50sp
+ 18.00sp
+ 19.50sp
+ 21.00sp
+ 22.50sp
+ 24.00sp
+ 25.50sp
+ 27.00sp
+ 28.50sp
+ 30.00sp
+ 31.50sp
+ 33.00sp
+ 34.50sp
+ 36.00sp
+ 37.50sp
+ 39.00sp
+ 40.50sp
+ 42.00sp
+ 43.50sp
+ 45.00sp
+ 46.50sp
+ 48.00sp
+ 49.50sp
+ 51.00sp
+ 52.50sp
+ 54.00sp
+ 55.50sp
+ 57.00sp
+ 58.50sp
+ 60.00sp
+ 61.50sp
+ 63.00sp
+ 64.50sp
+ 66.00sp
+ 67.50sp
+ 69.00sp
+ 70.50sp
+ 72.00sp
+ 73.50sp
+ 75.00sp
+ 76.50sp
+ 78.00sp
+ 79.50sp
+ 81.00sp
+ 82.50sp
+ 84.00sp
+ 85.50sp
+ 87.00sp
+ 88.50sp
+ 90.00sp
+
diff --git a/app/src/main/res/values-sw600dp/auto_dimens.xml b/app/src/main/res/values-sw600dp/auto_dimens.xml
new file mode 100644
index 0000000..f0824cb
--- /dev/null
+++ b/app/src/main/res/values-sw600dp/auto_dimens.xml
@@ -0,0 +1,526 @@
+
+
+ 0.00dp
+ 1.67dp
+ 3.33dp
+ 5.00dp
+ 6.67dp
+ 8.33dp
+ 10.00dp
+ 11.67dp
+ 13.33dp
+ 15.00dp
+ 16.67dp
+ 18.33dp
+ 20.00dp
+ 21.67dp
+ 23.33dp
+ 25.00dp
+ 26.67dp
+ 28.33dp
+ 30.00dp
+ 31.67dp
+ 33.33dp
+ 35.00dp
+ 36.67dp
+ 38.33dp
+ 40.00dp
+ 41.67dp
+ 43.33dp
+ 45.00dp
+ 46.67dp
+ 48.33dp
+ 50.00dp
+ 51.67dp
+ 53.33dp
+ 55.00dp
+ 56.67dp
+ 58.33dp
+ 60.00dp
+ 61.67dp
+ 63.33dp
+ 65.00dp
+ 66.67dp
+ 68.33dp
+ 70.00dp
+ 71.67dp
+ 73.33dp
+ 75.00dp
+ 76.67dp
+ 78.33dp
+ 80.00dp
+ 81.67dp
+ 83.33dp
+ 85.00dp
+ 86.67dp
+ 88.33dp
+ 90.00dp
+ 91.67dp
+ 93.33dp
+ 95.00dp
+ 96.67dp
+ 98.33dp
+ 100.00dp
+ 101.67dp
+ 103.33dp
+ 105.00dp
+ 106.67dp
+ 108.33dp
+ 110.00dp
+ 111.67dp
+ 113.33dp
+ 115.00dp
+ 116.67dp
+ 118.33dp
+ 120.00dp
+ 121.67dp
+ 123.33dp
+ 125.00dp
+ 126.67dp
+ 128.33dp
+ 130.00dp
+ 131.67dp
+ 133.33dp
+ 135.00dp
+ 136.67dp
+ 138.33dp
+ 140.00dp
+ 141.67dp
+ 143.33dp
+ 145.00dp
+ 146.67dp
+ 148.33dp
+ 150.00dp
+ 151.67dp
+ 153.33dp
+ 155.00dp
+ 156.67dp
+ 158.33dp
+ 160.00dp
+ 161.67dp
+ 163.33dp
+ 165.00dp
+ 166.67dp
+ 168.33dp
+ 170.00dp
+ 171.67dp
+ 173.33dp
+ 175.00dp
+ 176.67dp
+ 178.33dp
+ 180.00dp
+ 181.67dp
+ 183.33dp
+ 185.00dp
+ 186.67dp
+ 188.33dp
+ 190.00dp
+ 191.67dp
+ 193.33dp
+ 195.00dp
+ 196.67dp
+ 198.33dp
+ 200.00dp
+ 201.67dp
+ 203.33dp
+ 205.00dp
+ 206.67dp
+ 208.33dp
+ 210.00dp
+ 211.67dp
+ 213.33dp
+ 215.00dp
+ 216.67dp
+ 218.33dp
+ 220.00dp
+ 221.67dp
+ 223.33dp
+ 225.00dp
+ 226.67dp
+ 228.33dp
+ 230.00dp
+ 231.67dp
+ 233.33dp
+ 235.00dp
+ 236.67dp
+ 238.33dp
+ 240.00dp
+ 241.67dp
+ 243.33dp
+ 245.00dp
+ 246.67dp
+ 248.33dp
+ 250.00dp
+ 251.67dp
+ 253.33dp
+ 255.00dp
+ 256.67dp
+ 258.33dp
+ 260.00dp
+ 261.67dp
+ 263.33dp
+ 265.00dp
+ 266.67dp
+ 268.33dp
+ 270.00dp
+ 271.67dp
+ 273.33dp
+ 275.00dp
+ 276.67dp
+ 278.33dp
+ 280.00dp
+ 281.67dp
+ 283.33dp
+ 285.00dp
+ 286.67dp
+ 288.33dp
+ 290.00dp
+ 291.67dp
+ 293.33dp
+ 295.00dp
+ 296.67dp
+ 298.33dp
+ 300.00dp
+ 301.67dp
+ 303.33dp
+ 305.00dp
+ 306.67dp
+ 308.33dp
+ 310.00dp
+ 311.67dp
+ 313.33dp
+ 315.00dp
+ 316.67dp
+ 318.33dp
+ 320.00dp
+ 321.67dp
+ 323.33dp
+ 325.00dp
+ 326.67dp
+ 328.33dp
+ 330.00dp
+ 331.67dp
+ 333.33dp
+ 335.00dp
+ 336.67dp
+ 338.33dp
+ 340.00dp
+ 341.67dp
+ 343.33dp
+ 345.00dp
+ 346.67dp
+ 348.33dp
+ 350.00dp
+ 351.67dp
+ 353.33dp
+ 355.00dp
+ 356.67dp
+ 358.33dp
+ 360.00dp
+ 361.67dp
+ 363.33dp
+ 365.00dp
+ 366.67dp
+ 368.33dp
+ 370.00dp
+ 371.67dp
+ 373.33dp
+ 375.00dp
+ 376.67dp
+ 378.33dp
+ 380.00dp
+ 381.67dp
+ 383.33dp
+ 385.00dp
+ 386.67dp
+ 388.33dp
+ 390.00dp
+ 391.67dp
+ 393.33dp
+ 395.00dp
+ 396.67dp
+ 398.33dp
+ 400.00dp
+ 401.67dp
+ 403.33dp
+ 405.00dp
+ 406.67dp
+ 408.33dp
+ 410.00dp
+ 411.67dp
+ 413.33dp
+ 415.00dp
+ 416.67dp
+ 418.33dp
+ 420.00dp
+ 421.67dp
+ 423.33dp
+ 425.00dp
+ 426.67dp
+ 428.33dp
+ 430.00dp
+ 431.67dp
+ 433.33dp
+ 435.00dp
+ 436.67dp
+ 438.33dp
+ 440.00dp
+ 441.67dp
+ 443.33dp
+ 445.00dp
+ 446.67dp
+ 448.33dp
+ 450.00dp
+ 451.67dp
+ 453.33dp
+ 455.00dp
+ 456.67dp
+ 458.33dp
+ 460.00dp
+ 461.67dp
+ 463.33dp
+ 465.00dp
+ 466.67dp
+ 468.33dp
+ 470.00dp
+ 471.67dp
+ 473.33dp
+ 475.00dp
+ 476.67dp
+ 478.33dp
+ 480.00dp
+ 481.67dp
+ 483.33dp
+ 485.00dp
+ 486.67dp
+ 488.33dp
+ 490.00dp
+ 491.67dp
+ 493.33dp
+ 495.00dp
+ 496.67dp
+ 498.33dp
+ 500.00dp
+ 501.67dp
+ 503.33dp
+ 505.00dp
+ 506.67dp
+ 508.33dp
+ 510.00dp
+ 511.67dp
+ 513.33dp
+ 515.00dp
+ 516.67dp
+ 518.33dp
+ 520.00dp
+ 521.67dp
+ 523.33dp
+ 525.00dp
+ 526.67dp
+ 528.33dp
+ 530.00dp
+ 531.67dp
+ 533.33dp
+ 535.00dp
+ 536.67dp
+ 538.33dp
+ 540.00dp
+ 541.67dp
+ 543.33dp
+ 545.00dp
+ 546.67dp
+ 548.33dp
+ 550.00dp
+ 551.67dp
+ 553.33dp
+ 555.00dp
+ 556.67dp
+ 558.33dp
+ 560.00dp
+ 561.67dp
+ 563.33dp
+ 565.00dp
+ 566.67dp
+ 568.33dp
+ 570.00dp
+ 571.67dp
+ 573.33dp
+ 575.00dp
+ 576.67dp
+ 578.33dp
+ 580.00dp
+ 581.67dp
+ 583.33dp
+ 585.00dp
+ 586.67dp
+ 588.33dp
+ 590.00dp
+ 591.67dp
+ 593.33dp
+ 595.00dp
+ 596.67dp
+ 598.33dp
+ 600.00dp
+ 601.67dp
+ 603.33dp
+ 605.00dp
+ 606.67dp
+ 608.33dp
+ 610.00dp
+ 611.67dp
+ 613.33dp
+ 615.00dp
+ 616.67dp
+ 618.33dp
+ 620.00dp
+ 621.67dp
+ 623.33dp
+ 625.00dp
+ 626.67dp
+ 628.33dp
+ 630.00dp
+ 631.67dp
+ 633.33dp
+ 635.00dp
+ 636.67dp
+ 638.33dp
+ 640.00dp
+ 641.67dp
+ 643.33dp
+ 645.00dp
+ 646.67dp
+ 648.33dp
+ 650.00dp
+ 651.67dp
+ 653.33dp
+ 655.00dp
+ 656.67dp
+ 658.33dp
+ 660.00dp
+ 661.67dp
+ 663.33dp
+ 665.00dp
+ 666.67dp
+
+ -1.67dp
+ -3.33dp
+ -5.00dp
+ -6.67dp
+ -8.33dp
+ -10.00dp
+ -11.67dp
+ -13.33dp
+ -15.00dp
+ -16.67dp
+ -18.33dp
+ -20.00dp
+ -21.67dp
+ -23.33dp
+ -25.00dp
+ -26.67dp
+ -28.33dp
+ -30.00dp
+ -31.67dp
+ -33.33dp
+ -35.00dp
+ -36.67dp
+ -38.33dp
+ -40.00dp
+ -41.67dp
+ -43.33dp
+ -45.00dp
+ -46.67dp
+ -48.33dp
+ -50.00dp
+ -51.67dp
+ -53.33dp
+ -55.00dp
+ -56.67dp
+ -58.33dp
+ -60.00dp
+ -61.67dp
+ -63.33dp
+ -65.00dp
+ -66.67dp
+ -68.33dp
+ -70.00dp
+ -71.67dp
+ -73.33dp
+ -75.00dp
+ -76.67dp
+ -78.33dp
+ -80.00dp
+ -81.67dp
+ -83.33dp
+ -85.00dp
+ -86.67dp
+ -88.33dp
+ -90.00dp
+ -91.67dp
+ -93.33dp
+ -95.00dp
+ -96.67dp
+ -98.33dp
+ -100.00dp
+
+ 1.67sp
+ 3.33sp
+ 5.00sp
+ 6.67sp
+ 8.33sp
+ 10.00sp
+ 11.67sp
+ 13.33sp
+ 15.00sp
+ 16.67sp
+ 18.33sp
+ 20.00sp
+ 21.67sp
+ 23.33sp
+ 25.00sp
+ 26.67sp
+ 28.33sp
+ 30.00sp
+ 31.67sp
+ 33.33sp
+ 35.00sp
+ 36.67sp
+ 38.33sp
+ 40.00sp
+ 41.67sp
+ 43.33sp
+ 45.00sp
+ 46.67sp
+ 48.33sp
+ 50.00sp
+ 51.67sp
+ 53.33sp
+ 55.00sp
+ 56.67sp
+ 58.33sp
+ 60.00sp
+ 61.67sp
+ 63.33sp
+ 65.00sp
+ 66.67sp
+ 68.33sp
+ 70.00sp
+ 71.67sp
+ 73.33sp
+ 75.00sp
+ 76.67sp
+ 78.33sp
+ 80.00sp
+ 81.67sp
+ 83.33sp
+ 85.00sp
+ 86.67sp
+ 88.33sp
+ 90.00sp
+ 91.67sp
+ 93.33sp
+ 95.00sp
+ 96.67sp
+ 98.33sp
+ 100.00sp
+
diff --git a/app/src/main/res/values-sw720dp/auto_dimens.xml b/app/src/main/res/values-sw720dp/auto_dimens.xml
new file mode 100644
index 0000000..c818f28
--- /dev/null
+++ b/app/src/main/res/values-sw720dp/auto_dimens.xml
@@ -0,0 +1,526 @@
+
+
+ 0.00dp
+ 2.00dp
+ 4.00dp
+ 6.00dp
+ 8.00dp
+ 10.00dp
+ 12.00dp
+ 14.00dp
+ 16.00dp
+ 18.00dp
+ 20.00dp
+ 22.00dp
+ 24.00dp
+ 26.00dp
+ 28.00dp
+ 30.00dp
+ 32.00dp
+ 34.00dp
+ 36.00dp
+ 38.00dp
+ 40.00dp
+ 42.00dp
+ 44.00dp
+ 46.00dp
+ 48.00dp
+ 50.00dp
+ 52.00dp
+ 54.00dp
+ 56.00dp
+ 58.00dp
+ 60.00dp
+ 62.00dp
+ 64.00dp
+ 66.00dp
+ 68.00dp
+ 70.00dp
+ 72.00dp
+ 74.00dp
+ 76.00dp
+ 78.00dp
+ 80.00dp
+ 82.00dp
+ 84.00dp
+ 86.00dp
+ 88.00dp
+ 90.00dp
+ 92.00dp
+ 94.00dp
+ 96.00dp
+ 98.00dp
+ 100.00dp
+ 102.00dp
+ 104.00dp
+ 106.00dp
+ 108.00dp
+ 110.00dp
+ 112.00dp
+ 114.00dp
+ 116.00dp
+ 118.00dp
+ 120.00dp
+ 122.00dp
+ 124.00dp
+ 126.00dp
+ 128.00dp
+ 130.00dp
+ 132.00dp
+ 134.00dp
+ 136.00dp
+ 138.00dp
+ 140.00dp
+ 142.00dp
+ 144.00dp
+ 146.00dp
+ 148.00dp
+ 150.00dp
+ 152.00dp
+ 154.00dp
+ 156.00dp
+ 158.00dp
+ 160.00dp
+ 162.00dp
+ 164.00dp
+ 166.00dp
+ 168.00dp
+ 170.00dp
+ 172.00dp
+ 174.00dp
+ 176.00dp
+ 178.00dp
+ 180.00dp
+ 182.00dp
+ 184.00dp
+ 186.00dp
+ 188.00dp
+ 190.00dp
+ 192.00dp
+ 194.00dp
+ 196.00dp
+ 198.00dp
+ 200.00dp
+ 202.00dp
+ 204.00dp
+ 206.00dp
+ 208.00dp
+ 210.00dp
+ 212.00dp
+ 214.00dp
+ 216.00dp
+ 218.00dp
+ 220.00dp
+ 222.00dp
+ 224.00dp
+ 226.00dp
+ 228.00dp
+ 230.00dp
+ 232.00dp
+ 234.00dp
+ 236.00dp
+ 238.00dp
+ 240.00dp
+ 242.00dp
+ 244.00dp
+ 246.00dp
+ 248.00dp
+ 250.00dp
+ 252.00dp
+ 254.00dp
+ 256.00dp
+ 258.00dp
+ 260.00dp
+ 262.00dp
+ 264.00dp
+ 266.00dp
+ 268.00dp
+ 270.00dp
+ 272.00dp
+ 274.00dp
+ 276.00dp
+ 278.00dp
+ 280.00dp
+ 282.00dp
+ 284.00dp
+ 286.00dp
+ 288.00dp
+ 290.00dp
+ 292.00dp
+ 294.00dp
+ 296.00dp
+ 298.00dp
+ 300.00dp
+ 302.00dp
+ 304.00dp
+ 306.00dp
+ 308.00dp
+ 310.00dp
+ 312.00dp
+ 314.00dp
+ 316.00dp
+ 318.00dp
+ 320.00dp
+ 322.00dp
+ 324.00dp
+ 326.00dp
+ 328.00dp
+ 330.00dp
+ 332.00dp
+ 334.00dp
+ 336.00dp
+ 338.00dp
+ 340.00dp
+ 342.00dp
+ 344.00dp
+ 346.00dp
+ 348.00dp
+ 350.00dp
+ 352.00dp
+ 354.00dp
+ 356.00dp
+ 358.00dp
+ 360.00dp
+ 362.00dp
+ 364.00dp
+ 366.00dp
+ 368.00dp
+ 370.00dp
+ 372.00dp
+ 374.00dp
+ 376.00dp
+ 378.00dp
+ 380.00dp
+ 382.00dp
+ 384.00dp
+ 386.00dp
+ 388.00dp
+ 390.00dp
+ 392.00dp
+ 394.00dp
+ 396.00dp
+ 398.00dp
+ 400.00dp
+ 402.00dp
+ 404.00dp
+ 406.00dp
+ 408.00dp
+ 410.00dp
+ 412.00dp
+ 414.00dp
+ 416.00dp
+ 418.00dp
+ 420.00dp
+ 422.00dp
+ 424.00dp
+ 426.00dp
+ 428.00dp
+ 430.00dp
+ 432.00dp
+ 434.00dp
+ 436.00dp
+ 438.00dp
+ 440.00dp
+ 442.00dp
+ 444.00dp
+ 446.00dp
+ 448.00dp
+ 450.00dp
+ 452.00dp
+ 454.00dp
+ 456.00dp
+ 458.00dp
+ 460.00dp
+ 462.00dp
+ 464.00dp
+ 466.00dp
+ 468.00dp
+ 470.00dp
+ 472.00dp
+ 474.00dp
+ 476.00dp
+ 478.00dp
+ 480.00dp
+ 482.00dp
+ 484.00dp
+ 486.00dp
+ 488.00dp
+ 490.00dp
+ 492.00dp
+ 494.00dp
+ 496.00dp
+ 498.00dp
+ 500.00dp
+ 502.00dp
+ 504.00dp
+ 506.00dp
+ 508.00dp
+ 510.00dp
+ 512.00dp
+ 514.00dp
+ 516.00dp
+ 518.00dp
+ 520.00dp
+ 522.00dp
+ 524.00dp
+ 526.00dp
+ 528.00dp
+ 530.00dp
+ 532.00dp
+ 534.00dp
+ 536.00dp
+ 538.00dp
+ 540.00dp
+ 542.00dp
+ 544.00dp
+ 546.00dp
+ 548.00dp
+ 550.00dp
+ 552.00dp
+ 554.00dp
+ 556.00dp
+ 558.00dp
+ 560.00dp
+ 562.00dp
+ 564.00dp
+ 566.00dp
+ 568.00dp
+ 570.00dp
+ 572.00dp
+ 574.00dp
+ 576.00dp
+ 578.00dp
+ 580.00dp
+ 582.00dp
+ 584.00dp
+ 586.00dp
+ 588.00dp
+ 590.00dp
+ 592.00dp
+ 594.00dp
+ 596.00dp
+ 598.00dp
+ 600.00dp
+ 602.00dp
+ 604.00dp
+ 606.00dp
+ 608.00dp
+ 610.00dp
+ 612.00dp
+ 614.00dp
+ 616.00dp
+ 618.00dp
+ 620.00dp
+ 622.00dp
+ 624.00dp
+ 626.00dp
+ 628.00dp
+ 630.00dp
+ 632.00dp
+ 634.00dp
+ 636.00dp
+ 638.00dp
+ 640.00dp
+ 642.00dp
+ 644.00dp
+ 646.00dp
+ 648.00dp
+ 650.00dp
+ 652.00dp
+ 654.00dp
+ 656.00dp
+ 658.00dp
+ 660.00dp
+ 662.00dp
+ 664.00dp
+ 666.00dp
+ 668.00dp
+ 670.00dp
+ 672.00dp
+ 674.00dp
+ 676.00dp
+ 678.00dp
+ 680.00dp
+ 682.00dp
+ 684.00dp
+ 686.00dp
+ 688.00dp
+ 690.00dp
+ 692.00dp
+ 694.00dp
+ 696.00dp
+ 698.00dp
+ 700.00dp
+ 702.00dp
+ 704.00dp
+ 706.00dp
+ 708.00dp
+ 710.00dp
+ 712.00dp
+ 714.00dp
+ 716.00dp
+ 718.00dp
+ 720.00dp
+ 722.00dp
+ 724.00dp
+ 726.00dp
+ 728.00dp
+ 730.00dp
+ 732.00dp
+ 734.00dp
+ 736.00dp
+ 738.00dp
+ 740.00dp
+ 742.00dp
+ 744.00dp
+ 746.00dp
+ 748.00dp
+ 750.00dp
+ 752.00dp
+ 754.00dp
+ 756.00dp
+ 758.00dp
+ 760.00dp
+ 762.00dp
+ 764.00dp
+ 766.00dp
+ 768.00dp
+ 770.00dp
+ 772.00dp
+ 774.00dp
+ 776.00dp
+ 778.00dp
+ 780.00dp
+ 782.00dp
+ 784.00dp
+ 786.00dp
+ 788.00dp
+ 790.00dp
+ 792.00dp
+ 794.00dp
+ 796.00dp
+ 798.00dp
+ 800.00dp
+
+ -2.00dp
+ -4.00dp
+ -6.00dp
+ -8.00dp
+ -10.00dp
+ -12.00dp
+ -14.00dp
+ -16.00dp
+ -18.00dp
+ -20.00dp
+ -22.00dp
+ -24.00dp
+ -26.00dp
+ -28.00dp
+ -30.00dp
+ -32.00dp
+ -34.00dp
+ -36.00dp
+ -38.00dp
+ -40.00dp
+ -42.00dp
+ -44.00dp
+ -46.00dp
+ -48.00dp
+ -50.00dp
+ -52.00dp
+ -54.00dp
+ -56.00dp
+ -58.00dp
+ -60.00dp
+ -62.00dp
+ -64.00dp
+ -66.00dp
+ -68.00dp
+ -70.00dp
+ -72.00dp
+ -74.00dp
+ -76.00dp
+ -78.00dp
+ -80.00dp
+ -82.00dp
+ -84.00dp
+ -86.00dp
+ -88.00dp
+ -90.00dp
+ -92.00dp
+ -94.00dp
+ -96.00dp
+ -98.00dp
+ -100.00dp
+ -102.00dp
+ -104.00dp
+ -106.00dp
+ -108.00dp
+ -110.00dp
+ -112.00dp
+ -114.00dp
+ -116.00dp
+ -118.00dp
+ -120.00dp
+
+ 2.00sp
+ 4.00sp
+ 6.00sp
+ 8.00sp
+ 10.00sp
+ 12.00sp
+ 14.00sp
+ 16.00sp
+ 18.00sp
+ 20.00sp
+ 22.00sp
+ 24.00sp
+ 26.00sp
+ 28.00sp
+ 30.00sp
+ 32.00sp
+ 34.00sp
+ 36.00sp
+ 38.00sp
+ 40.00sp
+ 42.00sp
+ 44.00sp
+ 46.00sp
+ 48.00sp
+ 50.00sp
+ 52.00sp
+ 54.00sp
+ 56.00sp
+ 58.00sp
+ 60.00sp
+ 62.00sp
+ 64.00sp
+ 66.00sp
+ 68.00sp
+ 70.00sp
+ 72.00sp
+ 74.00sp
+ 76.00sp
+ 78.00sp
+ 80.00sp
+ 82.00sp
+ 84.00sp
+ 86.00sp
+ 88.00sp
+ 90.00sp
+ 92.00sp
+ 94.00sp
+ 96.00sp
+ 98.00sp
+ 100.00sp
+ 102.00sp
+ 104.00sp
+ 106.00sp
+ 108.00sp
+ 110.00sp
+ 112.00sp
+ 114.00sp
+ 116.00sp
+ 118.00sp
+ 120.00sp
+
diff --git a/app/src/main/res/values-sw800dp/auto_dimens.xml b/app/src/main/res/values-sw800dp/auto_dimens.xml
new file mode 100644
index 0000000..546c58e
--- /dev/null
+++ b/app/src/main/res/values-sw800dp/auto_dimens.xml
@@ -0,0 +1,526 @@
+
+
+ 0.00dp
+ 2.22dp
+ 4.44dp
+ 6.67dp
+ 8.89dp
+ 11.11dp
+ 13.33dp
+ 15.56dp
+ 17.78dp
+ 20.00dp
+ 22.22dp
+ 24.44dp
+ 26.67dp
+ 28.89dp
+ 31.11dp
+ 33.33dp
+ 35.56dp
+ 37.78dp
+ 40.00dp
+ 42.22dp
+ 44.44dp
+ 46.67dp
+ 48.89dp
+ 51.11dp
+ 53.33dp
+ 55.56dp
+ 57.78dp
+ 60.00dp
+ 62.22dp
+ 64.44dp
+ 66.67dp
+ 68.89dp
+ 71.11dp
+ 73.33dp
+ 75.56dp
+ 77.78dp
+ 80.00dp
+ 82.22dp
+ 84.44dp
+ 86.67dp
+ 88.89dp
+ 91.11dp
+ 93.33dp
+ 95.56dp
+ 97.78dp
+ 100.00dp
+ 102.22dp
+ 104.44dp
+ 106.67dp
+ 108.89dp
+ 111.11dp
+ 113.33dp
+ 115.56dp
+ 117.78dp
+ 120.00dp
+ 122.22dp
+ 124.44dp
+ 126.67dp
+ 128.89dp
+ 131.11dp
+ 133.33dp
+ 135.56dp
+ 137.78dp
+ 140.00dp
+ 142.22dp
+ 144.44dp
+ 146.67dp
+ 148.89dp
+ 151.11dp
+ 153.33dp
+ 155.56dp
+ 157.78dp
+ 160.00dp
+ 162.22dp
+ 164.44dp
+ 166.67dp
+ 168.89dp
+ 171.11dp
+ 173.33dp
+ 175.56dp
+ 177.78dp
+ 180.00dp
+ 182.22dp
+ 184.44dp
+ 186.67dp
+ 188.89dp
+ 191.11dp
+ 193.33dp
+ 195.56dp
+ 197.78dp
+ 200.00dp
+ 202.22dp
+ 204.44dp
+ 206.67dp
+ 208.89dp
+ 211.11dp
+ 213.33dp
+ 215.56dp
+ 217.78dp
+ 220.00dp
+ 222.22dp
+ 224.44dp
+ 226.67dp
+ 228.89dp
+ 231.11dp
+ 233.33dp
+ 235.56dp
+ 237.78dp
+ 240.00dp
+ 242.22dp
+ 244.44dp
+ 246.67dp
+ 248.89dp
+ 251.11dp
+ 253.33dp
+ 255.56dp
+ 257.78dp
+ 260.00dp
+ 262.22dp
+ 264.44dp
+ 266.67dp
+ 268.89dp
+ 271.11dp
+ 273.33dp
+ 275.56dp
+ 277.78dp
+ 280.00dp
+ 282.22dp
+ 284.44dp
+ 286.67dp
+ 288.89dp
+ 291.11dp
+ 293.33dp
+ 295.56dp
+ 297.78dp
+ 300.00dp
+ 302.22dp
+ 304.44dp
+ 306.67dp
+ 308.89dp
+ 311.11dp
+ 313.33dp
+ 315.56dp
+ 317.78dp
+ 320.00dp
+ 322.22dp
+ 324.44dp
+ 326.67dp
+ 328.89dp
+ 331.11dp
+ 333.33dp
+ 335.56dp
+ 337.78dp
+ 340.00dp
+ 342.22dp
+ 344.44dp
+ 346.67dp
+ 348.89dp
+ 351.11dp
+ 353.33dp
+ 355.56dp
+ 357.78dp
+ 360.00dp
+ 362.22dp
+ 364.44dp
+ 366.67dp
+ 368.89dp
+ 371.11dp
+ 373.33dp
+ 375.56dp
+ 377.78dp
+ 380.00dp
+ 382.22dp
+ 384.44dp
+ 386.67dp
+ 388.89dp
+ 391.11dp
+ 393.33dp
+ 395.56dp
+ 397.78dp
+ 400.00dp
+ 402.22dp
+ 404.44dp
+ 406.67dp
+ 408.89dp
+ 411.11dp
+ 413.33dp
+ 415.56dp
+ 417.78dp
+ 420.00dp
+ 422.22dp
+ 424.44dp
+ 426.67dp
+ 428.89dp
+ 431.11dp
+ 433.33dp
+ 435.56dp
+ 437.78dp
+ 440.00dp
+ 442.22dp
+ 444.44dp
+ 446.67dp
+ 448.89dp
+ 451.11dp
+ 453.33dp
+ 455.56dp
+ 457.78dp
+ 460.00dp
+ 462.22dp
+ 464.44dp
+ 466.67dp
+ 468.89dp
+ 471.11dp
+ 473.33dp
+ 475.56dp
+ 477.78dp
+ 480.00dp
+ 482.22dp
+ 484.44dp
+ 486.67dp
+ 488.89dp
+ 491.11dp
+ 493.33dp
+ 495.56dp
+ 497.78dp
+ 500.00dp
+ 502.22dp
+ 504.44dp
+ 506.67dp
+ 508.89dp
+ 511.11dp
+ 513.33dp
+ 515.56dp
+ 517.78dp
+ 520.00dp
+ 522.22dp
+ 524.44dp
+ 526.67dp
+ 528.89dp
+ 531.11dp
+ 533.33dp
+ 535.56dp
+ 537.78dp
+ 540.00dp
+ 542.22dp
+ 544.44dp
+ 546.67dp
+ 548.89dp
+ 551.11dp
+ 553.33dp
+ 555.56dp
+ 557.78dp
+ 560.00dp
+ 562.22dp
+ 564.44dp
+ 566.67dp
+ 568.89dp
+ 571.11dp
+ 573.33dp
+ 575.56dp
+ 577.78dp
+ 580.00dp
+ 582.22dp
+ 584.44dp
+ 586.67dp
+ 588.89dp
+ 591.11dp
+ 593.33dp
+ 595.56dp
+ 597.78dp
+ 600.00dp
+ 602.22dp
+ 604.44dp
+ 606.67dp
+ 608.89dp
+ 611.11dp
+ 613.33dp
+ 615.56dp
+ 617.78dp
+ 620.00dp
+ 622.22dp
+ 624.44dp
+ 626.67dp
+ 628.89dp
+ 631.11dp
+ 633.33dp
+ 635.56dp
+ 637.78dp
+ 640.00dp
+ 642.22dp
+ 644.44dp
+ 646.67dp
+ 648.89dp
+ 651.11dp
+ 653.33dp
+ 655.56dp
+ 657.78dp
+ 660.00dp
+ 662.22dp
+ 664.44dp
+ 666.67dp
+ 668.89dp
+ 671.11dp
+ 673.33dp
+ 675.56dp
+ 677.78dp
+ 680.00dp
+ 682.22dp
+ 684.44dp
+ 686.67dp
+ 688.89dp
+ 691.11dp
+ 693.33dp
+ 695.56dp
+ 697.78dp
+ 700.00dp
+ 702.22dp
+ 704.44dp
+ 706.67dp
+ 708.89dp
+ 711.11dp
+ 713.33dp
+ 715.56dp
+ 717.78dp
+ 720.00dp
+ 722.22dp
+ 724.44dp
+ 726.67dp
+ 728.89dp
+ 731.11dp
+ 733.33dp
+ 735.56dp
+ 737.78dp
+ 740.00dp
+ 742.22dp
+ 744.44dp
+ 746.67dp
+ 748.89dp
+ 751.11dp
+ 753.33dp
+ 755.56dp
+ 757.78dp
+ 760.00dp
+ 762.22dp
+ 764.44dp
+ 766.67dp
+ 768.89dp
+ 771.11dp
+ 773.33dp
+ 775.56dp
+ 777.78dp
+ 780.00dp
+ 782.22dp
+ 784.44dp
+ 786.67dp
+ 788.89dp
+ 791.11dp
+ 793.33dp
+ 795.56dp
+ 797.78dp
+ 800.00dp
+ 802.22dp
+ 804.44dp
+ 806.67dp
+ 808.89dp
+ 811.11dp
+ 813.33dp
+ 815.56dp
+ 817.78dp
+ 820.00dp
+ 822.22dp
+ 824.44dp
+ 826.67dp
+ 828.89dp
+ 831.11dp
+ 833.33dp
+ 835.56dp
+ 837.78dp
+ 840.00dp
+ 842.22dp
+ 844.44dp
+ 846.67dp
+ 848.89dp
+ 851.11dp
+ 853.33dp
+ 855.56dp
+ 857.78dp
+ 860.00dp
+ 862.22dp
+ 864.44dp
+ 866.67dp
+ 868.89dp
+ 871.11dp
+ 873.33dp
+ 875.56dp
+ 877.78dp
+ 880.00dp
+ 882.22dp
+ 884.44dp
+ 886.67dp
+ 888.89dp
+
+ -2.22dp
+ -4.44dp
+ -6.67dp
+ -8.89dp
+ -11.11dp
+ -13.33dp
+ -15.56dp
+ -17.78dp
+ -20.00dp
+ -22.22dp
+ -24.44dp
+ -26.67dp
+ -28.89dp
+ -31.11dp
+ -33.33dp
+ -35.56dp
+ -37.78dp
+ -40.00dp
+ -42.22dp
+ -44.44dp
+ -46.67dp
+ -48.89dp
+ -51.11dp
+ -53.33dp
+ -55.56dp
+ -57.78dp
+ -60.00dp
+ -62.22dp
+ -64.44dp
+ -66.67dp
+ -68.89dp
+ -71.11dp
+ -73.33dp
+ -75.56dp
+ -77.78dp
+ -80.00dp
+ -82.22dp
+ -84.44dp
+ -86.67dp
+ -88.89dp
+ -91.11dp
+ -93.33dp
+ -95.56dp
+ -97.78dp
+ -100.00dp
+ -102.22dp
+ -104.44dp
+ -106.67dp
+ -108.89dp
+ -111.11dp
+ -113.33dp
+ -115.56dp
+ -117.78dp
+ -120.00dp
+ -122.22dp
+ -124.44dp
+ -126.67dp
+ -128.89dp
+ -131.11dp
+ -133.33dp
+
+ 2.22sp
+ 4.44sp
+ 6.67sp
+ 8.89sp
+ 11.11sp
+ 13.33sp
+ 15.56sp
+ 17.78sp
+ 20.00sp
+ 22.22sp
+ 24.44sp
+ 26.67sp
+ 28.89sp
+ 31.11sp
+ 33.33sp
+ 35.56sp
+ 37.78sp
+ 40.00sp
+ 42.22sp
+ 44.44sp
+ 46.67sp
+ 48.89sp
+ 51.11sp
+ 53.33sp
+ 55.56sp
+ 57.78sp
+ 60.00sp
+ 62.22sp
+ 64.44sp
+ 66.67sp
+ 68.89sp
+ 71.11sp
+ 73.33sp
+ 75.56sp
+ 77.78sp
+ 80.00sp
+ 82.22sp
+ 84.44sp
+ 86.67sp
+ 88.89sp
+ 91.11sp
+ 93.33sp
+ 95.56sp
+ 97.78sp
+ 100.00sp
+ 102.22sp
+ 104.44sp
+ 106.67sp
+ 108.89sp
+ 111.11sp
+ 113.33sp
+ 115.56sp
+ 117.78sp
+ 120.00sp
+ 122.22sp
+ 124.44sp
+ 126.67sp
+ 128.89sp
+ 131.11sp
+ 133.33sp
+
diff --git a/app/src/main/res/values-sw960dp/auto_dimens.xml b/app/src/main/res/values-sw960dp/auto_dimens.xml
new file mode 100644
index 0000000..9c817bb
--- /dev/null
+++ b/app/src/main/res/values-sw960dp/auto_dimens.xml
@@ -0,0 +1,526 @@
+
+
+ 0.00dp
+ 2.67dp
+ 5.33dp
+ 8.00dp
+ 10.67dp
+ 13.33dp
+ 16.00dp
+ 18.67dp
+ 21.33dp
+ 24.00dp
+ 26.67dp
+ 29.33dp
+ 32.00dp
+ 34.67dp
+ 37.33dp
+ 40.00dp
+ 42.67dp
+ 45.33dp
+ 48.00dp
+ 50.67dp
+ 53.33dp
+ 56.00dp
+ 58.67dp
+ 61.33dp
+ 64.00dp
+ 66.67dp
+ 69.33dp
+ 72.00dp
+ 74.67dp
+ 77.33dp
+ 80.00dp
+ 82.67dp
+ 85.33dp
+ 88.00dp
+ 90.67dp
+ 93.33dp
+ 96.00dp
+ 98.67dp
+ 101.33dp
+ 104.00dp
+ 106.67dp
+ 109.33dp
+ 112.00dp
+ 114.67dp
+ 117.33dp
+ 120.00dp
+ 122.67dp
+ 125.33dp
+ 128.00dp
+ 130.67dp
+ 133.33dp
+ 136.00dp
+ 138.67dp
+ 141.33dp
+ 144.00dp
+ 146.67dp
+ 149.33dp
+ 152.00dp
+ 154.67dp
+ 157.33dp
+ 160.00dp
+ 162.67dp
+ 165.33dp
+ 168.00dp
+ 170.67dp
+ 173.33dp
+ 176.00dp
+ 178.67dp
+ 181.33dp
+ 184.00dp
+ 186.67dp
+ 189.33dp
+ 192.00dp
+ 194.67dp
+ 197.33dp
+ 200.00dp
+ 202.67dp
+ 205.33dp
+ 208.00dp
+ 210.67dp
+ 213.33dp
+ 216.00dp
+ 218.67dp
+ 221.33dp
+ 224.00dp
+ 226.67dp
+ 229.33dp
+ 232.00dp
+ 234.67dp
+ 237.33dp
+ 240.00dp
+ 242.67dp
+ 245.33dp
+ 248.00dp
+ 250.67dp
+ 253.33dp
+ 256.00dp
+ 258.67dp
+ 261.33dp
+ 264.00dp
+ 266.67dp
+ 269.33dp
+ 272.00dp
+ 274.67dp
+ 277.33dp
+ 280.00dp
+ 282.67dp
+ 285.33dp
+ 288.00dp
+ 290.67dp
+ 293.33dp
+ 296.00dp
+ 298.67dp
+ 301.33dp
+ 304.00dp
+ 306.67dp
+ 309.33dp
+ 312.00dp
+ 314.67dp
+ 317.33dp
+ 320.00dp
+ 322.67dp
+ 325.33dp
+ 328.00dp
+ 330.67dp
+ 333.33dp
+ 336.00dp
+ 338.67dp
+ 341.33dp
+ 344.00dp
+ 346.67dp
+ 349.33dp
+ 352.00dp
+ 354.67dp
+ 357.33dp
+ 360.00dp
+ 362.67dp
+ 365.33dp
+ 368.00dp
+ 370.67dp
+ 373.33dp
+ 376.00dp
+ 378.67dp
+ 381.33dp
+ 384.00dp
+ 386.67dp
+ 389.33dp
+ 392.00dp
+ 394.67dp
+ 397.33dp
+ 400.00dp
+ 402.67dp
+ 405.33dp
+ 408.00dp
+ 410.67dp
+ 413.33dp
+ 416.00dp
+ 418.67dp
+ 421.33dp
+ 424.00dp
+ 426.67dp
+ 429.33dp
+ 432.00dp
+ 434.67dp
+ 437.33dp
+ 440.00dp
+ 442.67dp
+ 445.33dp
+ 448.00dp
+ 450.67dp
+ 453.33dp
+ 456.00dp
+ 458.67dp
+ 461.33dp
+ 464.00dp
+ 466.67dp
+ 469.33dp
+ 472.00dp
+ 474.67dp
+ 477.33dp
+ 480.00dp
+ 482.67dp
+ 485.33dp
+ 488.00dp
+ 490.67dp
+ 493.33dp
+ 496.00dp
+ 498.67dp
+ 501.33dp
+ 504.00dp
+ 506.67dp
+ 509.33dp
+ 512.00dp
+ 514.67dp
+ 517.33dp
+ 520.00dp
+ 522.67dp
+ 525.33dp
+ 528.00dp
+ 530.67dp
+ 533.33dp
+ 536.00dp
+ 538.67dp
+ 541.33dp
+ 544.00dp
+ 546.67dp
+ 549.33dp
+ 552.00dp
+ 554.67dp
+ 557.33dp
+ 560.00dp
+ 562.67dp
+ 565.33dp
+ 568.00dp
+ 570.67dp
+ 573.33dp
+ 576.00dp
+ 578.67dp
+ 581.33dp
+ 584.00dp
+ 586.67dp
+ 589.33dp
+ 592.00dp
+ 594.67dp
+ 597.33dp
+ 600.00dp
+ 602.67dp
+ 605.33dp
+ 608.00dp
+ 610.67dp
+ 613.33dp
+ 616.00dp
+ 618.67dp
+ 621.33dp
+ 624.00dp
+ 626.67dp
+ 629.33dp
+ 632.00dp
+ 634.67dp
+ 637.33dp
+ 640.00dp
+ 642.67dp
+ 645.33dp
+ 648.00dp
+ 650.67dp
+ 653.33dp
+ 656.00dp
+ 658.67dp
+ 661.33dp
+ 664.00dp
+ 666.67dp
+ 669.33dp
+ 672.00dp
+ 674.67dp
+ 677.33dp
+ 680.00dp
+ 682.67dp
+ 685.33dp
+ 688.00dp
+ 690.67dp
+ 693.33dp
+ 696.00dp
+ 698.67dp
+ 701.33dp
+ 704.00dp
+ 706.67dp
+ 709.33dp
+ 712.00dp
+ 714.67dp
+ 717.33dp
+ 720.00dp
+ 722.67dp
+ 725.33dp
+ 728.00dp
+ 730.67dp
+ 733.33dp
+ 736.00dp
+ 738.67dp
+ 741.33dp
+ 744.00dp
+ 746.67dp
+ 749.33dp
+ 752.00dp
+ 754.67dp
+ 757.33dp
+ 760.00dp
+ 762.67dp
+ 765.33dp
+ 768.00dp
+ 770.67dp
+ 773.33dp
+ 776.00dp
+ 778.67dp
+ 781.33dp
+ 784.00dp
+ 786.67dp
+ 789.33dp
+ 792.00dp
+ 794.67dp
+ 797.33dp
+ 800.00dp
+ 802.67dp
+ 805.33dp
+ 808.00dp
+ 810.67dp
+ 813.33dp
+ 816.00dp
+ 818.67dp
+ 821.33dp
+ 824.00dp
+ 826.67dp
+ 829.33dp
+ 832.00dp
+ 834.67dp
+ 837.33dp
+ 840.00dp
+ 842.67dp
+ 845.33dp
+ 848.00dp
+ 850.67dp
+ 853.33dp
+ 856.00dp
+ 858.67dp
+ 861.33dp
+ 864.00dp
+ 866.67dp
+ 869.33dp
+ 872.00dp
+ 874.67dp
+ 877.33dp
+ 880.00dp
+ 882.67dp
+ 885.33dp
+ 888.00dp
+ 890.67dp
+ 893.33dp
+ 896.00dp
+ 898.67dp
+ 901.33dp
+ 904.00dp
+ 906.67dp
+ 909.33dp
+ 912.00dp
+ 914.67dp
+ 917.33dp
+ 920.00dp
+ 922.67dp
+ 925.33dp
+ 928.00dp
+ 930.67dp
+ 933.33dp
+ 936.00dp
+ 938.67dp
+ 941.33dp
+ 944.00dp
+ 946.67dp
+ 949.33dp
+ 952.00dp
+ 954.67dp
+ 957.33dp
+ 960.00dp
+ 962.67dp
+ 965.33dp
+ 968.00dp
+ 970.67dp
+ 973.33dp
+ 976.00dp
+ 978.67dp
+ 981.33dp
+ 984.00dp
+ 986.67dp
+ 989.33dp
+ 992.00dp
+ 994.67dp
+ 997.33dp
+ 1000.00dp
+ 1002.67dp
+ 1005.33dp
+ 1008.00dp
+ 1010.67dp
+ 1013.33dp
+ 1016.00dp
+ 1018.67dp
+ 1021.33dp
+ 1024.00dp
+ 1026.67dp
+ 1029.33dp
+ 1032.00dp
+ 1034.67dp
+ 1037.33dp
+ 1040.00dp
+ 1042.67dp
+ 1045.33dp
+ 1048.00dp
+ 1050.67dp
+ 1053.33dp
+ 1056.00dp
+ 1058.67dp
+ 1061.33dp
+ 1064.00dp
+ 1066.67dp
+
+ -2.67dp
+ -5.33dp
+ -8.00dp
+ -10.67dp
+ -13.33dp
+ -16.00dp
+ -18.67dp
+ -21.33dp
+ -24.00dp
+ -26.67dp
+ -29.33dp
+ -32.00dp
+ -34.67dp
+ -37.33dp
+ -40.00dp
+ -42.67dp
+ -45.33dp
+ -48.00dp
+ -50.67dp
+ -53.33dp
+ -56.00dp
+ -58.67dp
+ -61.33dp
+ -64.00dp
+ -66.67dp
+ -69.33dp
+ -72.00dp
+ -74.67dp
+ -77.33dp
+ -80.00dp
+ -82.67dp
+ -85.33dp
+ -88.00dp
+ -90.67dp
+ -93.33dp
+ -96.00dp
+ -98.67dp
+ -101.33dp
+ -104.00dp
+ -106.67dp
+ -109.33dp
+ -112.00dp
+ -114.67dp
+ -117.33dp
+ -120.00dp
+ -122.67dp
+ -125.33dp
+ -128.00dp
+ -130.67dp
+ -133.33dp
+ -136.00dp
+ -138.67dp
+ -141.33dp
+ -144.00dp
+ -146.67dp
+ -149.33dp
+ -152.00dp
+ -154.67dp
+ -157.33dp
+ -160.00dp
+
+ 2.67sp
+ 5.33sp
+ 8.00sp
+ 10.67sp
+ 13.33sp
+ 16.00sp
+ 18.67sp
+ 21.33sp
+ 24.00sp
+ 26.67sp
+ 29.33sp
+ 32.00sp
+ 34.67sp
+ 37.33sp
+ 40.00sp
+ 42.67sp
+ 45.33sp
+ 48.00sp
+ 50.67sp
+ 53.33sp
+ 56.00sp
+ 58.67sp
+ 61.33sp
+ 64.00sp
+ 66.67sp
+ 69.33sp
+ 72.00sp
+ 74.67sp
+ 77.33sp
+ 80.00sp
+ 82.67sp
+ 85.33sp
+ 88.00sp
+ 90.67sp
+ 93.33sp
+ 96.00sp
+ 98.67sp
+ 101.33sp
+ 104.00sp
+ 106.67sp
+ 109.33sp
+ 112.00sp
+ 114.67sp
+ 117.33sp
+ 120.00sp
+ 122.67sp
+ 125.33sp
+ 128.00sp
+ 130.67sp
+ 133.33sp
+ 136.00sp
+ 138.67sp
+ 141.33sp
+ 144.00sp
+ 146.67sp
+ 149.33sp
+ 152.00sp
+ 154.67sp
+ 157.33sp
+ 160.00sp
+
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index f8c6127..8eb1cb2 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -1,10 +1,14 @@
+ #FF000000
+ #FFFFFFFF
#FFBB86FC
#FF6200EE
#FF3700B3
#FF03DAC5
#FF018786
- #FF000000
- #FFFFFFFF
+ #E64A19
+ #D50000
+ #5C6BC0
+ #F5F5F5
\ No newline at end of file
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
new file mode 100644
index 0000000..b929783
--- /dev/null
+++ b/app/src/main/res/values/dimens.xml
@@ -0,0 +1,526 @@
+
+
+ 0.00dp
+ 1.00dp
+ 2.00dp
+ 3.00dp
+ 4.00dp
+ 5.00dp
+ 6.00dp
+ 7.00dp
+ 8.00dp
+ 9.00dp
+ 10.00dp
+ 11.00dp
+ 12.00dp
+ 13.00dp
+ 14.00dp
+ 15.00dp
+ 16.00dp
+ 17.00dp
+ 18.00dp
+ 19.00dp
+ 20.00dp
+ 21.00dp
+ 22.00dp
+ 23.00dp
+ 24.00dp
+ 25.00dp
+ 26.00dp
+ 27.00dp
+ 28.00dp
+ 29.00dp
+ 30.00dp
+ 31.00dp
+ 32.00dp
+ 33.00dp
+ 34.00dp
+ 35.00dp
+ 36.00dp
+ 37.00dp
+ 38.00dp
+ 39.00dp
+ 40.00dp
+ 41.00dp
+ 42.00dp
+ 43.00dp
+ 44.00dp
+ 45.00dp
+ 46.00dp
+ 47.00dp
+ 48.00dp
+ 49.00dp
+ 50.00dp
+ 51.00dp
+ 52.00dp
+ 53.00dp
+ 54.00dp
+ 55.00dp
+ 56.00dp
+ 57.00dp
+ 58.00dp
+ 59.00dp
+ 60.00dp
+ 61.00dp
+ 62.00dp
+ 63.00dp
+ 64.00dp
+ 65.00dp
+ 66.00dp
+ 67.00dp
+ 68.00dp
+ 69.00dp
+ 70.00dp
+ 71.00dp
+ 72.00dp
+ 73.00dp
+ 74.00dp
+ 75.00dp
+ 76.00dp
+ 77.00dp
+ 78.00dp
+ 79.00dp
+ 80.00dp
+ 81.00dp
+ 82.00dp
+ 83.00dp
+ 84.00dp
+ 85.00dp
+ 86.00dp
+ 87.00dp
+ 88.00dp
+ 89.00dp
+ 90.00dp
+ 91.00dp
+ 92.00dp
+ 93.00dp
+ 94.00dp
+ 95.00dp
+ 96.00dp
+ 97.00dp
+ 98.00dp
+ 99.00dp
+ 100.00dp
+ 101.00dp
+ 102.00dp
+ 103.00dp
+ 104.00dp
+ 105.00dp
+ 106.00dp
+ 107.00dp
+ 108.00dp
+ 109.00dp
+ 110.00dp
+ 111.00dp
+ 112.00dp
+ 113.00dp
+ 114.00dp
+ 115.00dp
+ 116.00dp
+ 117.00dp
+ 118.00dp
+ 119.00dp
+ 120.00dp
+ 121.00dp
+ 122.00dp
+ 123.00dp
+ 124.00dp
+ 125.00dp
+ 126.00dp
+ 127.00dp
+ 128.00dp
+ 129.00dp
+ 130.00dp
+ 131.00dp
+ 132.00dp
+ 133.00dp
+ 134.00dp
+ 135.00dp
+ 136.00dp
+ 137.00dp
+ 138.00dp
+ 139.00dp
+ 140.00dp
+ 141.00dp
+ 142.00dp
+ 143.00dp
+ 144.00dp
+ 145.00dp
+ 146.00dp
+ 147.00dp
+ 148.00dp
+ 149.00dp
+ 150.00dp
+ 151.00dp
+ 152.00dp
+ 153.00dp
+ 154.00dp
+ 155.00dp
+ 156.00dp
+ 157.00dp
+ 158.00dp
+ 159.00dp
+ 160.00dp
+ 161.00dp
+ 162.00dp
+ 163.00dp
+ 164.00dp
+ 165.00dp
+ 166.00dp
+ 167.00dp
+ 168.00dp
+ 169.00dp
+ 170.00dp
+ 171.00dp
+ 172.00dp
+ 173.00dp
+ 174.00dp
+ 175.00dp
+ 176.00dp
+ 177.00dp
+ 178.00dp
+ 179.00dp
+ 180.00dp
+ 181.00dp
+ 182.00dp
+ 183.00dp
+ 184.00dp
+ 185.00dp
+ 186.00dp
+ 187.00dp
+ 188.00dp
+ 189.00dp
+ 190.00dp
+ 191.00dp
+ 192.00dp
+ 193.00dp
+ 194.00dp
+ 195.00dp
+ 196.00dp
+ 197.00dp
+ 198.00dp
+ 199.00dp
+ 200.00dp
+ 201.00dp
+ 202.00dp
+ 203.00dp
+ 204.00dp
+ 205.00dp
+ 206.00dp
+ 207.00dp
+ 208.00dp
+ 209.00dp
+ 210.00dp
+ 211.00dp
+ 212.00dp
+ 213.00dp
+ 214.00dp
+ 215.00dp
+ 216.00dp
+ 217.00dp
+ 218.00dp
+ 219.00dp
+ 220.00dp
+ 221.00dp
+ 222.00dp
+ 223.00dp
+ 224.00dp
+ 225.00dp
+ 226.00dp
+ 227.00dp
+ 228.00dp
+ 229.00dp
+ 230.00dp
+ 231.00dp
+ 232.00dp
+ 233.00dp
+ 234.00dp
+ 235.00dp
+ 236.00dp
+ 237.00dp
+ 238.00dp
+ 239.00dp
+ 240.00dp
+ 241.00dp
+ 242.00dp
+ 243.00dp
+ 244.00dp
+ 245.00dp
+ 246.00dp
+ 247.00dp
+ 248.00dp
+ 249.00dp
+ 250.00dp
+ 251.00dp
+ 252.00dp
+ 253.00dp
+ 254.00dp
+ 255.00dp
+ 256.00dp
+ 257.00dp
+ 258.00dp
+ 259.00dp
+ 260.00dp
+ 261.00dp
+ 262.00dp
+ 263.00dp
+ 264.00dp
+ 265.00dp
+ 266.00dp
+ 267.00dp
+ 268.00dp
+ 269.00dp
+ 270.00dp
+ 271.00dp
+ 272.00dp
+ 273.00dp
+ 274.00dp
+ 275.00dp
+ 276.00dp
+ 277.00dp
+ 278.00dp
+ 279.00dp
+ 280.00dp
+ 281.00dp
+ 282.00dp
+ 283.00dp
+ 284.00dp
+ 285.00dp
+ 286.00dp
+ 287.00dp
+ 288.00dp
+ 289.00dp
+ 290.00dp
+ 291.00dp
+ 292.00dp
+ 293.00dp
+ 294.00dp
+ 295.00dp
+ 296.00dp
+ 297.00dp
+ 298.00dp
+ 299.00dp
+ 300.00dp
+ 301.00dp
+ 302.00dp
+ 303.00dp
+ 304.00dp
+ 305.00dp
+ 306.00dp
+ 307.00dp
+ 308.00dp
+ 309.00dp
+ 310.00dp
+ 311.00dp
+ 312.00dp
+ 313.00dp
+ 314.00dp
+ 315.00dp
+ 316.00dp
+ 317.00dp
+ 318.00dp
+ 319.00dp
+ 320.00dp
+ 321.00dp
+ 322.00dp
+ 323.00dp
+ 324.00dp
+ 325.00dp
+ 326.00dp
+ 327.00dp
+ 328.00dp
+ 329.00dp
+ 330.00dp
+ 331.00dp
+ 332.00dp
+ 333.00dp
+ 334.00dp
+ 335.00dp
+ 336.00dp
+ 337.00dp
+ 338.00dp
+ 339.00dp
+ 340.00dp
+ 341.00dp
+ 342.00dp
+ 343.00dp
+ 344.00dp
+ 345.00dp
+ 346.00dp
+ 347.00dp
+ 348.00dp
+ 349.00dp
+ 350.00dp
+ 351.00dp
+ 352.00dp
+ 353.00dp
+ 354.00dp
+ 355.00dp
+ 356.00dp
+ 357.00dp
+ 358.00dp
+ 359.00dp
+ 360.00dp
+ 361.00dp
+ 362.00dp
+ 363.00dp
+ 364.00dp
+ 365.00dp
+ 366.00dp
+ 367.00dp
+ 368.00dp
+ 369.00dp
+ 370.00dp
+ 371.00dp
+ 372.00dp
+ 373.00dp
+ 374.00dp
+ 375.00dp
+ 376.00dp
+ 377.00dp
+ 378.00dp
+ 379.00dp
+ 380.00dp
+ 381.00dp
+ 382.00dp
+ 383.00dp
+ 384.00dp
+ 385.00dp
+ 386.00dp
+ 387.00dp
+ 388.00dp
+ 389.00dp
+ 390.00dp
+ 391.00dp
+ 392.00dp
+ 393.00dp
+ 394.00dp
+ 395.00dp
+ 396.00dp
+ 397.00dp
+ 398.00dp
+ 399.00dp
+ 400.00dp
+
+ -1.00dp
+ -2.00dp
+ -3.00dp
+ -4.00dp
+ -5.00dp
+ -6.00dp
+ -7.00dp
+ -8.00dp
+ -9.00dp
+ -10.00dp
+ -11.00dp
+ -12.00dp
+ -13.00dp
+ -14.00dp
+ -15.00dp
+ -16.00dp
+ -17.00dp
+ -18.00dp
+ -19.00dp
+ -20.00dp
+ -21.00dp
+ -22.00dp
+ -23.00dp
+ -24.00dp
+ -25.00dp
+ -26.00dp
+ -27.00dp
+ -28.00dp
+ -29.00dp
+ -30.00dp
+ -31.00dp
+ -32.00dp
+ -33.00dp
+ -34.00dp
+ -35.00dp
+ -36.00dp
+ -37.00dp
+ -38.00dp
+ -39.00dp
+ -40.00dp
+ -41.00dp
+ -42.00dp
+ -43.00dp
+ -44.00dp
+ -45.00dp
+ -46.00dp
+ -47.00dp
+ -48.00dp
+ -49.00dp
+ -50.00dp
+ -51.00dp
+ -52.00dp
+ -53.00dp
+ -54.00dp
+ -55.00dp
+ -56.00dp
+ -57.00dp
+ -58.00dp
+ -59.00dp
+ -60.00dp
+
+ 1.00sp
+ 2.00sp
+ 3.00sp
+ 4.00sp
+ 5.00sp
+ 6.00sp
+ 7.00sp
+ 8.00sp
+ 9.00sp
+ 10.00sp
+ 11.00sp
+ 12.00sp
+ 13.00sp
+ 14.00sp
+ 15.00sp
+ 16.00sp
+ 17.00sp
+ 18.00sp
+ 19.00sp
+ 20.00sp
+ 21.00sp
+ 22.00sp
+ 23.00sp
+ 24.00sp
+ 25.00sp
+ 26.00sp
+ 27.00sp
+ 28.00sp
+ 29.00sp
+ 30.00sp
+ 31.00sp
+ 32.00sp
+ 33.00sp
+ 34.00sp
+ 35.00sp
+ 36.00sp
+ 37.00sp
+ 38.00sp
+ 39.00sp
+ 40.00sp
+ 41.00sp
+ 42.00sp
+ 43.00sp
+ 44.00sp
+ 45.00sp
+ 46.00sp
+ 47.00sp
+ 48.00sp
+ 49.00sp
+ 50.00sp
+ 51.00sp
+ 52.00sp
+ 53.00sp
+ 54.00sp
+ 55.00sp
+ 56.00sp
+ 57.00sp
+ 58.00sp
+ 59.00sp
+ 60.00sp
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 005f230..be81403 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,3 +1,4 @@
-
- Structure_Android
+
+ Ratting:
+ Total reviews
\ No newline at end of file
diff --git a/app/src/test/java/com/sun/structure_android/ExampleUnitTest.kt b/app/src/test/java/com/sun/mvp/ExampleUnitTest.kt
similarity index 89%
rename from app/src/test/java/com/sun/structure_android/ExampleUnitTest.kt
rename to app/src/test/java/com/sun/mvp/ExampleUnitTest.kt
index 3522634..921fcba 100644
--- a/app/src/test/java/com/sun/structure_android/ExampleUnitTest.kt
+++ b/app/src/test/java/com/sun/mvp/ExampleUnitTest.kt
@@ -1,8 +1,7 @@
-package com.sun.structure_android
-
-import org.junit.Test
+package com.sun.mvp
import org.junit.Assert.*
+import org.junit.Test
/**
* Example local unit test, which will execute on the development machine (host).
@@ -14,4 +13,4 @@ class ExampleUnitTest {
fun addition_isCorrect() {
assertEquals(4, 2 + 2)
}
-}
\ No newline at end of file
+}
diff --git a/build.gradle b/build.gradle
deleted file mode 100644
index 9988a75..0000000
--- a/build.gradle
+++ /dev/null
@@ -1,18 +0,0 @@
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
-buildscript {
- repositories {
- google()
- mavenCentral()
- }
- dependencies {
- classpath "com.android.tools.build:gradle:7.0.4"
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10"
-
- // NOTE: Do not place your application dependencies here; they belong
- // in the individual module build.gradle files
- }
-}
-
-task clean(type: Delete) {
- delete rootProject.buildDir
-}
\ No newline at end of file
diff --git a/build.gradle.kts b/build.gradle.kts
new file mode 100644
index 0000000..1f8f99d
--- /dev/null
+++ b/build.gradle.kts
@@ -0,0 +1,27 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+buildscript {
+ apply(from = "$rootDir/team-props/git-hooks.gradle.kts")
+
+ repositories {
+ google()
+ mavenCentral()
+ }
+ dependencies {
+ classpath (ClassPath.gradle_build_tools)
+ classpath (ClassPath.kotlin_gradle_plugin)
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.build.gradle.kts files
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ }
+}
+
+tasks.register("clean", Delete::class) {
+ delete(rootProject.buildDir)
+}
diff --git a/buildSrc/.gitignore b/buildSrc/.gitignore
new file mode 100644
index 0000000..91ea741
--- /dev/null
+++ b/buildSrc/.gitignore
@@ -0,0 +1,2 @@
+build
+.gradle
diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts
new file mode 100644
index 0000000..181a987
--- /dev/null
+++ b/buildSrc/build.gradle.kts
@@ -0,0 +1,9 @@
+import org.gradle.kotlin.dsl.`kotlin-dsl`
+
+plugins {
+ `kotlin-dsl`
+}
+
+repositories {
+ mavenCentral()
+}
diff --git a/buildSrc/src/main/kotlin/Config.kt b/buildSrc/src/main/kotlin/Config.kt
new file mode 100644
index 0000000..df76c29
--- /dev/null
+++ b/buildSrc/src/main/kotlin/Config.kt
@@ -0,0 +1,82 @@
+
+object Versions {
+
+ const val gradlePlugin = "7.4.2"
+ const val kotlin = "1.7.20"
+
+ const val coreKtx = "1.9.0"
+ const val appCompat = "1.6.1"
+ const val material = "1.8.0"
+ const val constraintLayout = "2.1.4"
+ const val coreSplashScreen = "1.0.0"
+
+ const val lifecycle = "2.5"
+ const val navigation = "2.5.3"
+ const val glide = "4.11.0"
+ const val koin = "3.4.0"
+
+ const val jacoco = "0.8.9"
+ const val jUnit = "4.13.2"
+ const val mockk = "1.13.2"
+
+ const val ktlint = "0.47.0"
+ const val detekt = "1.22.0"
+}
+
+object AppConfigs {
+ const val application_id = "com.sun.structure_android"
+ const val compile_sdk_version = 33
+ const val min_sdk_version = 23
+ const val target_sdk_version = 33 // improve later
+ const val version_code = 1
+ const val version_name = "1.0"
+ const val version_code_release = 1
+ const val version_name_release = "1.0"
+}
+
+object ClassPath {
+ const val gradle_build_tools = "com.android.tools.build:gradle:${Versions.gradlePlugin}"
+ const val kotlin_gradle_plugin = "org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.kotlin}"
+}
+
+object Plugins {
+ const val android_application = "com.android.application"
+ const val kotlin_android = "android"
+ const val kotlinApt = "kapt"
+ const val detekt = "io.gitlab.arturbosch.detekt"
+ const val kotlinParcelize = "kotlin-parcelize"
+}
+
+object Deps {
+ const val core_ktx = "androidx.core:core-ktx:${Versions.coreKtx}"
+ const val appcompat = "androidx.appcompat:appcompat:${Versions.appCompat}"
+ const val material = "com.google.android.material:material:${Versions.material}"
+ const val constraint_layout = "androidx.constraintlayout:constraintlayout:${Versions.constraintLayout}"
+
+ // Splash screen
+ const val splash_screen = "androidx.core:core-splashscreen:${Versions.coreSplashScreen}"
+
+ // lifecycle
+ const val lifecycle_livedata_ktx = "androidx.lifecycle:lifecycle-livedata-ktx:${Versions.lifecycle}"
+ const val lifecycle_viewmodel_ktx = "androidx.lifecycle:lifecycle-viewmodel-ktx:${Versions.lifecycle}"
+
+ // navigation
+ const val navigation_fragment_ktx = "androidx.navigation:navigation-fragment-ktx:${Versions.navigation}"
+ const val navigation_ui_ktx = "androidx.navigation:navigation-ui-ktx:${Versions.navigation}"
+
+ // Glide
+ const val glide_runtime = "com.github.bumptech.glide:glide:${Versions.glide}"
+ const val glide_compiler = "com.github.bumptech.glide:compiler:${Versions.glide}"
+
+ // koin
+ const val koin_core = "io.insert-koin:koin-core:${Versions.koin}"
+ const val koin_android = "io.insert-koin:koin-android:${Versions.koin}"
+ const val koin_test = "io.insert-koin:koin-test:${Versions.koin}"
+
+ // Testing
+ const val junit = "junit:junit:${Versions.jUnit}"
+ const val mockk = "io.mockk:mockk:${Versions.mockk}"
+
+ // Ktlint
+ const val ktlint = "com.pinterest:ktlint:${Versions.ktlint}"
+}
diff --git a/config/detekt/detekt.yml b/config/detekt/detekt.yml
new file mode 100644
index 0000000..621fa68
--- /dev/null
+++ b/config/detekt/detekt.yml
@@ -0,0 +1,713 @@
+build:
+ maxIssues: 0
+ excludeCorrectable: false
+ weights:
+ # complexity: 2
+ # LongParameterList: 1
+ # style: 1
+ # comments: 1
+
+config:
+ validation: true
+ warningsAsErrors: false
+ checkExhaustiveness: false
+ # when writing own rules with new properties, exclude the property path e.g.: 'my_rule_set,.*>.*>[my_property]'
+ excludes: ''
+
+processors:
+ active: true
+ exclude:
+ - 'DetektProgressListener'
+ # - 'KtFileCountProcessor'
+ # - 'PackageCountProcessor'
+ # - 'ClassCountProcessor'
+ # - 'FunctionCountProcessor'
+ # - 'PropertyCountProcessor'
+ # - 'ProjectComplexityProcessor'
+ # - 'ProjectCognitiveComplexityProcessor'
+ # - 'ProjectLLOCProcessor'
+ # - 'ProjectCLOCProcessor'
+ # - 'ProjectLOCProcessor'
+ # - 'ProjectSLOCProcessor'
+ # - 'LicenseHeaderLoaderExtension'
+
+console-reports:
+ active: true
+ exclude:
+ - 'ProjectStatisticsReport'
+ - 'ComplexityReport'
+ - 'NotificationReport'
+ - 'FindingsReport'
+ - 'FileBasedFindingsReport'
+ # - 'LiteFindingsReport'
+
+output-reports:
+ active: true
+ exclude:
+ # - 'TxtOutputReport'
+ # - 'XmlOutputReport'
+ # - 'HtmlOutputReport'
+ # - 'MdOutputReport'
+ # - 'SarifOutputReport'
+
+comments:
+ active: true
+ AbsentOrWrongFileLicense:
+ active: false
+ licenseTemplateFile: 'license.template'
+ licenseTemplateIsRegex: false
+ CommentOverPrivateFunction:
+ active: false
+ CommentOverPrivateProperty:
+ active: false
+ DeprecatedBlockTag:
+ active: false
+ EndOfSentenceFormat:
+ active: false
+ endOfSentenceFormat: '([.?!][ \t\n\r\f<])|([.?!:]$)'
+ KDocReferencesNonPublicProperty:
+ active: false
+ excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
+ OutdatedDocumentation:
+ active: false
+ matchTypeParameters: true
+ matchDeclarationsOrder: true
+ allowParamOnConstructorProperties: false
+ UndocumentedPublicClass:
+ active: false
+ excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
+ searchInNestedClass: true
+ searchInInnerClass: true
+ searchInInnerObject: true
+ searchInInnerInterface: true
+ searchInProtectedClass: false
+ UndocumentedPublicFunction:
+ active: false
+ excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
+ searchProtectedFunction: false
+ UndocumentedPublicProperty:
+ active: false
+ excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
+ searchProtectedProperty: false
+
+complexity:
+ active: true
+ CognitiveComplexMethod:
+ active: false
+ threshold: 15
+ ComplexCondition:
+ active: true
+ threshold: 4
+ ComplexInterface:
+ active: false
+ threshold: 10
+ includeStaticDeclarations: false
+ includePrivateDeclarations: false
+ ignoreOverloaded: false
+ CyclomaticComplexMethod:
+ active: true
+ threshold: 15
+ ignoreSingleWhenExpression: false
+ ignoreSimpleWhenEntries: false
+ ignoreNestingFunctions: false
+ nestingFunctions:
+ - 'also'
+ - 'apply'
+ - 'forEach'
+ - 'isNotNull'
+ - 'ifNull'
+ - 'let'
+ - 'run'
+ - 'use'
+ - 'with'
+ LabeledExpression:
+ active: false
+ ignoredLabels: []
+ LargeClass:
+ active: true
+ threshold: 600
+ LongMethod:
+ active: true
+ threshold: 60
+ LongParameterList:
+ active: true
+ functionThreshold: 6
+ constructorThreshold: 7
+ ignoreDefaultParameters: false
+ ignoreDataClasses: true
+ ignoreAnnotatedParameter: []
+ MethodOverloading:
+ active: false
+ threshold: 6
+ NamedArguments:
+ active: false
+ threshold: 3
+ ignoreArgumentsMatchingNames: false
+ NestedBlockDepth:
+ active: true
+ threshold: 4
+ NestedScopeFunctions:
+ active: false
+ threshold: 1
+ functions:
+ - 'kotlin.apply'
+ - 'kotlin.run'
+ - 'kotlin.with'
+ - 'kotlin.let'
+ - 'kotlin.also'
+ ReplaceSafeCallChainWithRun:
+ active: false
+ StringLiteralDuplication:
+ active: false
+ excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
+ threshold: 3
+ ignoreAnnotation: true
+ excludeStringsWithLessThan5Characters: true
+ ignoreStringsRegex: '$^'
+ TooManyFunctions:
+ active: true
+ excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
+ thresholdInFiles: 11
+ thresholdInClasses: 11
+ thresholdInInterfaces: 11
+ thresholdInObjects: 11
+ thresholdInEnums: 11
+ ignoreDeprecated: false
+ ignorePrivate: false
+ ignoreOverridden: false
+
+coroutines:
+ active: true
+ GlobalCoroutineUsage:
+ active: false
+ InjectDispatcher:
+ active: true
+ dispatcherNames:
+ - 'IO'
+ - 'Default'
+ - 'Unconfined'
+ RedundantSuspendModifier:
+ active: true
+ SleepInsteadOfDelay:
+ active: true
+ SuspendFunWithCoroutineScopeReceiver:
+ active: false
+ SuspendFunWithFlowReturnType:
+ active: true
+
+empty-blocks:
+ active: true
+ EmptyCatchBlock:
+ active: true
+ allowedExceptionNameRegex: '_|(ignore|expected).*'
+ EmptyClassBlock:
+ active: true
+ EmptyDefaultConstructor:
+ active: true
+ EmptyDoWhileBlock:
+ active: true
+ EmptyElseBlock:
+ active: true
+ EmptyFinallyBlock:
+ active: true
+ EmptyForBlock:
+ active: true
+ EmptyFunctionBlock:
+ active: true
+ ignoreOverridden: false
+ EmptyIfBlock:
+ active: true
+ EmptyInitBlock:
+ active: true
+ EmptyKtFile:
+ active: true
+ EmptySecondaryConstructor:
+ active: true
+ EmptyTryBlock:
+ active: true
+ EmptyWhenBlock:
+ active: true
+ EmptyWhileBlock:
+ active: true
+
+exceptions:
+ active: true
+ ExceptionRaisedInUnexpectedLocation:
+ active: true
+ methodNames:
+ - 'equals'
+ - 'finalize'
+ - 'hashCode'
+ - 'toString'
+ InstanceOfCheckForException:
+ active: true
+ excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
+ NotImplementedDeclaration:
+ active: false
+ ObjectExtendsThrowable:
+ active: false
+ PrintStackTrace:
+ active: true
+ RethrowCaughtException:
+ active: true
+ ReturnFromFinally:
+ active: true
+ ignoreLabeled: false
+ SwallowedException:
+ active: true
+ ignoredExceptionTypes:
+ - 'InterruptedException'
+ - 'MalformedURLException'
+ - 'NumberFormatException'
+ - 'ParseException'
+ allowedExceptionNameRegex: '_|(ignore|expected).*'
+ ThrowingExceptionFromFinally:
+ active: true
+ ThrowingExceptionInMain:
+ active: false
+ ThrowingExceptionsWithoutMessageOrCause:
+ active: true
+ excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
+ exceptions:
+ - 'ArrayIndexOutOfBoundsException'
+ - 'Exception'
+ - 'IllegalArgumentException'
+ - 'IllegalMonitorStateException'
+ - 'IllegalStateException'
+ - 'IndexOutOfBoundsException'
+ - 'NullPointerException'
+ - 'RuntimeException'
+ - 'Throwable'
+ ThrowingNewInstanceOfSameException:
+ active: true
+ TooGenericExceptionCaught:
+ active: true
+ excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
+ exceptionNames:
+ - 'ArrayIndexOutOfBoundsException'
+ - 'Error'
+ - 'Exception'
+ - 'IllegalMonitorStateException'
+ - 'IndexOutOfBoundsException'
+ - 'NullPointerException'
+ - 'RuntimeException'
+ - 'Throwable'
+ allowedExceptionNameRegex: '_|(ignore|expected).*'
+ TooGenericExceptionThrown:
+ active: true
+ exceptionNames:
+ - 'Error'
+ - 'Exception'
+ - 'RuntimeException'
+ - 'Throwable'
+
+naming:
+ active: true
+ BooleanPropertyNaming:
+ active: false
+ allowedPattern: '^(is|has|are)'
+ ClassNaming:
+ active: true
+ classPattern: '[A-Z][a-zA-Z0-9]*'
+ ConstructorParameterNaming:
+ active: true
+ parameterPattern: '[a-z][A-Za-z0-9]*'
+ privateParameterPattern: '[a-z][A-Za-z0-9]*'
+ excludeClassPattern: '$^'
+ EnumNaming:
+ active: true
+ enumEntryPattern: '[A-Z][_a-zA-Z0-9]*'
+ ForbiddenClassName:
+ active: false
+ forbiddenName: []
+ FunctionMaxLength:
+ active: false
+ maximumFunctionNameLength: 30
+ FunctionMinLength:
+ active: false
+ minimumFunctionNameLength: 3
+ FunctionNaming:
+ active: true
+ excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
+ functionPattern: '[a-z][a-zA-Z0-9]*'
+ excludeClassPattern: '$^'
+ FunctionParameterNaming:
+ active: true
+ parameterPattern: '[a-z][A-Za-z0-9]*'
+ excludeClassPattern: '$^'
+ InvalidPackageDeclaration:
+ active: true
+ rootPackage: ''
+ requireRootInDeclaration: false
+ LambdaParameterNaming:
+ active: false
+ parameterPattern: '[a-z][A-Za-z0-9]*|_'
+ MatchingDeclarationName:
+ active: true
+ mustBeFirst: true
+ MemberNameEqualsClassName:
+ active: true
+ ignoreOverridden: true
+ NoNameShadowing:
+ active: true
+ NonBooleanPropertyPrefixedWithIs:
+ active: false
+ ObjectPropertyNaming:
+ active: true
+ constantPattern: '[A-Za-z][_A-Za-z0-9]*'
+ propertyPattern: '[A-Za-z][_A-Za-z0-9]*'
+ privatePropertyPattern: '(_)?[A-Za-z][_A-Za-z0-9]*'
+ PackageNaming:
+ active: true
+ packagePattern: '[a-z]+(\.[a-z][A-Za-z0-9]*)*'
+ TopLevelPropertyNaming:
+ active: true
+ constantPattern: '[A-Z][_A-Z0-9]*'
+ propertyPattern: '[A-Za-z][_A-Za-z0-9]*'
+ privatePropertyPattern: '_?[A-Za-z][_A-Za-z0-9]*'
+ VariableMaxLength:
+ active: false
+ maximumVariableNameLength: 64
+ VariableMinLength:
+ active: false
+ minimumVariableNameLength: 1
+ VariableNaming:
+ active: true
+ variablePattern: '[a-z][A-Za-z0-9]*'
+ privateVariablePattern: '(_)?[a-z][A-Za-z0-9]*'
+ excludeClassPattern: '$^'
+
+performance:
+ active: true
+ ArrayPrimitive:
+ active: true
+ CouldBeSequence:
+ active: false
+ threshold: 3
+ ForEachOnRange:
+ active: true
+ excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
+ SpreadOperator:
+ active: true
+ excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
+ UnnecessaryPartOfBinaryExpression:
+ active: false
+ UnnecessaryTemporaryInstantiation:
+ active: true
+
+potential-bugs:
+ active: true
+ AvoidReferentialEquality:
+ active: true
+ forbiddenTypePatterns:
+ - 'kotlin.String'
+ CastToNullableType:
+ active: false
+ Deprecation:
+ active: false
+ DontDowncastCollectionTypes:
+ active: false
+ DoubleMutabilityForCollection:
+ active: true
+ mutableTypes:
+ - 'kotlin.collections.MutableList'
+ - 'kotlin.collections.MutableMap'
+ - 'kotlin.collections.MutableSet'
+ - 'java.util.ArrayList'
+ - 'java.util.LinkedHashSet'
+ - 'java.util.HashSet'
+ - 'java.util.LinkedHashMap'
+ - 'java.util.HashMap'
+ EqualsAlwaysReturnsTrueOrFalse:
+ active: true
+ EqualsWithHashCodeExist:
+ active: true
+ ExitOutsideMain:
+ active: false
+ ExplicitGarbageCollectionCall:
+ active: true
+ HasPlatformType:
+ active: true
+ IgnoredReturnValue:
+ active: true
+ restrictToConfig: true
+ returnValueAnnotations:
+ - 'CheckResult'
+ - '*.CheckResult'
+ - 'CheckReturnValue'
+ - '*.CheckReturnValue'
+ ignoreReturnValueAnnotations:
+ - 'CanIgnoreReturnValue'
+ - '*.CanIgnoreReturnValue'
+ returnValueTypes:
+ - 'kotlin.sequences.Sequence'
+ - 'kotlinx.coroutines.flow.*Flow'
+ - 'java.util.stream.*Stream'
+ ignoreFunctionCall: []
+ ImplicitDefaultLocale:
+ active: true
+ ImplicitUnitReturnType:
+ active: false
+ allowExplicitReturnType: true
+ InvalidRange:
+ active: true
+ IteratorHasNextCallsNextMethod:
+ active: true
+ IteratorNotThrowingNoSuchElementException:
+ active: true
+ LateinitUsage:
+ active: false
+ excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
+ ignoreOnClassesPattern: ''
+ MapGetWithNotNullAssertionOperator:
+ active: true
+ MissingPackageDeclaration:
+ active: false
+ excludes: ['**/*.kts']
+ NullCheckOnMutableProperty:
+ active: false
+ NullableToStringCall:
+ active: false
+ UnconditionalJumpStatementInLoop:
+ active: false
+ UnnecessaryNotNullCheck:
+ active: false
+ UnnecessaryNotNullOperator:
+ active: true
+ UnnecessarySafeCall:
+ active: true
+ UnreachableCatchBlock:
+ active: true
+ UnreachableCode:
+ active: true
+ UnsafeCallOnNullableType:
+ active: true
+ excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
+ UnsafeCast:
+ active: true
+ UnusedUnaryOperator:
+ active: true
+ UselessPostfixExpression:
+ active: true
+ WrongEqualsTypeParameter:
+ active: true
+
+style:
+ active: true
+ AlsoCouldBeApply:
+ active: false
+ CanBeNonNullable:
+ active: false
+ CascadingCallWrapping:
+ active: false
+ includeElvis: true
+ ClassOrdering:
+ active: false
+ CollapsibleIfStatements:
+ active: false
+ DataClassShouldBeImmutable:
+ active: false
+ DestructuringDeclarationWithTooManyEntries:
+ active: true
+ maxDestructuringEntries: 3
+ EqualsNullCall:
+ active: true
+ EqualsOnSignatureLine:
+ active: false
+ ExplicitCollectionElementAccessMethod:
+ active: false
+ ExplicitItLambdaParameter:
+ active: true
+ ExpressionBodySyntax:
+ active: false
+ includeLineWrapping: false
+ ForbiddenComment:
+ active: true
+ values:
+ - 'FIXME:'
+ - 'STOPSHIP:'
+ - 'TODO:'
+ allowedPatterns: ''
+ customMessage: ''
+ ForbiddenImport:
+ active: false
+ imports: []
+ forbiddenPatterns: ''
+ ForbiddenMethodCall:
+ active: false
+ methods:
+ - reason: 'print does not allow you to configure the output stream. Use a logger instead.'
+ value: 'kotlin.io.print'
+ - reason: 'println does not allow you to configure the output stream. Use a logger instead.'
+ value: 'kotlin.io.println'
+ ForbiddenSuppress:
+ active: false
+ rules: []
+ ForbiddenVoid:
+ active: true
+ ignoreOverridden: false
+ ignoreUsageInGenerics: false
+ FunctionOnlyReturningConstant:
+ active: true
+ ignoreOverridableFunction: true
+ ignoreActualFunction: true
+ excludedFunctions: []
+ LoopWithTooManyJumpStatements:
+ active: true
+ maxJumpCount: 1
+ MagicNumber:
+ active: true
+ excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**', '**/*.kts']
+ ignoreNumbers:
+ - '-1'
+ - '0'
+ - '1'
+ - '2'
+ ignoreHashCodeFunction: true
+ ignorePropertyDeclaration: false
+ ignoreLocalVariableDeclaration: false
+ ignoreConstantDeclaration: true
+ ignoreCompanionObjectPropertyDeclaration: true
+ ignoreAnnotation: false
+ ignoreNamedArgument: true
+ ignoreEnums: false
+ ignoreRanges: false
+ ignoreExtensionFunctions: true
+ MandatoryBracesLoops:
+ active: false
+ MaxChainedCallsOnSameLine:
+ active: false
+ maxChainedCalls: 5
+ MaxLineLength:
+ active: true
+ maxLineLength: 120
+ excludePackageStatements: true
+ excludeImportStatements: true
+ excludeCommentStatements: false
+ excludeRawStrings: true
+ MayBeConst:
+ active: true
+ ModifierOrder:
+ active: true
+ MultilineLambdaItParameter:
+ active: false
+ MultilineRawStringIndentation:
+ active: false
+ indentSize: 4
+ NestedClassesVisibility:
+ active: true
+ NewLineAtEndOfFile:
+ active: true
+ NoTabs:
+ active: false
+ NullableBooleanCheck:
+ active: false
+ ObjectLiteralToLambda:
+ active: true
+ OptionalAbstractKeyword:
+ active: true
+ OptionalUnit:
+ active: false
+ OptionalWhenBraces:
+ active: false
+ PreferToOverPairSyntax:
+ active: false
+ ProtectedMemberInFinalClass:
+ active: true
+ RedundantExplicitType:
+ active: false
+ RedundantHigherOrderMapUsage:
+ active: true
+ RedundantVisibilityModifierRule:
+ active: false
+ ReturnCount:
+ active: true
+ max: 2
+ excludedFunctions:
+ - 'equals'
+ excludeLabeled: false
+ excludeReturnFromLambda: true
+ excludeGuardClauses: false
+ SafeCast:
+ active: true
+ SerialVersionUIDInSerializableClass:
+ active: true
+ SpacingBetweenPackageAndImports:
+ active: false
+ ThrowsCount:
+ active: true
+ max: 2
+ excludeGuardClauses: false
+ TrailingWhitespace:
+ active: false
+ TrimMultilineRawString:
+ active: false
+ UnderscoresInNumericLiterals:
+ active: false
+ acceptableLength: 4
+ allowNonStandardGrouping: false
+ UnnecessaryAbstractClass:
+ active: true
+ UnnecessaryAnnotationUseSiteTarget:
+ active: false
+ UnnecessaryApply:
+ active: true
+ UnnecessaryBackticks:
+ active: false
+ UnnecessaryFilter:
+ active: true
+ UnnecessaryInheritance:
+ active: true
+ UnnecessaryInnerClass:
+ active: false
+ UnnecessaryLet:
+ active: false
+ UnnecessaryParentheses:
+ active: false
+ allowForUnclearPrecedence: false
+ UntilInsteadOfRangeTo:
+ active: false
+ UnusedImports:
+ active: false
+ UnusedPrivateClass:
+ active: true
+ UnusedPrivateMember:
+ active: true
+ allowedNames: ''
+ UseAnyOrNoneInsteadOfFind:
+ active: true
+ UseArrayLiteralsInAnnotations:
+ active: true
+ UseCheckNotNull:
+ active: true
+ UseCheckOrError:
+ active: true
+ UseDataClass:
+ active: false
+ allowVars: false
+ UseEmptyCounterpart:
+ active: false
+ UseIfEmptyOrIfBlank:
+ active: false
+ UseIsNullOrEmpty:
+ active: true
+ UseOrEmpty:
+ active: true
+ UseRequire:
+ active: true
+ UseRequireNotNull:
+ active: true
+ UseSumOfInsteadOfFlatMapSize:
+ active: false
+ UselessCallOnNotNull:
+ active: true
+ UtilityClassWithPublicConstructor:
+ active: true
+ VarCouldBeVal:
+ active: true
+ ignoreLateinitVar: false
+ WildcardImport:
+ active: true
+ excludeImports:
+ - 'java.util.*'
+ -
diff --git a/gradle.properties b/gradle.properties
index 98bed16..b781b1f 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -18,4 +18,5 @@ android.useAndroidX=true
# Automatically convert third-party libraries to use AndroidX
android.enableJetifier=true
# Kotlin code style for this project: "official" or "obsolete":
-kotlin.code.style=official
\ No newline at end of file
+kotlin.code.style=official
+API_KEY=608dc3a0e4c39fe0b691a89554ec2b1f
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index d50249a..aa9073a 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Tue Feb 08 12:59:44 ICT 2022
+#Mon Apr 17 11:19:20 ICT 2023
distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
diff --git a/settings.gradle b/settings.gradle
deleted file mode 100644
index af468c6..0000000
--- a/settings.gradle
+++ /dev/null
@@ -1,10 +0,0 @@
-dependencyResolutionManagement {
- repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
- repositories {
- google()
- mavenCentral()
- jcenter() // Warning: this repository is going to shut down soon
- }
-}
-rootProject.name = "Structure_Android"
-include ':app'
diff --git a/settings.gradle.kts b/settings.gradle.kts
new file mode 100644
index 0000000..208a440
--- /dev/null
+++ b/settings.gradle.kts
@@ -0,0 +1,2 @@
+rootProject.name = "Structure_Android"
+include (":app")
diff --git a/team-props/git-hooks.gradle.kts b/team-props/git-hooks.gradle.kts
new file mode 100644
index 0000000..b5fd495
--- /dev/null
+++ b/team-props/git-hooks.gradle.kts
@@ -0,0 +1,41 @@
+fun isLinuxOrMacOs(): Boolean {
+ return isMac() || isLinux()
+}
+
+fun isLinux(): Boolean {
+ return System.getProperty("os.name").toLowerCase().contains("linux")
+}
+
+fun isMac(): Boolean {
+ val osName = System.getProperty("os.name").toLowerCase()
+ return osName.contains("mac os")
+ || osName.contains("macos")
+}
+
+tasks.register("copyGitHooks", Copy::class) {
+ description = "Copies the git hooks from team-props/git-hooks to the .git folder."
+ val path = if (isLinux()) "$rootDir/team-props/git-hooks/linux"
+ else "$rootDir/team-props/git-hooks/mac"
+ from(path) {
+ include("**/*.sh")
+ rename("(.*).sh", "$1")
+ }
+ into("$rootDir/.git/hooks")
+ onlyIf { isLinuxOrMacOs() }
+}
+
+tasks.register("installGitHooks", Exec::class) {
+ description = "Installs the pre-commit git hooks from team-props/git-hooks."
+ group = "git hooks"
+ workingDir = rootDir
+ setCommandLine("chmod", "-R", "+x", ".git/hooks/")
+ dependsOn("copyGitHooks")
+ onlyIf { isLinuxOrMacOs() }
+ doLast {
+ logger.info("Git hook installed successfully!")
+ }
+}
+
+afterEvaluate {
+ tasks["clean"].dependsOn("installGitHooks")
+}
diff --git a/team-props/git-hooks/linux/commit-msg.sh b/team-props/git-hooks/linux/commit-msg.sh
new file mode 100644
index 0000000..ff2dc12
--- /dev/null
+++ b/team-props/git-hooks/linux/commit-msg.sh
@@ -0,0 +1,17 @@
+#!/usr/bin/env bash
+echo "Checking your commit message"
+
+<&2
+ exit 1
+fi
diff --git a/team-props/git-hooks/linux/pre-commit.sh b/team-props/git-hooks/linux/pre-commit.sh
new file mode 100644
index 0000000..d315212
--- /dev/null
+++ b/team-props/git-hooks/linux/pre-commit.sh
@@ -0,0 +1,50 @@
+#!/usr/bin/env bash
+echo "Running static analysis..."
+
+echo "Start running ktlint"
+./gradlew ktlintFormat ktlintCheck --daemon
+status1=$?
+if [[ "$status1" = 0 ]] ; then
+ echo "*******************************************************"
+ echo " Ktlint runs successfully "
+ echo "*******************************************************"
+else
+ echo "*******************************************************"
+ echo " Ktlint failed "
+ echo " Please fix the reported issues before commit. "
+ echo "*******************************************************"
+ exit status1
+fi
+
+echo "Start running detektCheck"
+./gradlew detekt --daemon
+status2=$?
+if [[ "$status2" = 0 ]] ; then
+ echo "*******************************************************"
+ echo " Detekt runs successfully "
+ echo "*******************************************************"
+else
+ echo "*******************************************************"
+ echo " Detekt failed "
+ echo " Please fix the reported issues before committing "
+ echo "*******************************************************"
+ exit status2
+fi
+
+echo "Start running unit test"
+./gradlew testDevDebugUnitTestCoverage --daemon
+status3=$?
+if [[ "$status3" = 0 ]] ; then
+ echo "*******************************************************"
+ echo " UnitTest successfully "
+ echo "*******************************************************"
+else
+ echo "*******************************************************"
+ echo " UnitTest failed "
+ echo " Please fix the unit test issues before committing "
+ echo "*******************************************************"
+ exit status3
+fi
+
+# add changed files after run auto format
+git add .
\ No newline at end of file
diff --git a/team-props/git-hooks/mac/commit-msg.sh b/team-props/git-hooks/mac/commit-msg.sh
new file mode 100644
index 0000000..ced696c
--- /dev/null
+++ b/team-props/git-hooks/mac/commit-msg.sh
@@ -0,0 +1,18 @@
+#!/usr/bin/env bash
+echo "Checking your commit message"
+
+<&2
+ exit 1
+fi
diff --git a/team-props/git-hooks/mac/pre-commit.sh b/team-props/git-hooks/mac/pre-commit.sh
new file mode 100644
index 0000000..72f68a5
--- /dev/null
+++ b/team-props/git-hooks/mac/pre-commit.sh
@@ -0,0 +1,50 @@
+#!/usr/bin/env bash
+echo "Running static analysis..."
+
+echo "Start running ktlint"
+./gradlew ktlintFormat ktlintCheck --daemon
+status1=$?
+if [[ "$status1" = 0 ]] ; then
+ echo "*******************************************************"
+ echo " Ktlint runs successfully "
+ echo "*******************************************************"
+else
+ echo "*******************************************************"
+ echo " Ktlint failed "
+ echo " Please fix the reported issues before commit. "
+ echo "*******************************************************"
+ exit status1
+fi
+
+echo "Start running detektCheck"
+./gradlew detekt --daemon
+status2=$?
+if [[ "$status2" = 0 ]] ; then
+ echo "*******************************************************"
+ echo " Detekt runs successfully "
+ echo "*******************************************************"
+else
+ echo "*******************************************************"
+ echo " Detekt failed "
+ echo " Please fix the reported issues before committing "
+ echo "*******************************************************"
+ exit status2
+fi
+
+echo "Start running unit test"
+./gradlew testDevDebugUnitTestCoverage --daemon
+status3=$?
+if [[ "$status3" = 0 ]] ; then
+ echo "*******************************************************"
+ echo " UnitTest successfully "
+ echo "*******************************************************"
+else
+ echo "*******************************************************"
+ echo " UnitTest failed "
+ echo " Please fix the unit test issues before committing "
+ echo "*******************************************************"
+ exit status3
+fi
+
+# add changed files after run auto format
+git add .