From aff823a531f391cb1cceebcfffae263341559be6 Mon Sep 17 00:00:00 2001 From: tsato1 Date: Sat, 11 Dec 2021 21:09:50 +0800 Subject: [PATCH 1/7] Dependencies versions & target/compileSdkVersion updated to the latest. Manifest files changed according to this change --- app/build.gradle | 20 ++++++++++---------- app/src/main/AndroidManifest.xml | 3 ++- build.gradle | 5 +++-- draw/build.gradle | 18 ++++++++---------- draw/src/main/AndroidManifest.xml | 3 ++- 5 files changed, 25 insertions(+), 24 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 941ce03..ca65a49 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,11 +3,11 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' android { - compileSdkVersion 28 + compileSdkVersion 31 defaultConfig { applicationId "com.divyanshu.androiddraw" minSdkVersion 21 - targetSdkVersion 28 + targetSdkVersion 31 versionCode 3 versionName "1.0.2" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -31,19 +31,19 @@ dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" //AndroidX - implementation 'androidx.appcompat:appcompat:1.0.2' - implementation 'androidx.constraintlayout:constraintlayout:1.1.3' + implementation 'androidx.appcompat:appcompat:1.4.0' + implementation 'androidx.constraintlayout:constraintlayout:2.1.2' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.cardview:cardview:1.0.0' - implementation 'com.google.android.material:material:1.0.0' + implementation 'com.google.android.material:material:1.4.0' //Annotation - implementation 'com.github.bumptech.glide:glide:4.8.0' - annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1' + implementation 'com.github.bumptech.glide:glide:4.12.0' + annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0' //Test - testImplementation 'junit:junit:4.12' - androidTestImplementation 'androidx.test:runner:1.2.0' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' + testImplementation 'junit:junit:4.13.2' + androidTestImplementation 'androidx.test:runner:1.4.0' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e41b6c1..3afd872 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,8 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> - + diff --git a/build.gradle b/build.gradle index e0bf29a..b0d545c 100644 --- a/build.gradle +++ b/build.gradle @@ -1,13 +1,14 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.5.21' + ext.compose_version = '1.0.5' + ext.kotlin_version = '1.5.31' repositories { google() jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:4.2.2' + classpath 'com.android.tools.build:gradle:7.0.4' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong diff --git a/draw/build.gradle b/draw/build.gradle index 45b345f..58bce81 100644 --- a/draw/build.gradle +++ b/draw/build.gradle @@ -1,12 +1,10 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 28 + compileSdkVersion 31 defaultConfig { minSdkVersion 19 - targetSdkVersion 28 - versionCode 1 - versionName "1.0" + targetSdkVersion 31 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } @@ -23,17 +21,17 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //AndroidX - implementation 'androidx.appcompat:appcompat:1.0.2' - implementation 'androidx.constraintlayout:constraintlayout:1.1.3' + implementation 'androidx.appcompat:appcompat:1.4.0' + implementation 'androidx.constraintlayout:constraintlayout:2.1.2' - implementation 'com.google.android.material:material:1.0.0' + implementation 'com.google.android.material:material:1.4.0' implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" //Test - testImplementation 'junit:junit:4.12' - androidTestImplementation 'androidx.test:runner:1.2.0' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' + testImplementation 'junit:junit:4.13.2' + androidTestImplementation 'androidx.test:runner:1.4.0' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' } apply plugin: 'kotlin-android' diff --git a/draw/src/main/AndroidManifest.xml b/draw/src/main/AndroidManifest.xml index 19e1db7..a8587d2 100644 --- a/draw/src/main/AndroidManifest.xml +++ b/draw/src/main/AndroidManifest.xml @@ -5,7 +5,8 @@ + android:theme="@style/Theme.AppCompat.NoActionBar" + android:exported="true"/> \ No newline at end of file From fc6bf0af857840e5d51ac7c7b5dc3757f75cd56b Mon Sep 17 00:00:00 2001 From: tsato1 Date: Sun, 12 Dec 2021 21:34:20 +0800 Subject: [PATCH 2/7] DrawView implemented --- build.gradle | 1 + gradle/wrapper/gradle-wrapper.properties | 2 +- jpc/.gitignore | 1 + jpc/build.gradle | 68 ++++ jpc/proguard-rules.pro | 21 ++ .../jpc/ExampleInstrumentedTest.kt | 24 ++ jpc/src/main/AndroidManifest.xml | 25 ++ .../divyanshu/androiddraw/jpc/DrawScreen.kt | 295 ++++++++++++++++++ .../divyanshu/androiddraw/jpc/MainActivity.kt | 23 ++ .../androiddraw/jpc/ui/theme/Color.kt | 8 + .../androiddraw/jpc/ui/theme/Shape.kt | 11 + .../androiddraw/jpc/ui/theme/Theme.kt | 47 +++ .../androiddraw/jpc/ui/theme/Type.kt | 28 ++ .../res/drawable-v24/ic_adjust_black_24dp.xml | 9 + .../res/drawable-v24/ic_close_black_24dp.xml | 9 + .../drawable-v24/ic_color_lens_black_24dp.xml | 9 + .../res/drawable-v24/ic_done_black_24dp.xml | 9 + .../res/drawable-v24/ic_eraser_black_24dp.xml | 9 + .../drawable-v24/ic_launcher_foreground.xml | 30 ++ .../drawable-v24/ic_opacity_black_24dp.xml | 9 + .../res/drawable-v24/ic_redo_black_24dp.xml | 9 + .../res/drawable-v24/ic_undo_black_24dp.xml | 9 + .../res/drawable/ic_launcher_background.xml | 170 ++++++++++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + jpc/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3005 bytes .../mipmap-hdpi/ic_launcher_foreground.png | Bin 0 -> 1800 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 3005 bytes jpc/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1971 bytes .../mipmap-mdpi/ic_launcher_foreground.png | Bin 0 -> 1175 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 1971 bytes jpc/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4231 bytes .../mipmap-xhdpi/ic_launcher_foreground.png | Bin 0 -> 2479 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 4231 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 6653 bytes .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 0 -> 4015 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 6653 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 9323 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 0 -> 5721 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 9323 bytes jpc/src/main/res/values-night/themes.xml | 16 + jpc/src/main/res/values/colors.xml | 10 + .../res/values/ic_launcher_background.xml | 4 + jpc/src/main/res/values/strings.xml | 3 + jpc/src/main/res/values/themes.xml | 25 ++ jpc/src/main/res/xml/draw_view.xml | 7 + .../androiddraw/jpc/ExampleUnitTest.kt | 17 + settings.gradle | 1 + 48 files changed, 918 insertions(+), 1 deletion(-) create mode 100644 jpc/.gitignore create mode 100644 jpc/build.gradle create mode 100644 jpc/proguard-rules.pro create mode 100644 jpc/src/androidTest/java/com/divyanshu/androiddraw/jpc/ExampleInstrumentedTest.kt create mode 100644 jpc/src/main/AndroidManifest.xml create mode 100644 jpc/src/main/java/com/divyanshu/androiddraw/jpc/DrawScreen.kt create mode 100644 jpc/src/main/java/com/divyanshu/androiddraw/jpc/MainActivity.kt create mode 100644 jpc/src/main/java/com/divyanshu/androiddraw/jpc/ui/theme/Color.kt create mode 100644 jpc/src/main/java/com/divyanshu/androiddraw/jpc/ui/theme/Shape.kt create mode 100644 jpc/src/main/java/com/divyanshu/androiddraw/jpc/ui/theme/Theme.kt create mode 100644 jpc/src/main/java/com/divyanshu/androiddraw/jpc/ui/theme/Type.kt create mode 100644 jpc/src/main/res/drawable-v24/ic_adjust_black_24dp.xml create mode 100644 jpc/src/main/res/drawable-v24/ic_close_black_24dp.xml create mode 100644 jpc/src/main/res/drawable-v24/ic_color_lens_black_24dp.xml create mode 100644 jpc/src/main/res/drawable-v24/ic_done_black_24dp.xml create mode 100644 jpc/src/main/res/drawable-v24/ic_eraser_black_24dp.xml create mode 100644 jpc/src/main/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 jpc/src/main/res/drawable-v24/ic_opacity_black_24dp.xml create mode 100644 jpc/src/main/res/drawable-v24/ic_redo_black_24dp.xml create mode 100644 jpc/src/main/res/drawable-v24/ic_undo_black_24dp.xml create mode 100644 jpc/src/main/res/drawable/ic_launcher_background.xml create mode 100644 jpc/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 jpc/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 jpc/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 jpc/src/main/res/mipmap-hdpi/ic_launcher_foreground.png create mode 100644 jpc/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 jpc/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 jpc/src/main/res/mipmap-mdpi/ic_launcher_foreground.png create mode 100644 jpc/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 jpc/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 jpc/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png create mode 100644 jpc/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 jpc/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 jpc/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png create mode 100644 jpc/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 jpc/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 jpc/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png create mode 100644 jpc/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 jpc/src/main/res/values-night/themes.xml create mode 100644 jpc/src/main/res/values/colors.xml create mode 100644 jpc/src/main/res/values/ic_launcher_background.xml create mode 100644 jpc/src/main/res/values/strings.xml create mode 100644 jpc/src/main/res/values/themes.xml create mode 100644 jpc/src/main/res/xml/draw_view.xml create mode 100644 jpc/src/test/java/com/divyanshu/androiddraw/jpc/ExampleUnitTest.kt diff --git a/build.gradle b/build.gradle index b0d545c..61ad121 100644 --- a/build.gradle +++ b/build.gradle @@ -20,6 +20,7 @@ allprojects { repositories { google() jcenter() + maven { url 'https://jitpack.io' } } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 4d9ca16..0f80bbf 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/jpc/.gitignore b/jpc/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/jpc/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/jpc/build.gradle b/jpc/build.gradle new file mode 100644 index 0000000..a4fb655 --- /dev/null +++ b/jpc/build.gradle @@ -0,0 +1,68 @@ +plugins { + id 'com.android.application' + id 'kotlin-android' +} + +android { + compileSdkVersion 31 + + defaultConfig { + applicationId "com.divyanshu.androiddraw.jpc" + minSdkVersion 21 + targetSdkVersion 31 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + vectorDrawables { + useSupportLibrary true + } + } + + 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' + useIR = true + } + buildFeatures { + compose true + } + composeOptions { + kotlinCompilerExtensionVersion compose_version + kotlinCompilerVersion '1.5.21' + } + packagingOptions { + resources { + excludes += '/META-INF/{AL2.0,LGPL2.1}' + } + } +} + +dependencies { + + implementation 'androidx.core:core-ktx:1.7.0' + implementation 'androidx.appcompat:appcompat:1.4.0' + implementation 'com.google.android.material:material:1.4.0' + implementation "androidx.compose.ui:ui:$compose_version" + implementation "androidx.compose.material:material:$compose_version" + implementation "androidx.compose.ui:ui-tooling-preview:$compose_version" + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.0' + implementation 'androidx.activity:activity-compose:1.4.0' + + implementation 'com.github.divyanshub024:AndroidDraw:v0.1' + + testImplementation 'junit:junit:4.13.2' + androidTestImplementation 'androidx.test.ext:junit:1.1.3' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' + androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_version" + debugImplementation "androidx.compose.ui:ui-tooling:$compose_version" +} \ No newline at end of file diff --git a/jpc/proguard-rules.pro b/jpc/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/jpc/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/jpc/src/androidTest/java/com/divyanshu/androiddraw/jpc/ExampleInstrumentedTest.kt b/jpc/src/androidTest/java/com/divyanshu/androiddraw/jpc/ExampleInstrumentedTest.kt new file mode 100644 index 0000000..ab81d62 --- /dev/null +++ b/jpc/src/androidTest/java/com/divyanshu/androiddraw/jpc/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package com.divyanshu.androiddraw.jpc + +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.ext.junit.runners.AndroidJUnit4 + +import org.junit.Test +import org.junit.runner.RunWith + +import org.junit.Assert.* + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + assertEquals("com.divyanshu.androiddraw.jpc", appContext.packageName) + } +} \ No newline at end of file diff --git a/jpc/src/main/AndroidManifest.xml b/jpc/src/main/AndroidManifest.xml new file mode 100644 index 0000000..03e38c8 --- /dev/null +++ b/jpc/src/main/AndroidManifest.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/jpc/src/main/java/com/divyanshu/androiddraw/jpc/DrawScreen.kt b/jpc/src/main/java/com/divyanshu/androiddraw/jpc/DrawScreen.kt new file mode 100644 index 0000000..971c6e1 --- /dev/null +++ b/jpc/src/main/java/com/divyanshu/androiddraw/jpc/DrawScreen.kt @@ -0,0 +1,295 @@ +package com.divyanshu.androiddraw.jpc + +import android.util.Xml +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.ExperimentalAnimationApi +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.* +import androidx.compose.runtime.Composable +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.toArgb +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.unit.dp +import androidx.compose.ui.viewinterop.AndroidView +import org.xmlpull.v1.XmlPullParser +import com.divyanshu.draw.widget.DrawView + +@ExperimentalAnimationApi +@Composable +fun DrawScreen() { + // States in which a particular tool is selected + val showDrawTools = remember { mutableStateOf(false) } // Needed for ColorPalette, StrokeWidth, and Opacity + val isEraserSelected = remember { mutableStateOf(false) } + val isColorPaletteSelected = remember { mutableStateOf(false) } + val isStrokeWidthSelected = remember { mutableStateOf(false) } + val isOpacitySelected = remember { mutableStateOf(false) } + val isUndoSelected = remember { mutableStateOf(false) } + val isRedoSelected = remember { mutableStateOf(false) } + + // Currently-selected color, stroke width, and opacity + val pathColor = remember { mutableStateOf(Color.Black) } + val strokeWidth = remember { mutableStateOf(5f) } + val opacity = remember { mutableStateOf(100f) } + + // The color of the eraser. It has to be the same as the background color + val backgroundColor = MaterialTheme.colors.background + + Column( + modifier = Modifier.fillMaxSize() + ) { + // Get the DrawView from xml + AndroidView( + modifier = Modifier + .fillMaxWidth() + .weight(1f), + factory = { + val parser: XmlPullParser = it.resources.getXml(R.xml.draw_view) + try { + parser.next() + parser.nextTag() + } catch (e: Exception) { + e.printStackTrace() + } + val attrs = Xml.asAttributeSet(parser) + DrawView(it, attrs) + } + ) { drawView -> + drawView.setColor(if (isEraserSelected.value) backgroundColor.toArgb() else pathColor.value.toArgb()) + drawView.setStrokeWidth(strokeWidth.value) + drawView.setAlpha(if (isEraserSelected.value) 100 else opacity.value.toInt()) + + if (isUndoSelected.value) { + drawView.undo() + isUndoSelected.value = false + } + if (isRedoSelected.value) { + drawView.redo() + isRedoSelected.value = false + } + } + // Toolbar at the bottom + Divider() + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.Center, + ) { + IconButton( + onClick = { + showDrawTools.value = false + isEraserSelected.value = !isEraserSelected.value + } + ) { + Icon( + painter = painterResource(id = R.drawable.ic_eraser_black_24dp), + tint = if(isEraserSelected.value) Color.Black else Color.Gray, + contentDescription = "Eraser" + ) + } + IconButton( + onClick = { + showDrawTools.value = true + isStrokeWidthSelected.value = true + isColorPaletteSelected.value = false + isOpacitySelected.value = false + } + ) { + Icon( + painter = painterResource(id = R.drawable.ic_adjust_black_24dp), + tint = Color.Gray, + contentDescription = "Stroke Width" + ) + } + IconButton( + onClick = { + showDrawTools.value = true + isStrokeWidthSelected.value = false + isColorPaletteSelected.value = true + isOpacitySelected.value = false + } + ) { + Icon( + painter = painterResource(id = R.drawable.ic_color_lens_black_24dp), + tint = Color.Gray, + contentDescription = "Color" + ) + } + IconButton( + onClick = { + showDrawTools.value = true + isStrokeWidthSelected.value = false + isColorPaletteSelected.value = false + isOpacitySelected.value = true + } + ) { + Icon( + painter = painterResource(id = R.drawable.ic_opacity_black_24dp), + tint = Color.Gray, + contentDescription = "Opacity" + ) + } + IconButton( + onClick = { + showDrawTools.value = false + isUndoSelected.value = true + } + ) { + Icon( + painter = painterResource(id = R.drawable.ic_undo_black_24dp), + tint = Color.Gray, + contentDescription = "Undo" + ) + } + IconButton( + onClick = { + showDrawTools.value = false + isRedoSelected.value = true + } + ) { + Icon( + painter = painterResource(id = R.drawable.ic_redo_black_24dp), + tint = Color.Gray, + contentDescription = "Redo" + ) + } + } + // Box that comes up animated from the bottom. Only for ColorPalette, StrokeWidth, and Opacity + AnimatedVisibility(visible = showDrawTools.value) { + Box( + modifier = Modifier + .fillMaxWidth() + .height(50.dp) + .padding(15.dp, 2.dp) + ) { + when { + isColorPaletteSelected.value -> { + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceEvenly, + verticalAlignment = Alignment.CenterVertically + ) { + Box( + modifier = Modifier + .size(if (pathColor.value == Color.Black) 38.dp else 32.dp) + .clip(CircleShape) + .background(Color.Black) + .clickable { pathColor.value = Color.Black } + ) + Box( + modifier = Modifier + .size(if (pathColor.value == Color.Red) 38.dp else 32.dp) + .clip(CircleShape) + .background(Color.Red) + .clickable { pathColor.value = Color.Red } + ) + Box( + modifier = Modifier + .size(if (pathColor.value == Color.Yellow) 38.dp else 32.dp) + .clip(CircleShape) + .background(Color.Yellow) + .clickable { pathColor.value = Color.Yellow } + ) + Box( + modifier = Modifier + .size(if (pathColor.value == Color.Green) 38.dp else 32.dp) + .clip(CircleShape) + .background(Color.Green) + .clickable { pathColor.value = Color.Green } + ) + Box( + modifier = Modifier + .size(if (pathColor.value == Color.Blue) 38.dp else 32.dp) + .clip(CircleShape) + .background(Color.Blue) + .clickable { pathColor.value = Color.Blue } + ) + Box( + modifier = Modifier + .size(if (pathColor.value == Color.Gray) 38.dp else 32.dp) + .clip(CircleShape) + .background(Color.Gray) + .clickable { pathColor.value = Color.Gray } + ) + Box( + modifier = Modifier + .size(if (pathColor.value == Color.Magenta) 38.dp else 32.dp) + .clip(CircleShape) + .background(Color.Magenta) + .clickable { pathColor.value = Color.Magenta } + ) + } + } + isStrokeWidthSelected.value -> { + Row( + modifier = Modifier.fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically + ) { + Slider( + modifier = Modifier + .padding(5.dp, 0.dp) + .weight(1f), + value = strokeWidth.value, + onValueChange = { strokeWidth.value = it }, + valueRange = 0f..100f, + steps = 100, + colors = SliderDefaults.colors( + thumbColor = MaterialTheme.colors.secondary, + activeTrackColor = MaterialTheme.colors.secondary + ) + ) + Box( + modifier = Modifier + .size(40.dp) + .padding(2.dp) + ) { + Box( + modifier = Modifier + .size(36.dp * strokeWidth.value / 100f) + .clip(CircleShape) + .background(pathColor.value) + ) + } + } + } + isOpacitySelected.value -> { + Row( + modifier = Modifier.fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically + ) { + Slider( + modifier = Modifier + .padding(5.dp, 0.dp) + .weight(1f), + value = opacity.value, + onValueChange = { opacity.value = it }, + valueRange = 0f..100f, + steps = 100, + colors = SliderDefaults.colors( + thumbColor = MaterialTheme.colors.secondary, + activeTrackColor = MaterialTheme.colors.secondary + ) + ) + Box( + modifier = Modifier + .size(40.dp) + .padding(2.dp) + .clip(CircleShape) + .background( + // alpha has to be within the range: 0f..1f + pathColor.value.copy(alpha = opacity.value / 100f) + ) + ) + } + } + } + } + } + } +} \ No newline at end of file diff --git a/jpc/src/main/java/com/divyanshu/androiddraw/jpc/MainActivity.kt b/jpc/src/main/java/com/divyanshu/androiddraw/jpc/MainActivity.kt new file mode 100644 index 0000000..3c53741 --- /dev/null +++ b/jpc/src/main/java/com/divyanshu/androiddraw/jpc/MainActivity.kt @@ -0,0 +1,23 @@ +package com.divyanshu.androiddraw.jpc + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.compose.animation.ExperimentalAnimationApi +import androidx.compose.material.MaterialTheme +import androidx.compose.material.Surface +import com.divyanshu.androiddraw.jpc.ui.theme.AndroidDrawTheme + +class MainActivity : ComponentActivity() { + @ExperimentalAnimationApi + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContent { + AndroidDrawTheme { + Surface(color = MaterialTheme.colors.background) { + DrawScreen() + } + } + } + } +} \ No newline at end of file diff --git a/jpc/src/main/java/com/divyanshu/androiddraw/jpc/ui/theme/Color.kt b/jpc/src/main/java/com/divyanshu/androiddraw/jpc/ui/theme/Color.kt new file mode 100644 index 0000000..34c9aaf --- /dev/null +++ b/jpc/src/main/java/com/divyanshu/androiddraw/jpc/ui/theme/Color.kt @@ -0,0 +1,8 @@ +package com.divyanshu.androiddraw.jpc.ui.theme + +import androidx.compose.ui.graphics.Color + +val Purple200 = Color(0xFFBB86FC) +val Purple500 = Color(0xFF6200EE) +val Purple700 = Color(0xFF3700B3) +val Teal200 = Color(0xFF03DAC5) \ No newline at end of file diff --git a/jpc/src/main/java/com/divyanshu/androiddraw/jpc/ui/theme/Shape.kt b/jpc/src/main/java/com/divyanshu/androiddraw/jpc/ui/theme/Shape.kt new file mode 100644 index 0000000..daa1baf --- /dev/null +++ b/jpc/src/main/java/com/divyanshu/androiddraw/jpc/ui/theme/Shape.kt @@ -0,0 +1,11 @@ +package com.divyanshu.androiddraw.jpc.ui.theme + +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.Shapes +import androidx.compose.ui.unit.dp + +val Shapes = Shapes( + small = RoundedCornerShape(4.dp), + medium = RoundedCornerShape(4.dp), + large = RoundedCornerShape(0.dp) +) \ No newline at end of file diff --git a/jpc/src/main/java/com/divyanshu/androiddraw/jpc/ui/theme/Theme.kt b/jpc/src/main/java/com/divyanshu/androiddraw/jpc/ui/theme/Theme.kt new file mode 100644 index 0000000..e0681e4 --- /dev/null +++ b/jpc/src/main/java/com/divyanshu/androiddraw/jpc/ui/theme/Theme.kt @@ -0,0 +1,47 @@ +package com.divyanshu.androiddraw.jpc.ui.theme + +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.material.MaterialTheme +import androidx.compose.material.darkColors +import androidx.compose.material.lightColors +import androidx.compose.runtime.Composable + +private val DarkColorPalette = darkColors( + primary = Purple200, + primaryVariant = Purple700, + secondary = Teal200 +) + +private val LightColorPalette = lightColors( + primary = Purple500, + primaryVariant = Purple700, + secondary = Teal200 + + /* Other default colors to override + background = Color.White, + surface = Color.White, + onPrimary = Color.White, + onSecondary = Color.Black, + onBackground = Color.Black, + onSurface = Color.Black, + */ +) + +@Composable +fun AndroidDrawTheme( + darkTheme: Boolean = isSystemInDarkTheme(), + content: @Composable() () -> Unit +) { + val colors = if (darkTheme) { + DarkColorPalette + } else { + LightColorPalette + } + + MaterialTheme( + colors = colors, + typography = Typography, + shapes = Shapes, + content = content + ) +} \ No newline at end of file diff --git a/jpc/src/main/java/com/divyanshu/androiddraw/jpc/ui/theme/Type.kt b/jpc/src/main/java/com/divyanshu/androiddraw/jpc/ui/theme/Type.kt new file mode 100644 index 0000000..8b9cfcf --- /dev/null +++ b/jpc/src/main/java/com/divyanshu/androiddraw/jpc/ui/theme/Type.kt @@ -0,0 +1,28 @@ +package com.divyanshu.androiddraw.jpc.ui.theme + +import androidx.compose.material.Typography +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.sp + +// Set of Material typography styles to start with +val Typography = Typography( + body1 = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Normal, + fontSize = 16.sp + ) + /* Other default text styles to override + button = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.W500, + fontSize = 14.sp + ), + caption = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Normal, + fontSize = 12.sp + ) + */ +) \ No newline at end of file diff --git a/jpc/src/main/res/drawable-v24/ic_adjust_black_24dp.xml b/jpc/src/main/res/drawable-v24/ic_adjust_black_24dp.xml new file mode 100644 index 0000000..92e1aa9 --- /dev/null +++ b/jpc/src/main/res/drawable-v24/ic_adjust_black_24dp.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/jpc/src/main/res/drawable-v24/ic_close_black_24dp.xml b/jpc/src/main/res/drawable-v24/ic_close_black_24dp.xml new file mode 100644 index 0000000..ede4b71 --- /dev/null +++ b/jpc/src/main/res/drawable-v24/ic_close_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/jpc/src/main/res/drawable-v24/ic_color_lens_black_24dp.xml b/jpc/src/main/res/drawable-v24/ic_color_lens_black_24dp.xml new file mode 100644 index 0000000..497dad0 --- /dev/null +++ b/jpc/src/main/res/drawable-v24/ic_color_lens_black_24dp.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/jpc/src/main/res/drawable-v24/ic_done_black_24dp.xml b/jpc/src/main/res/drawable-v24/ic_done_black_24dp.xml new file mode 100644 index 0000000..7affe9b --- /dev/null +++ b/jpc/src/main/res/drawable-v24/ic_done_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/jpc/src/main/res/drawable-v24/ic_eraser_black_24dp.xml b/jpc/src/main/res/drawable-v24/ic_eraser_black_24dp.xml new file mode 100644 index 0000000..1283eaa --- /dev/null +++ b/jpc/src/main/res/drawable-v24/ic_eraser_black_24dp.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/jpc/src/main/res/drawable-v24/ic_launcher_foreground.xml b/jpc/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/jpc/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/jpc/src/main/res/drawable-v24/ic_opacity_black_24dp.xml b/jpc/src/main/res/drawable-v24/ic_opacity_black_24dp.xml new file mode 100644 index 0000000..95da153 --- /dev/null +++ b/jpc/src/main/res/drawable-v24/ic_opacity_black_24dp.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/jpc/src/main/res/drawable-v24/ic_redo_black_24dp.xml b/jpc/src/main/res/drawable-v24/ic_redo_black_24dp.xml new file mode 100644 index 0000000..2a4e353 --- /dev/null +++ b/jpc/src/main/res/drawable-v24/ic_redo_black_24dp.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/jpc/src/main/res/drawable-v24/ic_undo_black_24dp.xml b/jpc/src/main/res/drawable-v24/ic_undo_black_24dp.xml new file mode 100644 index 0000000..eb6fa05 --- /dev/null +++ b/jpc/src/main/res/drawable-v24/ic_undo_black_24dp.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/jpc/src/main/res/drawable/ic_launcher_background.xml b/jpc/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..07d5da9 --- /dev/null +++ b/jpc/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jpc/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/jpc/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..036d09b --- /dev/null +++ b/jpc/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jpc/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/jpc/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..036d09b --- /dev/null +++ b/jpc/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jpc/src/main/res/mipmap-hdpi/ic_launcher.png b/jpc/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..a901e5af74409fdd6a73a4e3d23e021e8063b1ea GIT binary patch literal 3005 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 M?1XTvz2=+ve|Sq`rT_o{ literal 0 HcmV?d00001 diff --git a/jpc/src/main/res/mipmap-hdpi/ic_launcher_round.png b/jpc/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..a901e5af74409fdd6a73a4e3d23e021e8063b1ea GIT binary patch literal 3005 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 Bl{EkW literal 0 HcmV?d00001 diff --git a/jpc/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/jpc/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..d270f2902c4a2cc836597bae2d95b38e587db2d4 GIT binary patch literal 4231 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%0A@wU35xL%oVTFBC+OQWHloA3Q8COruo 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 Hu0mjf8F!-s literal 0 HcmV?d00001 diff --git a/jpc/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/jpc/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..8912ff594fe187bb7c3b4c847f21f319ffafcaad GIT binary patch literal 4015 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 literal 0 HcmV?d00001 diff --git a/jpc/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/jpc/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..772635e9712cc3f32b9fa8720b69632ba0ae881e GIT binary patch literal 6653 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%0A@wU35xL%oVTFBC+OQWHloA3Q8COruo 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 Hu0mjf8F!-s literal 0 HcmV?d00001 diff --git a/jpc/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/jpc/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..63b4fad02b021d2896a0ff590abf7e0be3c5a81c GIT binary patch literal 9323 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 Z{{#IzoLb53Q||x(002ovPDHLkV1jT}zNr8J literal 0 HcmV?d00001 diff --git a/jpc/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/jpc/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..2053e92e45281c7385c1cbd749d59f9e148d1470 GIT binary patch literal 5721 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 literal 0 HcmV?d00001 diff --git a/jpc/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/jpc/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..63b4fad02b021d2896a0ff590abf7e0be3c5a81c GIT binary patch literal 9323 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 Z{{#IzoLb53Q||x(002ovPDHLkV1jT}zNr8J literal 0 HcmV?d00001 diff --git a/jpc/src/main/res/values-night/themes.xml b/jpc/src/main/res/values-night/themes.xml new file mode 100644 index 0000000..b6431a8 --- /dev/null +++ b/jpc/src/main/res/values-night/themes.xml @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git a/jpc/src/main/res/values/colors.xml b/jpc/src/main/res/values/colors.xml new file mode 100644 index 0000000..f8c6127 --- /dev/null +++ b/jpc/src/main/res/values/colors.xml @@ -0,0 +1,10 @@ + + + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/jpc/src/main/res/values/ic_launcher_background.xml b/jpc/src/main/res/values/ic_launcher_background.xml new file mode 100644 index 0000000..beab31f --- /dev/null +++ b/jpc/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #000000 + \ No newline at end of file diff --git a/jpc/src/main/res/values/strings.xml b/jpc/src/main/res/values/strings.xml new file mode 100644 index 0000000..51519de --- /dev/null +++ b/jpc/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + jpc + \ No newline at end of file diff --git a/jpc/src/main/res/values/themes.xml b/jpc/src/main/res/values/themes.xml new file mode 100644 index 0000000..e9aeb83 --- /dev/null +++ b/jpc/src/main/res/values/themes.xml @@ -0,0 +1,25 @@ + + + + + + +