Android中的动画虚线边框

Android中的动画虚线边框,android,animation,border,Android,Animation,Border,如何在Android中创建任意形状的动画虚线或虚线边框?使用XML(首选)或编程方式 有关示例,请参见下图 XML。。。我想不可能。但是,您可以使用自定义视图或SurfaceView并自己处理图形。玩得开心点:)您可以使用两张9patch图像的某种形式作为背景框,围绕您要呈现的图像文件,两种布局各一张。在虚线元素的放置方面,图像会有所不同。快速交换视图(可能需要延迟),您可能会得到想要的效果。我真的不知道这会有多大的效果,尽管在让用户继续使用应用程序和咀嚼电池方面…你看过PathEffects

如何在Android中创建任意形状的动画虚线或虚线边框?使用XML(首选)或编程方式

有关示例,请参见下图


XML。。。我想不可能。但是,您可以使用自定义视图或SurfaceView并自己处理图形。玩得开心点:)

您可以使用两张9patch图像的某种形式作为背景框,围绕您要呈现的图像文件,两种布局各一张。在虚线元素的放置方面,图像会有所不同。快速交换视图(可能需要延迟),您可能会得到想要的效果。我真的不知道这会有多大的效果,尽管在让用户继续使用应用程序和咀嚼电池方面…

你看过PathEffects API演示吗?

它精确地生成一条动画线,您只需调整视图边缘的路径即可创建边界。例如:

通过视图参数/任意形状定义路径:

Path path = new Path();
path.addRect(view.getLeft(), view.getTop(), view.getRight(), view.getBottom(), Path.Direction.CW);
然后使用以下命令创建虚线PathEffect:

PathEffect pe = new DashPathEffect(new float[] {10, 5, 5, 5}, phase);
然后设置“将其与绘制对象关联”并绘制:

mPaint.setPathEffect(pe);
canvas.drawPath(path, mPaint);

编辑:动画效果来自不断更改相位和重画。在API演示中,它在onDraw()方法中调用invalidate()(触发onDraw()…)

在移动设备中是否需要它?除了像闪烁标签一样吸引人外,它还将消耗电池电量。如果这是关于广告的,那就不是获得满意客户的方法。这是我的用例所需要的。它用于图形应用程序,虚线动画边框是遮罩的通用符号。此外,我认为这不会比现场背景消耗更多的电池电量。好吧,我怀疑有恶意的广告目的。这是合理的目的,合理的怀疑。每次我回到这里,我都觉得这是一个横幅广告,这是我自己的问题!使用自定义视图或SurfaceView实现它的任何指针?您可以在每个画布上绘制线条,并且使用的绘制对象可以具有不同的样式。如果你在每一帧上都在上面有一条黑色虚线的白线和上面有一条白色虚线的黑线之间切换,你应该会得到想要的效果。这可能是可行的,并且可以通过XML实现。我会试一试的。不起作用。9个补丁图像不重复模式,它们只是拉伸了图像的一部分。对不起,我的意思是你创建了两个9patch格式的图像。您必须自己创建图案,但如果要在图案之间快速切换,则会产生虚线移动的错觉。切换可以通过可绘制的动画完成。但是,我不明白如何使用9patch图像创建独立于分辨率的虚线边框(动画或非动画)。我不认为9patch在这种情况下有用,无法指定它们来平铺他想要的部分。谢谢antonyt!这正是我想要的。遗憾的是,它不能用xml定义,其中一个问题是它分配了大量的对象,这些对象将触发垃圾收集,并可能导致动画结巴。您可以通过将float[]分配为某个类成员来避免部分问题。不确定每次相位改变时如何避免DashPathEffect分配,当然您可以通过平移线条来处理动画。您可以创建一个DashPathEffects数组(大小等于浮点数组中的最大值,在本例中为10),然后重新使用这些效果。至少这是我正在做的,但是对于
PathDashPathEffect
效果。