Android -谷歌地图-我如何改变一个标记的图像,然后回到原来的图像



我在试图弄清楚如何改变一个标记的可绘制性时遇到了麻烦,当用户点击它,然后当用户离开他的手指在屏幕上时回到原来的可绘制性。

我已经知道如何通过使用这个来改变标记的绘制:

marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.my_drawable));

问题是,我应该把代码放在哪里?如果我把它放在onMarkerClick回调中,那就太晚了,因为回调是在用户将手指离开屏幕后触发的(就像任何视图中的普通点击事件只有在手指离开屏幕时才触发)。

我已经尝试将drawable设置为选择器(如下所示),但它不工作(代码抛出异常):

final BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.my_selector);
final MarkerOptions markerOptions = new MarkerOptions().icon(bitmapDescriptor)
                                                       .anchor(0.5f, 1.0f)
                                                       .position(latLon);

下面是my_selector.xml(上面使用的):

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/drawable_A" android:state_focused="true" android:state_pressed="false"/>
<item android:drawable="@drawable/drawable_B" android:state_focused="true" android:state_pressed="true"/>
<item android:drawable="@drawable/drawable_B" android:state_focused="false" android:state_pressed="true"/>
<item android:drawable="@android:color/white" />

我建议你尝试OnTouchListener与地图。

MotionEvent.ACTION_DOWN上可以设置一个背景,在MotionEvent.ACTION_UP上可以设置另一个背景。

请参考此处和此处的链接