Skip to content

Commit

Permalink
Updates crane to dev15 snapshot
Browse files Browse the repository at this point in the history
Change-Id: I79c21707adbbc1e3eea67fd00dcec4a3fe592683
  • Loading branch information
Manuel Vivo committed Jul 23, 2020
1 parent f985256 commit 3b7c1b7
Show file tree
Hide file tree
Showing 11 changed files with 293 additions and 216 deletions.
46 changes: 26 additions & 20 deletions Crane/app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

/*
* Copyright 2019 Google, Inc.
*
Expand Down Expand Up @@ -53,38 +55,42 @@ android {
compose true
}
composeOptions {
kotlinCompilerVersion "1.3.70-dev-withExperimentalGoogleExtensions-20200424"
kotlinCompilerVersion "1.4.0-dev-withExperimentalGoogleExtensions-20200720"
kotlinCompilerExtensionVersion "0.1.0-SNAPSHOT"
}
}

tasks.withType(KotlinCompile).configureEach {
kotlinOptions {
jvmTarget = "1.8"
freeCompilerArgs += ["-Xallow-jvm-ir-dependencies", "-Xskip-prerelease-check"]
}
}

configurations {
ktlint
}

dependencies {
// Actual dependencies of the application
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.61'
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4-M3'
implementation 'com.google.android.gms:play-services-maps:17.0.0'

def composeVersion = "0.1.0-SNAPSHOT"
implementation ("androidx.compose:compose-runtime:$composeVersion")
implementation ("androidx.ui:ui-core:$composeVersion")
implementation ("androidx.ui:ui-foundation:$composeVersion")
implementation ("androidx.ui:ui-layout:$composeVersion")
implementation ("androidx.ui:ui-material:$composeVersion")
implementation ("androidx.ui:ui-android-view:$composeVersion")
implementation ("androidx.ui:ui-tooling:$composeVersion")
implementation ("androidx.ui:ui-android-view:$composeVersion")

implementation ('androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0')
implementation ('androidx.appcompat:appcompat:1.1.0')
implementation ('androidx.activity:activity-ktx:1.1.0')
implementation ('androidx.lifecycle:lifecycle-extensions:2.2.0')

implementation ('com.squareup.picasso:picasso:2.71828')

ktlint "com.pinterest:ktlint:0.36.0"
implementation "androidx.compose.runtime:runtime:$composeVersion"
implementation "androidx.compose.material:material:$composeVersion"
implementation "androidx.compose.foundation:foundation:$composeVersion"
implementation "androidx.compose.foundation:foundation-layout:$composeVersion"
implementation "androidx.compose.animation:animation:$composeVersion"
implementation "androidx.ui:ui-tooling:$composeVersion"

implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0'
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.activity:activity-ktx:1.1.0'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'

implementation 'com.squareup.picasso:picasso:2.71828'

ktlint "com.pinterest:ktlint:0.37.2"
}

task ktlint(type: JavaExec, group: "verification") {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,8 @@ fun previewInput() {
tintIcon = { true },
vectorImageId = R.drawable.ic_plane,
caption = "Caption",
showCaption = { true }) {
showCaption = { true }
) {
Text(text = "text", style = MaterialTheme.typography.body1)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ import androidx.ui.core.Alignment
import androidx.ui.core.ContentScale
import androidx.ui.core.Modifier
import androidx.ui.foundation.Image
import androidx.ui.foundation.ScrollableColumn
import androidx.ui.foundation.Text
import androidx.ui.foundation.VerticalScroller
import androidx.ui.foundation.clickable
import androidx.ui.foundation.shape.corner.RoundedCornerShape
import androidx.ui.graphics.Color
Expand Down Expand Up @@ -62,18 +62,16 @@ fun ExploreSection(
style = MaterialTheme.typography.caption.copy(color = crane_caption)
)
Spacer(Modifier.preferredHeight(8.dp))
VerticalScroller(modifier = Modifier.weight(1f)) {
Column {
exploreList.map { ExploreUiModel(it) }.forEachIndexed { index, item ->
ExploreItem(
modifier = Modifier.fillMaxWidth(),
item = item,
onItemClicked = onItemClicked
)
// ------------------- b/137080715
if (index != exploreList.size - 1) {
Divider(color = crane_divider_color)
}
ScrollableColumn(modifier = Modifier.weight(1f)) {
exploreList.map { ExploreUiModel(it) }.forEachIndexed { index, item ->
ExploreItem(
modifier = Modifier.fillMaxWidth(),
item = item,
onItemClicked = onItemClicked
)
// --------------- b/137080715
if (index != exploreList.size - 1) {
Divider(color = crane_divider_color)
}
}
}
Expand All @@ -87,9 +85,11 @@ private fun ExploreItem(
item: ExploreUiModel,
onItemClicked: OnExploreItemClicked
) {
Row(modifier = modifier.clickable(onClick = {
onItemClicked(item.exploreModel)
}).padding(top = 12.dp, bottom = 12.dp)) {
Row(
modifier = modifier
.clickable { onItemClicked(item.exploreModel) }
.padding(top = 12.dp, bottom = 12.dp)
) {
ExploreImageContainer {
if (item.image == null) {
Image(asset = vectorResource(id = R.drawable.ic_crane_logo))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
package androidx.compose.samples.crane.calendar

import androidx.compose.Composable
import androidx.compose.samples.crane.calendar.data.january2020
import androidx.compose.samples.crane.calendar.data.year2020
import androidx.compose.samples.crane.calendar.model.CalendarDay
import androidx.compose.samples.crane.calendar.model.CalendarMonth
Expand All @@ -29,8 +28,8 @@ import androidx.compose.samples.crane.util.SemiRect
import androidx.ui.core.Alignment
import androidx.ui.core.Modifier
import androidx.ui.core.WithConstraints
import androidx.ui.foundation.ScrollableColumn
import androidx.ui.foundation.Text
import androidx.ui.foundation.VerticalScroller
import androidx.ui.foundation.clickable
import androidx.ui.graphics.Color
import androidx.ui.layout.Column
Expand Down Expand Up @@ -59,13 +58,11 @@ fun Calendar(
modifier: Modifier = Modifier,
onDayClicked: (CalendarDay, CalendarMonth) -> Unit
) {
VerticalScroller(modifier = modifier) {
Column {
ScrollableColumn(modifier = modifier) {
Spacer(Modifier.preferredHeight(32.dp))
for (month in year2020) {
Month(month = month, onDayClicked = onDayClicked)
Spacer(Modifier.preferredHeight(32.dp))
for (month in year2020) {
Month(month = month, onDayClicked = onDayClicked)
Spacer(Modifier.preferredHeight(32.dp))
}
}
}
}
Expand Down Expand Up @@ -152,9 +149,9 @@ private fun DaysOfWeek(modifier: Modifier = Modifier) {
private fun Day(day: CalendarDay, onDayClicked: (CalendarDay) -> Unit) {
val enabled = day.status != SelectedStatus.NON_CLICKABLE
DayContainer(
modifier = Modifier.clickable(onClick = {
modifier = Modifier.clickable(enabled) {
if (day.status != SelectedStatus.NON_CLICKABLE) onDayClicked(day)
}, enabled = enabled),
},
backgroundColor = day.status.color(MaterialTheme.colors)
) {
DayStatusContainer(status = day.status) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,16 +105,21 @@ fun DetailsScreen(args: DetailsActivityArg) {
// For the map to work, you need to get an API key from
// https://developers.google.com/maps/documentation/android-sdk/get-api-key
// and put it in the google.maps.key variable of your local properties
AndroidView(resId = R.layout.layout_details_map, postInflationCallback = { view ->
val fragment = (view.context as AppCompatActivity).supportFragmentManager
.findFragmentById(R.id.map)
AndroidView(
resId = R.layout.layout_details_map,
postInflationCallback = { view ->
val fragment = (view.context as AppCompatActivity).supportFragmentManager
.findFragmentById(R.id.map)

(fragment as SupportMapFragment).getMapAsync { map ->
val position = LatLng(args.latitude.toDouble(), args.longitude.toDouble())
map.addMarker(MarkerOptions().position(position).title("Marker in ${args.name}"))
map.moveCamera(CameraUpdateFactory.newLatLng(position))
(fragment as SupportMapFragment).getMapAsync { map ->
val position = LatLng(args.latitude.toDouble(), args.longitude.toDouble())
map.addMarker(
MarkerOptions().position(position).title("Marker in ${args.name}")
)
map.moveCamera(CameraUpdateFactory.newLatLng(position))
}
}
})
)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@ import android.os.Bundle
import androidx.activity.viewModels
import androidx.animation.FloatPropKey
import androidx.animation.Spring.StiffnessLow
import androidx.animation.spring
import androidx.animation.transitionDefinition
import androidx.animation.tween
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.Composable
import androidx.compose.remember
Expand All @@ -29,11 +31,15 @@ import androidx.compose.samples.crane.calendar.launchCalendarActivity
import androidx.compose.samples.crane.data.ExploreModel
import androidx.compose.samples.crane.details.launchDetailsActivity
import androidx.compose.samples.crane.util.observe
import androidx.compose.state
import androidx.ui.animation.DpPropKey
import androidx.ui.animation.transition
import androidx.ui.core.Modifier
import androidx.ui.core.drawOpacity
import androidx.ui.core.setContent
import androidx.ui.layout.Column
import androidx.ui.layout.Spacer
import androidx.ui.layout.Stack
import androidx.ui.layout.padding
import androidx.ui.unit.Dp
import androidx.ui.unit.dp
Expand All @@ -55,29 +61,22 @@ class MainActivity : AppCompatActivity() {
{ launchCalendarActivity(this) }
}

// FIXME: Removing Splash animation because of b/154198289
// Quick explanation: MainContentWrapper is being emitted twice to the screen

// val splashShown = state { SplashState.SHOWN }
// Transition(
// definition = splashTransitionDefinition,
// toState = splashShown.value
// ) { state ->
// Stack {
// LandingScreen(
// modifier = Modifier.drawOpacity(state[splashAlphaKey]),
// splashShownState = splashShown
// )
MainContentWrapper(
// modifier = Modifier.drawOpacity(state[contentAlphaKey]),
// topPadding = state[contentTopPaddingKey],
onExploreItemClicked = onExploreItemClicked,
onDateSelectionClicked = onDateSelectionClicked,
destinations = destinations ?: emptyList(),
viewModel = viewModel
)
// }
// }
val splashShown = state { SplashState.SHOWN }
val transition = transition(splashTransitionDefinition, splashShown.value)
Stack {
LandingScreen(
modifier = Modifier.drawOpacity(transition[splashAlphaKey]),
splashShownState = splashShown
)
MainContentWrapper(
modifier = Modifier.drawOpacity(transition[contentAlphaKey]),
topPadding = transition[contentTopPaddingKey],
onExploreItemClicked = onExploreItemClicked,
onDateSelectionClicked = onDateSelectionClicked,
destinations = destinations ?: emptyList(),
viewModel = viewModel
)
}
}
}
}
Expand Down Expand Up @@ -121,14 +120,14 @@ private val splashTransitionDefinition = transitionDefinition {
this[contentTopPaddingKey] = 0.dp
}
transition {
splashAlphaKey using tween<Float> {
duration = 100
}
contentAlphaKey using tween<Float> {
duration = 300
}
contentTopPaddingKey using physics<Dp> {
splashAlphaKey using tween<Float>(
durationMillis = 100
)
contentAlphaKey using tween<Float>(
durationMillis = 300
)
contentTopPaddingKey using spring<Dp>(
stiffness = StiffnessLow
}
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package androidx.compose.samples.crane.home

import androidx.animation.transitionDefinition
import androidx.animation.tween
import androidx.compose.Composable
import androidx.compose.getValue
import androidx.compose.mutableStateOf
Expand All @@ -27,7 +28,7 @@ import androidx.compose.samples.crane.base.CraneUserInput
import androidx.compose.samples.crane.base.ServiceLocator
import androidx.compose.setValue
import androidx.ui.animation.ColorPropKey
import androidx.ui.animation.Transition
import androidx.ui.animation.transition
import androidx.ui.core.Modifier
import androidx.ui.foundation.Text
import androidx.ui.foundation.clickable
Expand Down Expand Up @@ -73,26 +74,22 @@ fun PeopleUserInput(
)
}

Transition(
definition = transitionDefinition,
toState = peopleState.animationState
) { state ->
val people = peopleState.people
CraneUserInput(
modifier = Modifier.clickable(onClick = {
peopleState.addPerson()
onPeopleChanged(peopleState.people)
}),
text = if (people == 1) "$people Adult$titleSuffix" else "$people Adults$titleSuffix",
vectorImageId = R.drawable.ic_person,
tint = state[tintKey]
val transition = transition(transitionDefinition, peopleState.animationState)
val people = peopleState.people
CraneUserInput(
modifier = Modifier.clickable {
peopleState.addPerson()
onPeopleChanged(peopleState.people)
},
text = if (people == 1) "$people Adult$titleSuffix" else "$people Adults$titleSuffix",
vectorImageId = R.drawable.ic_person,
tint = transition[tintKey]
)
if (peopleState.animationState == PeopleUserInputAnimationState.Invalid) {
Text(
text = "Error: We don't support more than $MAX_PEOPLE people",
style = MaterialTheme.typography.body1.copy(color = MaterialTheme.colors.secondary)
)
if (peopleState.animationState == PeopleUserInputAnimationState.Invalid) {
Text(
text = "Error: We don't support more than $MAX_PEOPLE people",
style = MaterialTheme.typography.body1.copy(color = MaterialTheme.colors.secondary)
)
}
}
}
}
Expand Down Expand Up @@ -138,13 +135,13 @@ private fun generateTransitionDefinition(
this[tintKey] = invalidColor
}
transition(fromState = PeopleUserInputAnimationState.Valid to PeopleUserInputAnimationState.Invalid) {
tintKey using tween<Color> {
duration = 300
}
tintKey using tween<Color>(
durationMillis = 300
)
}
transition(fromState = PeopleUserInputAnimationState.Invalid to PeopleUserInputAnimationState.Valid) {
tintKey using tween<Color> {
duration = 300
}
tintKey using tween<Color>(
durationMillis = 300
)
}
}
Loading

0 comments on commit 3b7c1b7

Please sign in to comment.