当你选择车辆类型时,我希望这个动画像超级应用程序一样,选定的车辆出现在地图上,随着动画的增长而消失,就像缩小动画一样。 我经常搜索动画,但无法找到相关答案。请指导我如何操作。 提前谢谢。
以下是添加标记
的代码private void addDriver(JSONArray jsonArray)
{
for (int i = 0; i < jsonArray.length(); i++)
{
if (!(markersList.containsKey(jsonArray.optJSONObject(i).optString("user_id"))))
{
// Log.e("ADDDD","MARKERRRR");
final Marker marker = mGoogleMap.addMarker(new MarkerOptions().position(new LatLng(Double.parseDouble(jsonArray.optJSONObject(i).optString("user_lat")),Double.parseDouble(jsonArray.optJSONObject(i).optString("user_long"))))
.snippet(jsonArray.optJSONObject(i).optString("user_id")));
marker.setTag(jsonArray.optJSONObject(i).optString("vehicle_type"));
/* Bitmap markerIcon = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
pulseMarker(markerIcon, marker, 3000);*/
markersList.put(jsonArray.optJSONObject(i).optString("user_id"),marker);
/*final Marker marker = mGoogleMap.addMarker(new MarkerOptions().position(new LatLng(Double.parseDouble(jsonArray.optJSONObject(i).optString("user_lat")),Double.parseDouble(jsonArray.optJSONObject(i).optString("user_long")))).title("Marker"));
final Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
final Bitmap target = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(target);
ValueAnimator animator = ValueAnimator.ofFloat(0, 1);
animator.setDuration(2000);
animator.setStartDelay(4000);
final Rect originalRect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
final RectF scaledRect = new RectF();
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation)
{
float scale = (float) animation.getAnimatedValue();
scaledRect.set(0, 0, originalRect.right * scale, originalRect.bottom * scale);
canvas.drawBitmap(bitmap, originalRect, scaledRect, null);
marker.setIcon(BitmapDescriptorFactory.fromBitmap(target));
}
});
animator.start();*/
}
}
}
通过此代码,我添加了标记。现在我希望我的标记在地图上显示动画,而不是在地图上直接弹出。
答案 0 :(得分:0)
final Marker marker = map.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker"));
final Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_temperature_kelvin_black_48dp);
final Bitmap target = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(target);
ValueAnimator animator = ValueAnimator.ofFloat(0, 1);
animator.setDuration(500);
animator.setStartDelay(1000);
final Rect originalRect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
final RectF scaledRect = new RectF();
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float scale = (float) animation.getAnimatedValue();
scaledRect.set(0, 0, originalRect.right * scale, originalRect.bottom * scale);
canvas.drawBitmap(bitmap, originalRect, scaledRect, null);
marker.setIcon(BitmapDescriptorFactory.fromBitmap(target));
}
});
animator.start();
尝试使用此代码进行成长动画。如果它工作,尝试在函数内执行此操作并从处理程序
调用它