@@ -14,6 +14,7 @@ import androidx.compose.foundation.layout.Arrangement
1414import androidx.compose.foundation.layout.Box
1515import androidx.compose.foundation.layout.Column
1616import androidx.compose.foundation.layout.WindowInsets
17+ import androidx.compose.foundation.layout.aspectRatio
1718import androidx.compose.foundation.layout.fillMaxHeight
1819import androidx.compose.foundation.layout.fillMaxSize
1920import androidx.compose.foundation.layout.fillMaxWidth
@@ -47,6 +48,7 @@ import androidx.compose.ui.zIndex
4748import androidx.constraintlayout.compose.ConstraintLayout
4849import androidx.constraintlayout.compose.Dimension
4950import androidx.hilt.navigation.compose.hiltViewModel
51+ import com.getcode.LocalTopBarPadding
5052import com.getcode.R
5153import com.getcode.manager.BottomBarManager
5254import com.getcode.manager.TopBarManager
@@ -57,6 +59,7 @@ import com.getcode.theme.CodeTheme
5759import com.getcode.theme.White
5860import com.getcode.util.IntentUtils
5961import com.getcode.util.addIf
62+ import com.getcode.util.debugBounds
6063import com.getcode.util.measured
6164import com.getcode.util.swallowClicks
6265import com.getcode.view.components.AccessKeySelectionContainer
@@ -135,10 +138,6 @@ fun AccessKey(
135138 words = dataState.words.joinToString(" " )
136139 )
137140
138- var textHeight by remember {
139- mutableStateOf(0 .dp)
140- }
141-
142141 AccessKeySelectionContainer (
143142 modifier = Modifier
144143 .fillMaxSize()
@@ -154,7 +153,8 @@ fun AccessKey(
154153 modifier = Modifier
155154 .fillMaxSize()
156155 .padding(horizontal = CodeTheme .dimens.inset)
157- .padding(vertical = CodeTheme .dimens.grid.x4),
156+ .padding(vertical = CodeTheme .dimens.grid.x4)
157+ .measured { buttonHeight = it.height },
158158 ) {
159159 Column (modifier = Modifier
160160 .align(Alignment .BottomCenter )
@@ -199,25 +199,36 @@ fun AccessKey(
199199 modifier = Modifier
200200 .align(Alignment .TopCenter )
201201 .fillMaxHeight()
202- .padding(bottom = buttonHeight)
203- ,
204- verticalArrangement = Arrangement .Center ,
202+ .padding(LocalTopBarPadding .current)
203+ .padding(bottom = buttonHeight + CodeTheme .dimens.grid.x4),
205204 horizontalAlignment = Alignment .CenterHorizontally
206205 ) {
207- AnimatedVisibility (
208- visibleState = isAccessKeyVisible,
209- enter = fadeIn(animationSpec = tween(300 , 0 )),
210- exit = fadeOut(animationSpec = tween(300 , 0 ))
206+ Column (
207+ modifier = Modifier
208+ // highly specific aspect ratio from iOS :)
209+ .aspectRatio(0.607f , matchHeightConstraintsFirst = true )
210+ .fillMaxWidth()
211+ .weight(1f ),
212+ verticalArrangement = Arrangement .Center ,
213+ horizontalAlignment = Alignment .CenterHorizontally
211214 ) {
212- dataState.accessKeyCroppedBitmap?.let { bitmap ->
213- Image (
214- modifier = Modifier
215- .fillMaxWidth()
216- .weight(1f )
217- .scale(selectionState.scale.value),
218- bitmap = bitmap.asImageBitmap(),
219- contentDescription = dataState.wordsFormatted,
220- )
215+ AnimatedVisibility (
216+ visibleState = isAccessKeyVisible,
217+ enter = fadeIn(animationSpec = tween(300 , 0 )),
218+ exit = fadeOut(animationSpec = tween(300 , 0 ))
219+ ) {
220+ dataState.accessKeyCroppedBitmap?.let { bitmap ->
221+ Image (
222+ modifier = Modifier
223+ .aspectRatio(0.607f , matchHeightConstraintsFirst = true )
224+ .fillMaxWidth()
225+ .weight(1f )
226+ .scale(selectionState.scale.value),
227+ bitmap = bitmap.asImageBitmap(),
228+ contentScale = ContentScale .Crop ,
229+ contentDescription = dataState.wordsFormatted,
230+ )
231+ }
221232 }
222233 }
223234
0 commit comments