Groovy to Kotlin DSL (#13)

This commit is contained in:
Android Dev
2025-11-12 00:00:00 +07:00
committed by GitHub
parent 9c730f94d2
commit e18ffec9f1
9 changed files with 87 additions and 102 deletions

View File

@@ -1,8 +1,8 @@
Superheroes app Superheroes app
================================= =================================
Material themeing is used to display a list of super heroes in this app. Material theming is used to display a list of superheroes in this app.
The app also demonstrates simple aminations. The app also demonstrates simple animations.
Pre-requisites Pre-requisites

View File

@@ -1,75 +0,0 @@
/*
* Copyright (C) 2023 The Android Open Source Project
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
}
android {
namespace 'com.example.superheroes'
compileSdk 33
defaultConfig {
applicationId "com.example.superheroes"
minSdk 24
targetSdk 33
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'
freeCompilerArgs += "-opt-in=androidx.compose.material3.ExperimentalMaterial3Api"
}
buildFeatures {
compose true
}
composeOptions {
kotlinCompilerExtensionVersion '1.4.3'
}
packagingOptions {
resources {
excludes += '/META-INF/{AL2.0,LGPL2.1}'
}
}
}
dependencies {
implementation platform('androidx.compose:compose-bom:2023.04.00')
implementation 'androidx.activity:activity-compose:1.7.1'
implementation 'androidx.compose.material3:material3'
implementation 'androidx.compose.ui:ui'
implementation 'androidx.compose.ui:ui-tooling-preview'
implementation 'androidx.core:core-ktx:1.10.0'
androidTestImplementation platform('androidx.compose:compose-bom:2023.04.00')
debugImplementation 'androidx.compose.ui:ui-tooling'
}

76
app/build.gradle.kts Normal file
View File

@@ -0,0 +1,76 @@
/*
* Copyright (C) 2023 The Android Open Source Project
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
@file:Suppress("UnstableApiUsage")
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
}
android {
namespace = "com.example.superheroes"
compileSdk = 33
defaultConfig {
applicationId = "com.example.superheroes"
minSdk = 24
targetSdk = 33
versionCode = 1
versionName = "1.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
useSupportLibrary = true
}
}
buildTypes {
release {
isMinifyEnabled = 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"
}
buildFeatures {
compose = true
}
composeOptions {
kotlinCompilerExtensionVersion = "1.4.7"
}
packaging {
resources {
excludes += "/META-INF/{AL2.0,LGPL2.1}"
}
}
}
dependencies {
implementation(platform("androidx.compose:compose-bom:2023.06.00"))
implementation("androidx.activity:activity-compose:1.7.2")
implementation("androidx.compose.material3:material3")
implementation("androidx.compose.ui:ui")
implementation("androidx.compose.ui:ui-tooling-preview")
implementation("androidx.core:core-ktx:1.10.1")
debugImplementation("androidx.compose.ui:ui-tooling")
}

View File

@@ -22,6 +22,7 @@ import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material3.CenterAlignedTopAppBar import androidx.compose.material3.CenterAlignedTopAppBar
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold import androidx.compose.material3.Scaffold
import androidx.compose.material3.Surface import androidx.compose.material3.Surface
@@ -75,6 +76,7 @@ class MainActivity : ComponentActivity() {
* *
* @param modifier modifiers to set to this composable * @param modifier modifiers to set to this composable
*/ */
@OptIn(ExperimentalMaterial3Api::class)
@Composable @Composable
fun TopAppBar(modifier: Modifier = Modifier) { fun TopAppBar(modifier: Modifier = Modifier) {
CenterAlignedTopAppBar( CenterAlignedTopAppBar(

View File

@@ -1,18 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2023 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ https://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<resources></resources>

View File

@@ -16,6 +16,5 @@
--> -->
<resources> <resources>
<style name="Theme.Superheroes" parent="android:Theme.Material.Light.NoActionBar" /> <style name="Theme.Superheroes" parent="android:Theme.Material.Light.NoActionBar" />
</resources> </resources>

View File

@@ -16,7 +16,7 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules. // Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins { plugins {
id 'com.android.application' version '8.0.0' apply false id("com.android.application") version "8.0.2" apply false
id 'com.android.library' version '8.0.0' apply false id("com.android.library") version "8.0.2" apply false
id 'org.jetbrains.kotlin.android' version '1.8.10' apply false id("org.jetbrains.kotlin.android") version "1.8.21" apply false
} }

View File

@@ -1,7 +1,6 @@
#Thu Mar 09 16:31:19 PST 2023 #Thu Mar 09 16:31:19 PST 2023
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

View File

@@ -13,6 +13,8 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
@file:Suppress("UnstableApiUsage")
pluginManagement { pluginManagement {
repositories { repositories {
google() google()
@@ -28,4 +30,4 @@ dependencyResolutionManagement {
} }
} }
rootProject.name = "Superheroes" rootProject.name = "Superheroes"
include ':app' include(":app")