上一篇文章我们讲到了Compose Bloom项目开发之前的一些配置及沉浸式状态栏的修改。
这篇文章接着上文,会介绍欢迎页的开发。
需要实现的页面效果如下所示
根据UI图,我们可以可知,该页面是由背景和前面部分部分组成的。
首先,我们需要先创建WelcomePage.kt
@Composable
fun WelcomePage() {
}
class MainActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)WindowCompat.setDecorFitsSystemWindows(window, false)val controller = WindowCompat.getInsetsController(window, window.decorView)controller?.isAppearanceLightStatusBars = truesetContent {BloomTheme {WelcomePage() // <-------- 设置为WelcomePage}}}
}
由设计稿可知,页面的背景色是pink100
@Preview
@Composable
fun WelcomePage() {Box(modifier = Modifier.fillMaxSize().background(color = pink100)){}
}
我们使用快捷键 ctrl + shift + F5
(Windows
,其他系统请自行百度),可以预览到效果
我们之前添加的资源文件里,ic_light_welcome_bg.xml
就是白色的不规则形状图片
将其设置到页面中
@Composable
private fun BackgroundImage() {Image(painter = rememberVectorPainter(image = ImageVector.vectorResource(id = R.drawable.ic_light_welcome_bg)),modifier = Modifier.fillMaxSize(),contentDescription = "")
}
效果如下所示
我们查看之前添加的资源文件里,ic_light_welcome_illos.xml
就是树叶的图片
我们将图片设置到页面中
@Composable
fun LeafImage() {Image(painter = rememberVectorPainter(image = ImageVector.vectorResource(id = R.drawable.ic_light_welcome_illos)),contentDescription = "")
}
可以看到效果
发现这个页面是在最顶端,我们期望改变一下它的位置,可以给他设置padding
在Compose里面,没有margin,而是通过padding的调用顺序,从而实现margin和padding的效果
这里我们用到了Column
布局,设置了align(Alignment.End))
靠右摆放,所以把Modifier抽取了出来
@Composable
fun WelComeContent() {Column(modifier = Modifier.fillMaxSize()) {LeafImage(Modifier.padding(top = 88.dp, start = 88.dp).align(Alignment.End))}
}@Composable
fun LeafImage(modifier: Modifier) {Image(painter = rememberVectorPainter(image = ImageVector.vectorResource(id = R.drawable.ic_light_welcome_illos)),modifier = modifier,contentDescription = "")
}
效果如下
Bloom这几个字也是用图片实现的,我们把它加上
Spacer(modifier = Modifier.height(48.dp))
BloomTitle(modifier = Modifier.align(Alignment.CenterHorizontally))@Composable
fun BloomTitle(modifier: Modifier) {Image(modifier = modifier,painter = rememberVectorPainter(image =ImageVector.vectorResource(id = R.drawable.ic_light_logo),), contentDescription = "")
}
效果如下
Spacer(modifier = Modifier.height(8.dp))
BloomSubTitle(modifier = Modifier.align(Alignment.CenterHorizontally))@Composable
fun BloomSubTitle(modifier: Modifier) {Text(text = "Beautiful home garden solutions",style = subtitle1,color = gray,modifier = modifier)
}
效果如下所示
Spacer(modifier = Modifier.height(40.dp))
CreateAccountButton()@Composable
fun CreateAccountButton() {Button(onClick = { },modifier = Modifier.padding(horizontal = 16.dp).fillMaxWidth().height(48.dp).clip(medium),colors = ButtonDefaults.buttonColors(pink900)) {Text(text = "Create Account", style = button, color = white)}
}
效果如下
Spacer(modifier = Modifier.height(24.dp))
LoginButton()@Composable
fun LoginButton() {Text(text = "Log in", style = button, color = pink900)
}
最终效果如下
至此,我们就完成了欢迎页的界面,下一篇文章我们将接着介绍登录页界面的实现。(待更新)