int imgSize = 30;
final ShapeDrawable redDot = new ShapeDrawable(new OvalShape());
redDot.getPaint().setColor(Color.RED);
redDot.setIntrinsicHeight(imgSize);
redDot.setIntrinsicWidth(imgSize);
final Bitmap bitmap = Bitmap.createBitmap(imgSize, imgSize, Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(bitmap);
redDot.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
redDot.draw(canvas);
ImageView imgAnimArea = new ImageView(getActivity());
imgAnimArea.setImageBitmap(bitmap);
imgAnimArea.setScaleType(ImageView.ScaleType.CENTER);
animationsView.addView(imgAnimArea);
final AnimationSet animSetRedDot = new AnimationSet(true);
// animSetRedDot.setFillAfter(true);
// animSetRedDot.setFillEnabled(true);
Animation aniRepeatFadeIn = null;
Animation aniRepatFadeOut = null;
// fade out
aniRepatFadeOut = new AlphaAnimation(1, 0);
aniRepatFadeOut.setStartOffset(3000);
aniRepatFadeOut.setDuration(300);
animSetRedDot.addAnimation(aniRepatFadeOut);
// fade out animation works only if remove this part
aniRepeatFadeIn = new AlphaAnimation(0, 1);
aniRepeatFadeIn.setStartOffset(6000);
aniRepeatFadeIn.setDuration(300);
animSetRedDot.addAnimation(aniRepeatFadeIn);
imgAnimArea.startAnimation(animSetRedDot);
它的简单代码(至少是动画部分)但有非常奇怪的行为。基本上在动画之前它会创建一个形状(红色小圆圈)将其转换为位图并将其添加到animationsView
(FrameLayout) 作为ImageView
源 ( imgAnimArea
)。
所以我的红点会淡出,但永远不会再出现,它只有在部分淡入淡出被移除的情况下才有效,即使你在火灾中淡入淡出之后也不会淡出。我还尝试将淡出设置为 .5f 而不是 0。在这种情况下,它会淡出一半的可见性。
我也尝试过动画animationsView
,但结果是一样的 - 如果没有添加部分淡入淡出,则只有淡出部分有效,如果添加部分淡出,则整个动画根本不起作用。
我可以看到根本没有添加动画的形状。无论如何,我也可以在动画完成后看到它。启用或禁用 FillAfter 完全没有效果。
所以问题是这里有什么问题?为什么淡入淡出动画不起作用?如果添加了淡入淡出动画,为什么整个动画不起作用?