问题描述
我正在像这样在android中动态创建一些按钮。
private fun createButton() {
val randomHeight = (100..1000).random()
val button = Button(this,null,R.attr.borderlessButtonStyle)
val lp = RelativeLayout.LayoutParams((1080 / 20),randomHeight)
lp.setMargins(0,0)
button.id = btnId + 1
button.setBackgroundColor(ContextCompat.getColor(this,R.color.colorAccent))
if (btnId > 0)
lp.addRule(RelativeLayout.RIGHT_OF,btnId)
root_layout.addView(button,lp)
btnId++
button.text = lp.height.toString()
buttonList.add(button)
}
现在在onCreate方法中,我将循环调用此createButton函数,直到布局的宽度达到这样的设备的宽度为止。root_layout的宽度是自动换行的内容,因此当按钮强制布局扩展时,它会产生非常酷的效果。 ..
root_layout.layoutTransition.enableTransitionType(LayoutTransition.CHANGE_APPEARING)
val displayWidth = getdisplayWidth()
GlobalScope.launch(dispatchers.Main) {
// while (root_layout.width < displayWidth -1) finite but does not give animation
//infinite but gives animation
while (root_layout.width <= displayWidth) {
Log.d("TAG","onCreate: ${root_layout.width} + $displayWidth ")
createButton()
delay(100)
}
}
也单击按钮,我会像这样随机更改所有按钮的高度
btn_ran -> {
for (i:Button in buttonList) {
if (!isRunningSearch) {
var r = (100..1000).random()
i.layoutParams.height = r
i.text = r.toString()
i.requestLayout()
}
}
}
现在的问题是onCreate中的while循环将变为无限,但是我的btn_ran函数可以很好地工作,因为按钮的高度随动画而变化,但是只有当我的while循环以某种方式中断了而我的while循环变为无限时,这种情况才会发生btn_ran函数有效,但没有任何动画。
我想将while循环运行到仅设备宽度或固定的时间,但是我也希望按钮像动画一样在无限循环中改变高度。
这里有两个gif,一个有无限循环和动画,另一个是没有无限循环而没有动画...
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)