Android 中图像的动画旋转

2023-12-08

  • 我有一个齿轮图像,我想让它围绕一个固定点连续旋转。

  • 早些时候,我通过将图像作为 ImageView 包含在 Android 类中并向其应用 RotateAnimation 来实现此目的。

    @InjectView(R.id.gear00)              ImageView gear00;
    RotateAnimation ra07 = new RotateAnimation(0, 359, 129, 186);
    ra07.setDuration(10000);
    ra07.setRepeatCount(RotateAnimation.INFINITE);
    ra07.setInterpolator(new LinearInterpolator());
    gear00.setAnimation(ra07);
    

基本上,我将 ImageView 注入到类中并应用旋转动画。

然而,我不再有使用 ImageView 的奢侈了。我必须使用Bitmap并在画布上旋转它。

我怎样才能完成我早些时候所做的事情onDraw()位图在画布上围绕固定点连续旋转的方法?

Edit1:

我尝试了下面提到的建议之一,我的代码看起来有点像下面的

在 onCreate() 中:

Matrix matrix = new Matrix();
matrix.setRotate(10, 100, 200);

然后在 onDraw() 中(其中 gear00Scaled 是要在画布上旋转的位图):

canvas.drawBitmap(gear00Scaled, 矩阵, new Paint());

我尝试的另一种方法是保存画布,旋转它,然后恢复它:

画布.保存();
画布.旋转(10);
canvas.drawBitmap(gear00Scaled, 100, 200, null);
画布.恢复();

但似乎都不起作用!


创建一个 XML 类(假设:rotate.xml)并将其放置在 res/anim 文件夹中,然后在其中编写以下代码:

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:interpolator="@android:anim/linear_interpolator"
    android:pivotX="50%"
    android:pivotY="50%"
    android:repeatCount="infinite"
    android:toDegrees="360" />

然后在你的java类中,执行以下操作OnCreate:

final Animation a = AnimationUtils.loadAnimation(CustomActivity.this,
                R.anim.rotate);
        a.setDuration(3000);
        gear00.startAnimation(a);

OR

要使用位图来完成此操作,我希望以下代码序列对您有所帮助:

Bitmap targetBitmap = Bitmap.createBitmap(targetWidth, targetHeight, config);
Canvas canvas = new Canvas(targetBitmap);
Matrix matrix = new Matrix();
matrix.setRotate(mRotation,source.getWidth()/2,source.getHeight()/2);
canvas.drawBitmap(source, matrix, new Paint());

如果您检查以下方法:

〜frameworks\base\graphics\java\android\graphics\Bitmap.java

public static Bitmap createBitmap(Bitmap source, int x, int y, int width, int height,
        Matrix m, boolean filter)

这可以解释它对旋转和平移的作用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 中图像的动画旋转 的相关文章

