目录
我在Google Playstore上的应用程序
github代码
简介
- 本系列将是对我在开发Android应用程序时面临的任何问题或任何观察结果的非正式演示。本系列中的每个博客文章都将是独特的,并且与其他博客文章是独一无二的,因此请随时环顾四周。
这两件事
1)加载屏幕
2)禁用购买按钮
- 对您来说,这些显而易见的开发人员可能会显而易见,但是,这可能对像我一样刚开始的人有帮助。通过实现这两个功能,我们的应用程序将开始表现得像更大,更专业的应用程序
1)加载屏幕
- 如果您查看THIS代码示例。您会注意到没有加载屏幕,只是简单的等待,并且出现了Google Play计费库模式。但是,这很好,如果用户单击订阅按钮,并且没有迹象表明正在发生加载。
创建一个简单的加载屏幕
- 可以在类似的JetPack中创建一个简单的加载屏幕:
Box(modifier = Modifier.fillMaxSize()){
// The rest of your compose code
//will explain isUserBuying later
val isUserBuying = billingViewModel.state.value.userBuying
if(isUserBuying){
Spacer(
modifier = Modifier
.matchParentSize()
.background(color = Color.Gray.copy(alpha = .7f))
)
CircularProgressIndicator(
color= MaterialTheme.colors.onSecondary,
modifier = Modifier
.align(Alignment.Center)
.size(60.dp)
)
}
}
-
垫片将用轻透明的灰色覆盖整个屏幕,而
CircularProgressIndicator
在屏幕中央旋转。 -
现在,
isUserBuying
是一个有条件的我在视图模式中存储的条件:
data class BillingUiState(
val userBuying:Boolean = false
)
private val _uiState = mutableStateOf(BillingUiState())
val state = _uiState // exposed to the UI
- 每当单击buy()方法时,我们只需将其设置为false:
fun buy(
productDetails: ProductDetails,
currentPurchases: List<Purchase>?,
activity: Activity,
tag: String
) {
_uiState.value = _uiState.value.copy(
userBuying = true
)
// the rest of the buy method
}
- buy()方法将接触到Google Play计费库,并导致购买模式像这样弹出:
何时关闭加载屏幕。
-
当模态弹出时,我们的应用进入onPause()生命周期状态。
-
这意味着用户将必须通过成功购买或解散模态来与模式进行交互。这种交互将使我们的应用程序称为onResume方法。因此,要关闭加载屏幕,我们应该在
onResume()
方法中这样做:
override fun onResume(owner: LifecycleOwner) {
_uiState.value = _uiState.value.copy(
userBuying = false
)
}
- 我想指出的是,只有当您的ViewModel意识到生命周期时,这才能起作用。
2)禁用购买按钮
- 首次单击后不禁用“购买”按钮,则可能会多次按下它。引起多种购买模式的推出,这可能会使用户感到困惑。为了确保这不会发生,我们只是将有条件地放在一个可以组合的按钮的OnClick方法中:
Button(
onClick={
if(!isUserBuying){
billingViewModel.state.value.productDetails?.let{
billingViewModel.buy(
productDetails = it,
currentPurchases = null,
activity = activity,
tag = "calf_tracker_premium"
)
}
}
}
){
Text("Upgrade $10.00", fontSize = 30.sp)
}
-
使用
!isUserBuying
,我只是说明,如果用户已经单击按钮删除方法调用到billingViewModel.buy()
。 -
从技术上讲,我们可以删除用户一起单击按钮的能力。通过将有条件的条件移至按钮的
enabled
参数,但我真的不喜欢UI。因此,我选择简单地删除对方法的调用。
回顾
- 为了结束事情,要使我们的应用程序更加专业,我们需要确保我们做两件事:
1)添加加载屏幕
2)首先单击后禁用购买按钮
结论
- 感谢您抽出宝贵的时间阅读我的博客文章。如果您有任何疑问或疑虑,请在下面发表评论或在Twitter上与我联系。