用ListView装了一些marker的信息,点击选中的条目marker闪烁,怎么让他点击那个那个闪,不点击不闪
1条回答 默认 最新
你知我知皆知 2024-08-05 20:56关注以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
在Android中,你可以使用
setAlpha()方法来改变一个Drawable(比如Marker)的透明度。当你的Marker处于焦点状态时,它的alpha值会从0逐渐增加到1,从而实现闪烁的效果。以下是一个简单的示例:
public void setMarkerFading(ListView listView, Marker marker) { int position = listView.getPositionForView(marker); if (position != -1) { // 获取当前Marker的坐标 LatLng currentLatLng = marker.getPosition(); // 计算闪烁间隔 float interval = 250; // 毫秒 // 设置Marker的透明度 Drawable drawable = marker.getIcon(); int alpha = (int) ((drawable.getDrawableState() == null ? 0 : drawable.getDrawableState().getAlpha()) * 255.0f); drawable.setAlpha(alpha); drawable.setState(Drawable.STATE_NORMAL); // 非焦点状态 // 开始闪烁 while (true) { try { Thread.sleep(interval); } catch (InterruptedException e) { e.printStackTrace(); } // 设置新的闪烁颜色和位置 int newAlpha = (int) ((drawable.getDrawableState() == null ? 0 : drawable.getDrawableState().getAlpha()) * 255.0f + 30.0f); drawable.setAlpha(newAlpha); drawable.setState(Drawable.STATE_FOCUSED); // 焦点状态 // 更新Marker的位置 LatLng nextLatLng = marker.getPosition(); if (!currentLatLng.equals(nextLatLng)) { currentLatLng = nextLatLng; marker.setPosition(currentLatLng); } // 更新Marker的图标 drawable.setAlpha(alpha); drawable.setState(Drawable.STATE_NORMAL); } } }这个方法会在每个
Thread.sleep()之间检查是否需要继续闪烁,如果不需要,则返回,否则就重新开始闪烁。注意,这种方法可能会消耗大量的系统资源,所以在实际应用中要谨慎使用。此外,你也可以使用
setClickable(true)来让Marker能够在被点击后跳转到另一个页面或者执行其他操作。解决 无用评论 打赏 举报