我想要实现的应该是非常简单的,但它不起作用.
我在我的地图上添加了一个标记,我正在尝试为它制作一个心跳动画.
我试过以下代码,但没有运气,
ObjectAnimator pulse = ObjectAnimator.ofPropertyValuesHolder(userLocation, PropertyValuesHolder.offloat("scaleX",2f), PropertyValuesHolder.offloat("scaleY",2f) ); pulse.setDuration(310); pulse.setRepeatCount(ObjectAnimator.INFINITE); pulse.setRepeatMode(ObjectAnimator.REVERSE); pulse.start();
任何建议都会感激不尽,
加上使用外部库也可以是一个选项,我刚刚找不到.
解决方法:
一般方法在Cabezas answer中有详细描述.除了他的回答,对于你的任务你应该应用它来设置(根据插值为每个动画帧重新调整大小)位图用于标记.例如,您可以使用以下方法执行此 *** 作:
private voID pulseMarker(final Bitmap markerIcon, final Marker marker, final long onepulseDuration) { final Handler handler = new Handler(); final long startTime = System.currentTimeMillis(); final Interpolator interpolator = new CycleInterpolator(1f); handler.post(new Runnable() { @OverrIDe public voID run() { long elapsed = System.currentTimeMillis() - startTime; float t = interpolator.getInterpolation((float) elapsed / onepulseDuration); marker.setIcon(BitmapDescriptorFactory.fromBitmap(scaleBitmap(markerIcon, 1f + 0.05f * t))); handler.postDelayed(this, 16); } });}
其中16是一帧动画的持续时间,1f 0.05f * t – 增加5%,标记图标和scaleBitmap()的大小减小为:
public Bitmap scaleBitmap(Bitmap bitmap, float scaleFactor) { final int sizeX = Math.round(bitmap.getWIDth() * scaleFactor); final int sizeY = Math.round(bitmap.getHeight() * scaleFactor); Bitmap bitmapResized = Bitmap.createScaledBitmap(bitmap, sizeX, sizeY, false); return bitmapResized;}
和电话是:
Bitmap markerIcon = BitmapFactory.decodeResource(getResources(), R.drawable.ic_heart);pulseMarker(markerIcon, marker, 1000);
标记是你的标记,一个脉冲的持续时间为1000-1秒.
总结以上是内存溢出为你收集整理的android – 如何在谷歌地图上制作标记?全部内容,希望文章能够帮你解决android – 如何在谷歌地图上制作标记?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)