随机推荐

  • postgres 中多列的聚合函数

    我有一个 postgresql 表 其中包含多个包含整数的字段 a1 a2 a3 等 我想一次在多个列上运行聚合函数 均值 标准差等 其中一些可能有合理数量的空值 所以我不想只生成列平均值 然后对它们进行平均 我可以得到一组整数 SELEC
  • 我应该如何验证传递到 WCF 服务的参数?

    通常 您使用以下命令检查公共方法中的传入参数if then throw模式或代码合同 我的问题是 我应该如何验证 WCF 服务中传递的参数 例如 我有以下合同 OperationContract Stock GetStock string
  • 在模型 Firebase 上保存 userId

    我有一个与如何使用 firebase 保存用户信息相关的问题 我扩展了用户身份验证 并在 json 树上创建了一个新的用户节点 每个用户都有由 firebase 生成的自己的 id 并且用户信息位于该密钥 id 内 问题是 每次我这样做时
  • 如何在代理后面推送到heroku?

    我在大学的代理服务器后面使用 git 在尝试执行时 git push heroku master 我收到一个错误 ssh connect to host proxy heroku com port 22 Bad file number fa
  • 将 CSV 扫描到变量

    我有一个像这样的 CSV 一行 101 120 130 我怎样才能将它们扫描成这样的变量 pt num 101 x 120 y 130 只需使用csvread M csvread filename csv pt num M 1 x M 2
  • 如何通过查询获取MySQL中的数据库结构?

    是否有可能以某种方式获取 MySQL 数据库的结构 或者只是一些带有简单查询的表 或者还有其他方法吗 我该怎么做 我认为你所追求的是DESCRIBE DESCRIBE table 您还可以使用SHOW TABLES SHOW TABLES
  • 为什么在这种情况下使用泛型会出现 ClassCastException?

    这是代码 一个简单的泛型类并尝试将一个整数分配给aa 0 public class GenericTest
  • 如果无法传递 POST 响应,如何回滚事务

    使用 Spring MVC 假设我已经实现了一个控制器 用于处理 POST 请求 在事务内执行数据库操作 并在响应正文中返回结果 这是控制器和服务层 RestController RequiredArgsConstructor public
  • 等待具有不同结果的多个任务

    我有3个任务 private async Task
  • Conda UnsatisfiableError 即使看起来没有任何冲突

    例如 我有以下内容environment yml file name harmonic backend channels conda forge dependencies python 3 8 10 apache beam 2 31 0 p
  • 如何指定WPF Image使用的图像缩放算法?

    有没有办法指定图像如何按比例放大Image元素与LayoutTransform设置为ScaleTransform具有整数值ScaleX and ScaleY 我想清晰地显示缩放后的图像 即使用 最近邻 缩放 而不会模糊 想象一下您希望位图编
  • 为什么需要重新声明重载的虚函数?

    我有一个带有两个重载函数的基类f void and f int 班上Derived实施f int 通过致电f void Derived2实施f void only 编译器拒绝执行Derived f int 因为它想打电话f int 但我没有
  • 使用javascript根据html中的下拉选择显示和隐藏div元素

    我有一个使用 javascript 在使用下拉菜单时显示隐藏 div 的问题 代码适用于链接和按钮 但我询问是否有任何方法可以重写它 以便它可以使用 SELECT 选项 就像如果我从下拉列表中选择 显示 它将向我显示包含 Hello wor
  • 使用 Koush Ion 库上传多部分文件

    在我的上一个应用程序中我将使用库什离子图书馆 它非常方便 但我在将文件上传到我的休息服务器时遇到问题 注意 我的服务器对成功上传过程的响应是1 我的代码我喜欢这样 public class MainActivity extends Acti
  • 如何在 matplotlib 中绘制(高质量)表情符号? [复制]

    这个问题在这里已经有答案了 我有以下字典 a 10 23 13 10 13 我想将表情符号绘制为条形图 并将它们绘制在条形图上 一开始我确实喜欢here with annotate 但是看起来很糟糕 而且不支持一些表情符号 import m
  • 在 Warren 的抽象机中,如果参数之一是寄存器,则绑定如何工作?

    我正在尝试创建自己的 WAM 实现 但我陷入困境练习2 4 我不明白如何执行指令unify value X4如图 2 4 所示 据我了解 这条指令应该将程序中的 Y 与查询中的 f W 统一起来 unify value X4 calls u
  • 无法对我的 webrick 服务器进行端口转发以从网络访问它!

    我正在开发一个 facebook 应用程序 我正在使用 facebooker 插件和 webrick 服务器 我已正确配置我的路由器 将 2 个端口 80 和 3000 转发到我的机器 apache服务器可以从网络访问http ip 80a
  • 如何使用 Excel VBA 将图像插入数组中的多列?

    我开发了代码来从文件夹 由用户选择 中搜索图像 并通过一些循环将其放入 Excel 的列中 现在我正在尝试使用多维数组 因此它也可以将图像插入到多个列中 我没有将图像放入 A 列中 而是尝试创建一个循环 以便它也将图像插入 B 列中 到目前
  • 如何在 Ionic 中实现 Admob?

    我按照这篇文章的说明进行操作 AdMob 未在 ionic Angular 应用中加载广告 当我通过 ionic build ios ionic emulate ios 运行应用程序时 我没有收到任何广告 没有黑条 我错过了什么 Thank
  • Android 中图像的动画旋转

    我有一个齿轮图像 我想让它围绕一个固定点连续旋转 早些时候 我通过将图像作为 ImageView 包含在 Android 类中并向其应用 RotateAnimation 来实现此目的 InjectView R id gear00 Image