Android 是否可以在不经过视图的情况下为可绘制对象设置动画?

Android 是否可以在不经过视图的情况下为可绘制对象设置动画?,android,animation,Android,Animation,(这里我指的是旧的Android动画系统,而不是蜂巢引入的属性动画。) 我正试图了解如何在地图视图上设置标记动画。由于地图视图使用mapOverlays,并且由于Overlay既不是视图,也不是将其标记显示为Views,而是作为Drawables,因此我正在寻找不将其放在视图容器中而为Drawable设置动画的方法 那有可能吗?看看Android源代码,它看起来好像动画,它的各种实现只包含计算动画应用的数学变换的代码。类似地,例如,rotatedravable仅包含计算旋转的代码,以及将转换后的

(这里我指的是旧的Android动画系统,而不是蜂巢引入的属性动画。)

我正试图了解如何在
地图视图上设置标记动画。由于地图视图使用map
Overlay
s,并且由于Overlay既不是视图,也不是将其标记显示为
View
s,而是作为
Drawable
s,因此我正在寻找不将其放在视图容器中而为Drawable设置动画的方法

那有可能吗?看看Android源代码,它看起来好像
动画
,它的各种实现只包含计算动画应用的数学变换的代码。类似地,例如,
rotatedravable
仅包含计算旋转的代码,以及将转换后的可绘制图形绘制到画布的代码

但是,两者都不包含播放动画的代码;我只能通过
View.startAnimation(animation)
使用动画播放

有没有办法播放动画或使用不带
视图的可绘制动画

我正试图了解如何在地图视图上设置标记的动画

编写自己的
Overlay
,类似于
ItemizedOverlay
,但使用
ImageView
和经典动画框架或自己的绘图代码执行自己的动画

有没有办法播放动画或使用无视图的动画绘图


我还没有用
ItemizedOverlay
尝试过
AnimationDrawable
,所以如果你只需要一帧一帧的动画,那至少值得一试。否则,恐怕您又回到了自己的
覆盖

你好,Mark,是的,我已经尝试了类似的方法1):我用ImageView备份了一个覆盖项,并从OverlayItem.getMarker返回了可绘制的图像。但是,这仅在我还将ImageView添加到视图树(我将其作为子对象添加到MapView)时有效,否则动画将无法播放。但是,如果我这样做,那么出于某种原因,ImageView会被渲染/两次/,一次播放动画,一次没有…@Matthias:“但是,如果我这样做,那么出于某种原因,ImageView会被渲染/两次/,一次播放动画,一次没有…”--可能发生的情况是,
可绘制的
被渲染了两次。当然,当您要求
MapView
两次显示
Drawable
时(一次显示为
OverlayItem
,一次显示为
ImageView
),这就是我所期望的。请注意,我并没有要求您创建自己的
ItemizedOverlay
——我说您需要创建自己的
Overlay
,绕过
ItemizedOverlay
,这样您就可以使用
imageview
而不是
Drawables
。当然,我可以这样做。这意味着重新实现ItemizeOverlay所做的一切,比如处理焦点、交互和标记-/@Matthias:“然而,出于某种原因,ImageView被渲染/两次/”——我认为在开始动画之前将ImageView设置为不可见应该对您有效。不,不幸的是,它不起作用。尝试过:)将其设置为“消失”也没有帮助;这只会导致视图完全从布局中移除,动画再次消失。我目前正在调查按照Mark的建议所做的工作,即重新实现一个由视图而不是绘图支持的地图覆盖。我到任何地方都会回来报到。(问题是Overlay及其子类是封闭源代码的,所以我几乎是在暗中摸索。)