当前位置: 首页 > wzjs >正文

桂林网站建设短信营销

桂林网站建设,短信营销,崇文企业网站建设公司,莆田网站建设电话androidx.compose.material3 我用1.2.0版本的Slider非常好用,但是升级到1.3.2后滑轨后面多了个点,滑块背景也移除不掉而且默认透明了我暂时没有找到让他不透明。所以自定义了一个先用着。 Composable fun CustomSlider(state: CustomSliderState,modifi…

androidx.compose.material3 我用1.2.0版本的Slider非常好用,但是升级到1.3.2后滑轨后面多了个点,滑块背景也移除不掉而且默认透明了我暂时没有找到让他不透明。所以自定义了一个先用着。

@Composable
fun CustomSlider(state: CustomSliderState,modifier: Modifier = Modifier,trackHeight: Dp = 4.dp,thumbSize: Dp = 24.dp,trackColor: Color = Color.Gray,progressColor: Color = Color.Blue,thumbColor: Color = Color.White,onValueChange: ((Float) -> Unit)? = null,onValueChangeFinished: ((Float) -> Unit)? = null
) {var sliderWidth by remember { mutableFloatStateOf(0f) }Box(modifier = modifier.height(thumbSize + 16.dp) // 确保足够高度容纳滑块.pointerInput(Unit) {awaitEachGesture {val event = awaitPointerEvent(PointerEventPass.Initial)if (event.changes.firstOrNull()?.changedToDown() == true) {val down = awaitFirstDown(requireUnconsumed = true)state.setPressed(true)val newPosition = (event.changes.first().position.x / sliderWidth).coerceIn(0f, 1f)val newValue = state.range.start + newPosition * (state.range.endInclusive - state.range.start)state.updateValue(newValue)onValueChange?.invoke(state.value)var drag: PointerInputChange?do {drag = awaitTouchSlopOrCancellation(down.id) { change, _ ->if (change.positionChange() != Offset.Zero) change.consume()}} while (drag != null && !drag.isConsumed)if (drag != null) {val dragResult = drag(drag.id) {val newPosition = (it.position.x / sliderWidth).coerceIn(0f, 1f)val newValue = state.range.start + newPosition * (state.range.endInclusive - state.range.start)state.updateValue(newValue)onValueChange?.invoke(state.value)}// 确保完成回调被触发if (!dragResult || drag.isConsumed) {onValueChangeFinished?.invoke(state.value)}} else {onValueChangeFinished?.invoke(state.value)}}}},contentAlignment = Alignment.CenterStart) {// 绘制轨道(Track)Canvas(modifier = Modifier.fillMaxWidth().clip(CircleShape).height(trackHeight).align(Alignment.CenterStart).onSizeChanged { size ->sliderWidth = size.width.toFloat()}) {// 背景轨道drawRect(color = trackColor,size = Size(size.width.toFloat(), trackHeight.toPx()))// 进度轨道drawRect(color = progressColor,size = Size(width = (state.value - state.range.start) / (state.range.endInclusive - state.range.start) * size.width,height = trackHeight.toPx()))}// 滑块(Thumb)根据你自己需求替换Box(modifier = Modifier.offset {IntOffset(x = ((state.value - state.range.start) / (state.range.endInclusive - state.range.start) * sliderWidth - thumbSize.toPx()/2).toInt(),y = 0)}.shadow(4.dp, CircleShape).size(thumbSize).background(thumbColor, CircleShape))}
}class CustomSliderState(initialValue: Float,internal val range: ClosedFloatingPointRange<Float> = 0f..1f
) {private val _value = mutableFloatStateOf(initialValue.coerceIn(range))private val _isPressed = mutableStateOf(false) // 新增按下状态val value: Floatget() = _value.floatValueval isPressed: Boolean // 暴露给外部get() = _isPressed.valuefun updateValue(newValue: Float) {_value.floatValue = newValue.coerceIn(range)}fun setPressed(pressed: Boolean) { // 更新按下状态_isPressed.value = pressed}
}@Composable
fun rememberCustomSliderState(initialValue: Float = 0f,range: ClosedFloatingPointRange<Float> = 0f..1f
): CustomSliderState {return remember { CustomSliderState(initialValue, range) }
}

 使用

 val sliderState = rememberCustomSliderState(initialValue = 0.5f,range = 0f..100f)CustomSlider(state = sliderState,modifier = Modifier.fillMaxWidth().padding(horizontal = 36.dp),trackHeight = 12.dp,thumbSize = 24.dp,trackColor = Color.LightGray,progressColor = Color(0xFF6200EE),thumbColor = Color.White,onValueChange = {Log.e("onValueChange","float---$it")},onValueChangeFinished = {Log.e("onValueChangeFinished","float---$it")})

http://www.dtcms.com/wzjs/163760.html

相关文章:

  • 学校建设微网站的方案设计站长工具seo推广 站长工具查询
  • 网店运营入门基础知识专业网站优化外包
  • wordpress 上传漏洞快手seo
  • 沧州网站制作教程百度地图排名可以优化吗
  • 做网站都需要买什么千博企业网站管理系统
  • 西安未央区做网站宁波seo搜索引擎优化公司
  • 招远网站建设公司什么软件可以免费引流
  • 做雇主品牌的网站seo必备软件
  • 网站里的动画是什么软件做的网络整合营销推广
  • WordPress抓取文章seo与sem的区别
  • 网站的弹窗怎么做关键词排名怎么做上去
  • 用dw做静态网站的步骤公司推广
  • 网站建站主机成都seo技术经理
  • 网站建设前的市场分析怎么写上海百度推广方案
  • 网站图片加alt标签站长之家权重
  • 东莞 网站建设自媒体平台注册下载
  • 软件平台拓扑图厦门网站推广优化哪家好
  • 网站建设实训存在的问题快速seo软件
  • 网站禁止复制代码惠州seo推广外包
  • 做教育的网站需要资质吗品牌策划方案范文
  • b2bb2c网站电子商务网站建设前期方案域名注册哪个平台比较好
  • 做网站运营经理的要求私域运营软件
  • php网站开发视频教学搭建一个网站的流程
  • 健康养老网站建设关键词搜索推广排行榜
  • 江西赣州最新疫情昆明seo推广外包
  • 行业做门户网站挣钱吗最知名的网站推广公司
  • 同ip网站有什么危害seo推广策略
  • 防伪码查询网站怎么做的谷歌搜索引擎入口363
  • 网站建设需要多少资金网站设计专业的公司
  • 做一个公司网站软文营销的经典案例