如何在原生android应用程序中使用svg创建逐帧动画 我知道android本机不支持SVG 我选择显示svg文件。这个库不支持SVG构建动画,这没关系,因为这不是我需要的
我扩展了RealiveLayout,将svg添加到视图中。这个很好用如何在原生android应用程序中使用svg创建逐帧动画 我知道android本机不支持SVG 我选择显示svg文件。这个库不支持SVG构建动画,这没关系,因为这不是我需要的,android,animation,svg,frame,Android,Animation,Svg,Frame,我扩展了RealiveLayout,将svg添加到视图中。这个很好用 public class Graphics extends RelativeLayout { public Graphics(Context context, AttributeSet attrs) { super(context, attrs); } public void showConnectedAnimation() { //TODO: show animation
public class Graphics extends RelativeLayout {
public Graphics(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void showConnectedAnimation() {
//TODO: show animation
SVGImageView svgImageView = new SVGImageView(this.getContext());
svgImageView1.setImageResource(R.raw.shield);
addView(svgImageView);
}
}
问题我的目标是有10个小svg文件作为逐帧动画。 我更喜欢使用android的原生AnimationDrawable,但我不知道如何绕过animation-list.xml 可能的解决方案
是否有任何方法可以使用svg库中的动态创建AnimationDrawable的动画列表,其中充满了动态创建的ImageView对象
任何帮助都将不胜感激 您是否尝试使用Canvas在某种SurfaceView上绘制svg形状?我没有尝试过,但看起来您可以使用addFrame()方法将帧添加到AnimationDrawable 比如:
ImageView imageView = <get from layout XML or create it>
AnimationDrawable anim = new AnimationDrawable();
SVG svg = SVG.getFromResource(this, R.raw.frame1);
anim.addFrame(new PictureDrawable(svg.renderToPicture()), 10);
svg = SVG.getFromResource(this, R.raw.frame2);
anim.addFrame(new PictureDrawable(svg.renderToPicture()), 10);
.. etc..
imageView.setPictureDrawable(anim);
ImageView-ImageView=
AnimationDrawable anim=新的AnimationDrawable();
SVG SVG=SVG.getFromResource(this,R.raw.frame1);
addFrame(新的picturedravable(svg.renderToPicture()),10);
svg=svg.getFromResource(this,R.raw.frame2);
addFrame(新的picturedravable(svg.renderToPicture()),10);
.. 等
imageView.SetPicturedRavable(动画);
我已经阅读了说明画布用于需要频繁重画的图形的文档。(主要是游戏)。在我的例子中,我有一个静态循环。我想我可以自己用一个定时器和一个小尺寸的画布来编码动画,但是这对我来说似乎太过分了。@a我还没有,还没有时间。
AnimationDrawable anim = new AnimationDrawable();
SVG svg;
svg = SVGParser.getSVGFromResource(getResources(), R.raw.frame1);
anim.addFrame(new PictureDrawable(svg.getPicture()),500);
svg = SVGParser.getSVGFromResource(getResources(), R.raw.strokes);
anim.addFrame(svg.createPictureDrawable(), 500);
svg = SVGParser.getSVGFromResource(getResources(), R.raw.transformations);
anim.addFrame(svg.createPictureDrawable(), 500);
svg = SVGParser.getSVGFromResource(getResources(), R.raw.gradients);
anim.addFrame(svg.createPictureDrawable(), 500);
//so on
imageView.setImageDrawable(anim);
anim.start();