小编Vig*_*aut的帖子

如何像 Vercel 一样在 AWS 上部署 NextJS?

我想使用 AWS CDK 在 AWS 上部署 NextJS 进行 POC,并且正在寻找选项。在 NextJS 文档中,它说我们只需创建一个实例并运行npm run build && npm start,它就会为我们启动服务。然而,这并不是最优化的部署方式。

Vercel 以尽可能最优化的方式部署它: 在此输入图像描述

我如何使用 AWS 做同样的事情?如何通过 Cloudfront CDN 提供静态资产和页面,以及如何通过 Lambda 或 ECS 提供服务器端呈现的页面和 API?是否有我可以遵循的分步指南来拆分相同的构建文件?

我探索过的其他选择

  • AWS Amplify:由于它是一项高级服务,我觉得自己做这一切会便宜很多,并且在 CDK 中给我更大的灵活性(我不确定 Amplify 在幕后如何工作以在 S3 + 上部署 nextjs 资产) Cloudfront + Lambda 堆栈)
  • 无服务器框架:有一个插件可以部署nextjs。但是,我想完全控制部署,并且不想依赖任何外部框架。想要使用 AWS CDK 在本地完成此操作。

任何使用 AWS CDK 本地执行此操作的指示都会有所帮助。谢谢。

amazon-web-services next.js vercel aws-cdk

10
推荐指数
1
解决办法
4841
查看次数

如何在 Android jetpack Compose 中设置默认焦点项

我的屏幕上有几个可聚焦的电视小部件。

在此输入图像描述 每次我都必须点击方向键才能Box01集中注意力。

有谁知道如何Box01默认设置焦点? 在此输入图像描述

我的代码:

@Composable
fun DefaultFocusSample(){
    Row(Modifier.padding(100.dp)) {
        FocusBox("Box01")
        Spacer(modifier = Modifier.padding(10.dp))
        FocusBox("Box02")
        Spacer(modifier = Modifier.padding(10.dp))
        FocusBox("Box03")
        Spacer(modifier = Modifier.padding(10.dp))
        FocusBox("Box04")
    }

}
@Composable
fun FocusBox(text:String){
    var color by remember { mutableStateOf(White) }
    Box(
        Modifier
            .onFocusChanged {
                color = if (it.isFocused) Green else White }
            .focusable()
            .border(2.dp,color)
    ){
        Text(text = text,
        modifier = Modifier.padding(10.dp))
    }
}
Run Code Online (Sandbox Code Playgroud)

android kotlin android-tv android-jetpack-compose android-jetpack-compose-tv

6
推荐指数
1
解决办法
3362
查看次数

位置:滚动一定量后粘性不起作用

我正在尝试创建一个布局,其中 a 中的第一列和最后一列div是粘性的。当我滚动一定数量时,最左边的列超出了左侧限制。为什么会发生这种情况以及如何解决它?

当您滚动到最右侧时,您可以看到红色列跳出框。

示例代码笔:https://codepen.io/vighnesh-google/pen/WNzjvqN

示例代码:

.slider {
  width: 100%;
  position: relative;
  overflow: auto;
}

.header,
.body {
 display: flex;
}

.item {
  width: 20%;
  height: 100px;
  background: yellow;
  border: 1px solid black;
  
  flex-grow: 0;
  flex-shrink: 0;
}

.sticky-item-left {
  position: sticky;
  left: 0;  
  background: red;
}

.sticky-item-right {
  position: sticky;
  right: 0;
  background: green;
}
Run Code Online (Sandbox Code Playgroud)
<div class="slider">
  <div class="header">
    <div class="item sticky-item-left"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div> …
Run Code Online (Sandbox Code Playgroud)

html css sticky

6
推荐指数
1
解决办法
4699
查看次数

如何在关注 TVLazyRow 的同时始终关注第一项?

我正在尝试实现一个 TVLazyRow,当我们关注该行上方其他可组合项的行时,它必须始终首先关注第一个项目。目前,按下时,焦点将转到行中位于上面可组合项正下方的项目。我怎样才能实现这种行为?

这是我的代码以获取更多上下文:

val tvListState = rememberTvLazyListState()
val coScope = rememberCoroutineScope()

TvLazyRow(
        horizontalArrangement = Arrangement.spacedBy(15.dp),
        state = tvListState,
        modifier = modifier
            .fillMaxHeight()
            .padding(end = 5.dp)
            .onFocusChanged {
                if (it.isFocused) {
                    coScope.launch {
                        tvListState.scrollToItem(0)
                    }
                }
            }, pivotOffsets = PivotOffsets(0f)
) { *items* }
Run Code Online (Sandbox Code Playgroud)

android-tv android-jetpack android-jetpack-compose android-jetpack-compose-tv

4
推荐指数
1
解决办法
1423
查看次数

