- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有一个控制 android 服务的开关:当Switch处于“on”状态时,表示服务正在运行,当开关处于“关闭”位置时,表示服务未运行。此外,当用户点击 Switch 时,它应该切换服务(因此切换 Switch 的显示状态,因为如前所述,Switch 的显示状态正在跟踪服务的状态)。
方法 #1:为 Switch 提供一个 onCheckedChanged
监听器来打开或关闭服务取决于新的选中状态。
我不喜欢方法#1,因为当用户通过点击开关打开服务时,在服务实际启动之前,我不希望它看起来像是打开的,这可能不是立即的(它可能根本无法成功启动,但为了简单起见,我将在这里忽略这种可能性)。同样,当用户关闭服务时,我不希望 Switch 看起来像是关闭了直到服务实际关闭。
方法#2:点击开关切换服务而不改变显示状态,并且仅在通知服务已成功启动或关闭时切换显示状态。
我也不喜欢方法 #2(即使我知道如何实现它),因为用户不明白立即反馈水龙头被识别,此外,如果服务没有成功更改状态,则根本没有反馈。我认为那很糟糕。
方法 #3:点击 Switch 会立即切换拇指位置但不会切换颜色并切换服务,并使 Switch 的颜色跟踪服务的实际状态。因此,颜色变化可能会相对于拇指位置变化有所延迟。
这意味着 Switch 将有 4 种可能的视觉状态,而不是 2 种:
我喜欢方法 3 的想法。最干净的实现方式是什么?
在我看来,我可能必须安装两个监听器:
onCheckedChanged
监听器,它允许拇指改变位置像往常一样,但将 Switch 的颜色设置为与通常情况相反的颜色(这样它就不会改变颜色),并切换服务我确定我可以想出如何实现服务启动或关闭的通知。并且请注意,我不想更改默认的拇指位置 行为。所以我真的认为我需要知道的是:如何临时更改“打开”开关以具有“关闭”配色方案,反之亦然?
我的印象是这可能涉及调用 Switch 的一个或多个方法setTint()
,setTintList()
,setTintMode()
。但我不确定这些电话到底是什么。
我也欢迎任何其他关于如何使 Switch 立即反馈“打开”或“关闭”而不立即显示为“打开”或“关闭”的好主意。
最佳答案
我有点喜欢你的想法。我认为 setTintList
将成为您的 friend 。
你想要做的是这样的:
int[][] states = new int[][] {
new int[] {-android.R.attr.state_checked},
new int[] {android.R.attr.state_checked},
};
int[] thumbColors = new int[] {
Color.LIGHTBLUE,
Color.BLUE,
};
int[] trackColors = new int[] {
Color.YELLOW,
Color.RED,
};
DrawableCompat.setTintList(DrawableCompat.wrap(yourSwitchCompatView.getThumbDrawable()), new ColorStateList(states, thumbColors));
DrawableCompat.setTintList(DrawableCompat.wrap(yourSwitchCompatView.getTrackDrawable()), new ColorStateList(states, trackColors));
使用此代码,您可以通过编程方式调整缩略图/轨道颜色。您需要为每个不同的状态设置不同的颜色(如您所述)。根据您收到的状态/回调,您想要相应地更改颜色。它应该像这样工作。
另一个想法可能是:
关于android - 如何让 Switch 控件显示它是 "turning on"或 "turning off"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47469451/
我一直在探索 Mapbox Map SDK 和 Navigation SDK,但遇到了瓶颈,如有任何帮助,我们将不胜感激。 我在 GeoJSON 中定义了一些路由。是否可以将 GeoJSON 中的这条
我在 C 中有两个静态可变变量,我想在逻辑语句中检查它们。但是,当我这样做时,我收到警告“未定义的行为:此语句 1037 中未定义 volatile 访问的顺序”是否有可能在很短的时间内暂停 C 变量
有没有像 googlemaps 应用程序和 mapkit 那样做 turn-by-turn mapping 的方法?就像下面的图片。谢谢 最佳答案 我猜你想在你的应用程序中使用精细导航?在 MapKi
我正在构建一个 Android 应用程序,帮助用户在两点之间导航。这是 doc 的链接.这正是我想要提供给用户的功能,但是我希望导航在我的应用程序中进行,而不是通过以这种方式启动 Intent Uri
我正在开发从当前位置到目的地的转弯导航。我使用以下代码完成了此操作 Uri gmmIntentUri = Uri.parse("google.navigation:q="+address); Inte
假设我有一个控制 android 服务的开关:当Switch处于“on”状态时,表示服务正在运行,当开关处于“关闭”位置时,表示服务未运行。此外,当用户点击 Switch 时,它应该切换服务(因此切换
我正在尝试实现一种算法来填充一个区域,该特定算法在以下 Wikipedia 中给出“固定内存法(右手填充法)”标题下的文档。下面给出算法中发生左转和右转的特定部分... START: set
我正在使用 HERE NOKIA SDK。我已经在 2 点和语音指令之间创建了一条路线。现在我想显示图像箭头和操作的特定文本。 最佳答案 SDK不提供回合图标。请创建一些图像以将它们与机动转弯类型配对
我的应用程序需要像 OLA、UBER 和出租车出租应用程序一样包含转弯 GPS 导航。我使用 Google Direction API 来显示路径和持续时间。我检查了以下链接,但对我没有帮助。 gps
我的应用需要包含转弯 gps 导航。任何人都可以告诉如何通过转弯 gps 导航集成谷歌地图。 我可以在android开发中找到它。但是我无法从谷歌地图的 iOS 开发文档中找到导航。 https://
构建时出现以下错误: ...has undefined behavior [-Werror,-Wundefined-reinterpret-cast] Bazel 构建完全停止,因为 clang (l
如何关闭 Rmd HTML 文档中的标题? --- title: "" output: html_document --- rmarkdown::render("index.Rmd") [WARNIN
我试图使用 部署一个简单的 TURN 服务器coturn . 当我在 Trickle ICE 上测试时( turn:rtc.jackxujh.me:3478 [webrtc:mighty] ),Tri
我正在使用一个任性的库,不幸的是,它会将信息打印到 System.out(或偶尔打印到 System.err)。防止这种情况的最简单方法是什么? 我一直在考虑创建一个输出流到内存,在每次调用其中一个麻
比如说我搭建了WebRTC视频聊天网站,有的握手后连接(ICE Candidates)会直接p2p,有的会使用STUN服务器,有的会使用“不得已”的TURN服务器建立连接.与直接连接和 STUN 连接
我在查找有关如何“打开”mysqli 的确切文档时遇到了麻烦。我正在运行 OS X SL,据我所知,由于安装了 php5,mysqli 扩展也应该已经存在。 这是否像在 php.ini 中添加 Loa
在我的 Ubuntu 引擎上设计了一个简单的基于 shell/bash 的备份脚本并使其工作后,我将它上传到了我的 Debian 服务器,它在执行它时会输出一些错误。 我该怎么做才能在我的 Ubunt
我正在使用 Twilio Network Traversal Service作为 native 应用程序的一部分,我是 working on执行对等远程桌面连接。我们实现了 WebRTC 协议(pro
我正在尝试将负载均衡器放在 Turn 服务器前面以与 WebRTC 一起使用。我在下面的示例中使用了一个轮流服务器,直到负载平衡器正常工作。 Turn 服务器需要多个端口,包括一个 UDP,如下所示:
在哪些情况下我应该使用 TURN 服务器? 现在我有一个完美运行的 WebRTC 应用程序。该应用程序即将发布。 我是否需要设置自己的 TURN 服务器,或者这可能仅适用于主要应用程序? 最佳答案 已
我是一名优秀的程序员,十分优秀!