gpt4 book ai didi

android - 如何使用 'RotateDrawable'?

转载 作者:可可西里 更新时间:2023-11-01 18:45:22 25 4
gpt4 key购买 nike

谁能告诉我他们是如何让 RotateDrawable 工作的,无论是来自代码还是 XML 或两者?关于动画 Drawables 的文档非常糟糕,动画似乎只适用于图像。我希望能够为所有可绘制对象设置动画。当我尝试从 XML 获取 RotateDrawble 时,只是导致异常。从 XML 中找到 RotateDrawable 的正确函数是什么?

最佳答案

这里有一个很好的解决方案,可以为 imageView 放置一个旋转的可绘制对象:

Drawable getRotateDrawable(final Bitmap b, final float angle) {
final BitmapDrawable drawable = new BitmapDrawable(getResources(), b) {
@Override
public void draw(final Canvas canvas) {
canvas.save();
canvas.rotate(angle, b.getWidth() / 2, b.getHeight() / 2);
super.draw(canvas);
canvas.restore();
}
};
return drawable;
}

用法:

Bitmap b=...
float angle=...
final Drawable rotatedDrawable = getRotateDrawable(b,angle);
root.setImageDrawable(rotatedDrawable);

另一种选择:

private Drawable getRotateDrawable(final Drawable d, final float angle) {
final Drawable[] arD = { d };
return new LayerDrawable(arD) {
@Override
public void draw(final Canvas canvas) {
canvas.save();
canvas.rotate(angle, d.getBounds().width() / 2, d.getBounds().height() / 2);
super.draw(canvas);
canvas.restore();
}
};
}

另外,如果你想旋转位图,但又怕 OOM,你可以使用我制作的 NDK 解决方案 here

关于android - 如何使用 'RotateDrawable'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5872257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com