我希望动画我的谷歌地图标记,比如当标记设置为可见时生长动画,并在标记可见性消失时缩小动画

时间:2018-05-22 05:23:15

标签: java android google-maps google-maps-markers

当你选择车辆类型时,我希望这个动画像超级应用程序一样,选定的车辆出现在地图上,随着动画的增长而消失,就像缩小动画一样。 我经常搜索动画,但无法找到相关答案。请指导我如何操作。 提前谢谢。

以下是添加标记

的代码
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();*/


        }
    }
}

通过此代码,我添加了标记。现在我希望我的标记在地图上显示动画,而不是在地图上直接弹出。

1 个答案:

答案 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();

尝试使用此代码进行成长动画。如果它工作,尝试在函数内执行此操作并从处理程序

调用它