Android开发系列(五)Jetpack Compose之Icon & Image

   Icon是用于在界面上显示矢量图标的组件。它提供了很多内置的矢量图标,也支持自定义图标。要使用Icon组件,可以通过指定图标资源的名称或引用来创建一个Icon对象。例如,使用Icons.Default.Home来创建一个默认风格的首页图标。可以通过设置图标的大小、颜色、和点击事件等属性来自定义Icon的外观和行为。

    Image是用于在界面上显示位图图像的组件。它支持从本地资源、网络URL或图像字节数组加载图像。要使用Image组件,可以通过指定图像资源的路径或源来创建一个Image对象。

    下面分别通过示例了解这两个组件的用法。

Icon

    Icon的使用示例如下。

    在Icon函数各个参数的解析如下。

  1. imageVector表示矢量图,这里Icons.Default.Person官方图标库中的图标。
  2. contentDescription描述,用于对该图标的功能,没有描述设置为null即可。
  3. tint 色调,用于设置图标的颜色。
  4. painter, Painter是对可画东西的抽象,可以通过不同的方式创建Painter对象,painterResource从资源文件构造Painter对象。通过该方法可以使得Icon显示本地资源中的图标文件

Image

    Image的使用方法与Icon比较相似,Image主要加载图片,当图片的宽高比例与Image的不一致时,Image通过contentScale可以设置不同的缩放方式,默认情况下,如果您未指定 contentScale

Jetpack Compose 中创建底部导航栏可以使用 `BottomNavigation` 和 `BottomNavigationItem` 组件。以下是创建底部导航栏的步骤: 1. 导入所需的组件: ```kotlin import androidx.compose.foundation.Icon import androidx.compose.foundation.layout.Row import androidx.compose.material.BottomNavigation import androidx.compose.material.BottomNavigationItem import androidx.compose.material.IconToggleButton import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.res.painterResource import androidx.navigation.NavHostController import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.compose.rememberNavController ``` 2. 创建底部导航栏的选项卡: ```kotlin sealed class BottomNavItem(val route: String, val icon: ImageVector, val title: String) { object Home : BottomNavItem("home", Icons.Filled.Home, "Home") object Search : BottomNavItem("search", Icons.Filled.Search, "Search") object Profile : BottomNavItem("profile", Icons.Filled.Person, "Profile") } val bottomNavItems = listOf( BottomNavItem.Home, BottomNavItem.Search, BottomNavItem.Profile ) ``` 3. 创建底部导航栏: ```kotlin @Composable fun BottomNavigationBar( navController: NavHostController ) { var selectedTab by remember { mutableStateOf(BottomNavItem.Home) } BottomNavigation { val navBackStackEntry by navController.currentBackStackEntryAsState() val currentRoute = navBackStackEntry?.destination?.route bottomNavItems.forEach { screen -> BottomNavigationItem( icon = { Icon(screen.icon, contentDescription = null) }, label = { Text(screen.title) }, selected = currentRoute == screen.route, onClick = { selectedTab = screen navController.navigate(screen.route) { popUpTo(navController.graph.startDestinationId) launchSingleTop = true } } ) } } } ``` 在 `BottomNavigationBar` 中,我们首先定义了一个 `selectedTab` 变量,用于跟踪当前选中的选项卡。然后,我们使用 `BottomNavigation` 组件创建底部导航栏,并使用 `BottomNavigationItem` 组件创建每个选项卡。我们使用 `navController` 控制导航,在点击选项卡时,更新 `selectedTab` 变量,然后导航到对应的目的地。 最后,我们可以将 `BottomNavigationBar` 组件添加到 `Scaffold` 中,创建一个带有底部导航栏的应用程序界面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值