修复 Jetpack Compose 的 TvLazyRow/TvLazyColumn 中给定枢轴处的项目

我正在使用jetpack compose for tv 库TvLazyRow中的可组合项,并使用PivotOffsets将焦点项目定位在行中的固定位置。

当我将行滚动到最后时,不遵守固定位置值,并且可聚焦的项目会转到最后。

即使滚动到末尾或开头,如何保持位置固定?

观察到的行为:

期望的行为:

android-tv android-jetpack-compose android-jetpack-compose-tv

3
推荐指数
1
解决办法
548
查看次数

使用 Jetpack Compose 在 Android TV 上启用系统声音

你好 Stack Overflow 社区,

我目前正在使用 Jetpack Compose 开发 Android TV 应用程序,但遇到了一个我似乎无法找到解决方案的问题。

在传统的 Android 开发中,我可以轻松地使用 AudioManager 类来处理系统声音。然而,随着过渡到 Jetpack Compose,我不知道如何做同样的事情。

这是我在传统视图系统中使用的典型方法:

AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
audioManager.playSoundEffect(Sounds.DISMISS);
Run Code Online (Sandbox Code Playgroud)

如何在 Jetpack Compose 中实现同等功能?任何帮助将不胜感激。如果需要任何其他信息,我非常乐意提供。

先感谢您。

(它不起作用:)

<resources>
    <style name="Theme.xxx" parent="android:Theme.Material.Light.NoActionBar">
        <item name="android:soundEffectsEnabled">true</item>
    </style>
</resources>
Run Code Online (Sandbox Code Playgroud)

android android-tv android-jetpack android-jetpack-compose android-jetpack-compose-tv

3
推荐指数
1
解决办法
324
查看次数

ComposeView 抢走了 AndroidTV 内容的焦点

我正在尝试在现有的 AndroidTV 应用程序中使用 Jetpack Compose。我需要制作一个带有麦克风图标的按钮,如果它聚焦,它的颜色就会改变。像这样^

不专心

在此输入图像描述

专注

在此输入图像描述

这是我的 ComposeView

<androidx.compose.ui.platform.ComposeView
    android:id="@+id/micBtn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>
Run Code Online (Sandbox Code Playgroud)

这是我的片段中的代码

binding.micBtn.setContent {
    var buttonResId by remember { mutableStateOf(R.drawable.speech_recognition_button_unfocused) }
    IconButton(
        modifier = Modifier
            .size(60.dp)
            .onFocusChanged {
                buttonResId = if (it.isFocused) {
                    R.drawable.speech_recognition_button_focused
                } else {
                    R.drawable.speech_recognition_button_unfocused
                }
            },
        onClick = onClick,
    ) {
        Icon(
            painter = painterResource(id = buttonResId),
            contentDescription = null,
            tint = Color.Unspecified,
        )
    }
}
Run Code Online (Sandbox Code Playgroud)

看起来不错,对吧?问题是,当我尝试关注此按钮时,焦点首先转到AndroidComposeView项目(根据我的GlobalFocusListener)。只有我的第二个操作(单击、方向键导航)才能使我的内容集中。

所以,出于某种原因,内部AndroidComposeView窃取了我的注意力Content

有什么办法可以防止这种行为吗?我只需要关注我的内容,而不是AndroidComposeView包装。

android android-tv android-jetpack-compose android-jetpack-compose-tv

3
推荐指数
1
解决办法
542
查看次数

如何使用 jetpack compose 设置按钮的焦点状态?

compose_version = '1.0.0-beta02'。

我可以通过 FocusRequester 设置焦点状态 TextField,但 Button 不能。

        val requester1 = FocusRequester()
       
        TextField(value = text1,
            { newValue ->
                text1 = newValue
            },
            modifier = Modifier
                .focusable(true)
                .focusRequester(requester1)
                .background(focusedColor1)
                .onFocusChanged {
                    focusedColor1 = if (it.isFocused) {
                        text1 = "TextField1 focused"
                        Color.Red
                    } else {
                        text1 = "TextField1 unfocused"
                        Color.Green
                    }
                }

        )
Run Code Online (Sandbox Code Playgroud)

将调用 TextField 的“onFocusChanged”方法。

        val requester3 = FocusRequester()
        Button(
            onClick = {
                requester3.requestFocus()

            },
            modifier = Modifier
                .focusModifier()
                .focusable(true)
                .focusRequester(requester3)
                .onFocusEvent {
                    Toast
                        .makeText(
                            context,
                            "Button onFocusEvent it.isFocused:${it.isFocused}. ${it.name}", …
Run Code Online (Sandbox Code Playgroud)

android android-tv android-jetpack-compose android-compose-button android-jetpack-compose-tv

2
推荐指数
1
解决办法
2387
查看次数