新的方式
自2007
年11
月诞生以来,Android已经走过了17个年头。
Android的应用开发语言从最开始的Java变成了现在的Kotlin,而且布局方式也从过去的XML命令式
,变成了现在的Jetpack Compose声明式
。
Jetpack Compose刚推出不久,其应用前景还不明朗,在未来的很长一段时间内应该会和目前基于XML
的UI
并存,这里仅以一个小Demo
作简单介绍。
删除原@Composable
相关的代码,添加下面的代码。
package com.funcun.mobile.android.helloworld
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.sp
import com.funcun.mobile.android.helloworld.ui.theme.HelloWorldTheme
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContent {
HelloWorldTheme {
}
}
}
}
@Composable
fun GreetingText(message: String, from: String, modifier: Modifier = Modifier) {
Text(
text = message,
fontSize = 62.sp,
lineHeight = 100.sp,
)
Text(
text = from,
fontSize = 36.sp
)
}
@Preview(showBackground = true)
@Composable
fun GreetingPreview() {
HelloWorldTheme {
GreetingText(message = "Happy Birthday Bear!", from = "From Tom")
}
}
前些年出现了一种叫做 认养一头牛 的新型生鲜预售模式。所以,同为生鲜农产品电商的业务方也希望借鉴这一模式,只不过这里是把“牛”换成了果树和羊。
认养功能
当浏览小程序首页时,会看到带有 认养 字样的商品:
因为这是一款C2C应用,所以也就不用区分所谓用户端和商户端了。
比较遗憾的是,由于某些客观原因,该应用的原型已经遗失,就只好拿切出的高保真图片代替原型了。
该应用的主要功能包括:
-
用户发布需求并指定时限和酬劳;
-
接单者可以在指定范围内查找有效订单,并决定是否接单;
-
轻社交的吐槽功能,主要是为了发现并满足潜在需求;
-
当交易双方出现矛盾时,任何一方都可以发起仲裁,仲裁会显示交易双方的原始需求、交易金额及利益冲突点,仲裁结果由所有围观群众投票决定,APP不会干预,但APP最终会把交易金额全部转给得票数多的一方:如果是接单者则获得全部酬劳,如果是发单者则可返还全部佣金。
商户端APP
由于受业务形态的限制,所有的商户能提供的服务都是在线下的店铺内完成的。所以,除了老板可能需要远程了解一下经营状态之外,其他与店铺端服务相关的角色对于移动端APP应用都没有任何需求。
基于以上情况,本产品从一开就没有将精力投入到商户端APP的开发中,仅仅对需求做了一些简单规划,如下图所示:
用户端APP
用户端APP的功能共分为四个部分:【服务】、【出行】、【爱车】和【我的】,其中:
-
服务:聚合了周边商家所能提供的产品或服务,用户可在此下单购买所需;
-
出行:包括地图、寻车、天气信息、行车记录仪监控视频(OBD配套产品)等功能;
-
爱车:包括车辆信息、车况信息、保养记录和报警记录等功能;
-
我的:包括车主信息、车库、订单、行程、钱包、收藏、消息通知等功能。
APP
的作用有这么几个。
-
获取服务端的佩戴者数据,而这些数据是通过手表采集的。因为手表资源有限,所以注入心率和运动数据也仅仅是展示当前的测量值,而历史记录则都存储在了服务器中。例如,佩戴者自己想知道过去一段时间的运动量或心率波动情况,就可以通过APP从服务器中获取。
-
佩戴者的亲友想知道当前佩戴者的位置,可以通过APP给手表发送定位指令。这些指令都是从APP发出,然后经过服务器中转后,再发给手表的,APP与手表除了蓝牙连接之外,是无法直接通信的。
-
可以将佩戴者的数据与正常数据进行比对,发现健康风险或异常状况,起到一个参照作用,同时还可以给出一些有用的建议。
-
APP
可以作为联系佩戴者亲友的一种备用手段。
页面布局
布局其实就是容器组件
解决怎么摆放普通组件
的问题。
容器组件
本质上是一颗树型结构。
在开发中通过build()
构建的整个界面也是一棵树,它和组件都可以通过参数进行初始化。
@Component
struct 自定义组件名 {
// 成员变量和方法
build() {
容器组件1() {
组件2()...属性设置;
容器组件3([参数]) {
组件5()...属性设置;
组件6()...属性设置;
}
组件4()...属性设置;
}...属性设置;
}
}