view.invalidate() 无法重绘 imageview

2023-12-20

好吧,伙计们,这可能听起来很愚蠢,但我已经用头撞键盘有一段时间了,试图找出为什么这不会刷新。基础知识:我有一个小示例应用程序,我正在测试它是否可以将图像围绕一个点旋转 X 度,并一次显示一个度以制作平滑的动画。所以我有一个很棒的示例,我发现它与滑块配合得很好,基本上将图像旋转设置为滑块上的一个点,太棒了!但是...当我尝试创建一个带有随机数的for循环并使用我的for变量沿每个角度更新图像...它什么都不做...而我得到的只是最后更新的图像...但是当我在滑块上拖动手指时,图形会在我旋转时立即更新...我不知道我在这里做错了什么...这是带有滑块的代码...我不知道我的作品没有创建随机数并绘制它,但本质上我是在单击按钮后完成的

本质上,如果你看这篇文章,我再次在按钮后面做了同样的事情,但它不是“实时”的。我调用 view.invalidate() 和 view.postinvalidate() 来尝试强制它,但没有成功...

 @Override
   public void onProgressChanged(SeekBar seekBar, int progress,
     boolean fromUser) {
    // TODO Auto-generated method stub
    curRotate = (float)progress;
    drawMatrix();
   }

private void drawMatrix(){

    Matrix matrix = new Matrix();
       matrix.postScale(curScale, curScale);
       matrix.postRotate(curRotate);

       Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0, bmpWidth, bmpHeight, matrix, true);
       myImageView.setImageBitmap(resizedBitmap);

   }

我认为你所做的是这样的:

for (int degrees = 0 ; degrees < maxRotation ; i++) {
    // perform the rotation by matrix
    myImageView.invalidate();
}

这是行不通的,因为invalidate()仅在主线程事件队列中安排重绘。这意味着只有当当前代码全部执行完(在本例中为 for 循环)时才会执行重绘。

对于简单的旋转 a补间动画 http://developer.android.com/guide/topics/resources/animation-resource.html#Tween会更适合。对于更高级的东西(例如游戏动画),您可能需要创建自定义视图或使用SurfaceView.

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

view.invalidate() 无法重绘 imageview 的相关文章

随机推荐

  • CXF 的 WS-security(用户名令牌)- 可以加密密码吗?

    我正在尝试与 CXF 的 WS 安全实现 usernametoken 合作 我已经按照上面所说的做了一切http cxf apache org docs ws security html http cxf apache org docs w
  • 允许在加入节点执行多个事件操作

    是否允许在一个连接节点使用多个事件 如下所示 或者是可以用来描述活动流程的虚构令牌 只是在第二个事件出现之前的某一时刻出现并消失了 是否允许在一个连接节点使用多个事件 Yes a JoinNode is a 控制节点同步多个流 是虚构的标记
  • Python。 while 循环中的变量未更新。

    我对编程非常陌生 我在编写一个基本的猜谜游戏时遇到了问题 x是计算机生成的随机数 该程序应该比较 previous guess x 的绝对值和新猜测减去 x 并告诉用户他们的新猜测是否更近或更远 但变量 previous guess 并未使
  • 随机数生成器,如何获得不相同的随机数

    我正在制作一个随机数生成器 但我不想再次生成这些数字 例如 1 2 3 4 是完美的 1 1 2 4 不是我想要的 因为数字重复出现 我看过这里 没有人能回答我正在寻找的问题 按照我的逻辑 这应该可行 但我不知道我做错了什么 我是 pyth
  • 如何在 Excel 工作表内的表对象中插入行?

    我在尝试将行插入现有表对象时遇到困难 这是我的代码片段 string connectionString Provider Microsoft ACE OLEDB 12 0 Data Source C myExcelFile xlsx Ext
  • Jmeter HTTPS代理配置

    我正在尝试使用 jmeter 加载测试 https 网站 我已经使用 jmeter bin 中 proxyserver jks 文件中的 keytool 安装了客户端证书 pfx 我还使用jmeter手册配置了jmeter代理和firefo
  • 如何将 Bamboo 变量从 Bamboo 脚本发送到 docker 容器?

    我正在为bamboo 使用 Docker 插件 我需要在 docker 容器中执行一个脚本 sh 脚本包含 echo ini source path bamboo ini source path 如果我将此行直接放入容器命令中 则 bamb
  • 删除或重置 Cookie

    我正在设置一个cookieRequest Cookies TemplateName value在我的申请的其中一页 第 3 页 上 现在我可以从第 3 页导航到第 4 页和第 2 页 并保留 cookie 的值 但是现在当我注销并再次登录时
  • RxJS 更新,类型“typeof Observable”上不存在属性“merge”

    我更新了我的材质角度项目 以在表中包含可扩展的详细信息行 为此 我需要升级到 rsjx 6 现在我收到以下错误 我对角度完全陌生 所以不幸的是我不知道如何解决这个问题 Property merge does not exist on typ
  • 发送带有授权标头的 axios get 请求

    我尝试使用 vue js 发送 axios get 请求 当不需要发送标头时它工作得很好 但是 当需要发送授权 jwt 时 我收到 CORS 错误 对预检请求的响应未通过访问控制检查 请求的资源上不存在 Access Control All
  • 通过地理位置获取用户的状态

    获取美国用户所在州的最有效方法是什么 HTML5 地理定位是否是一种无需涉及谷歌地图的选项 这里有几个 JavaScript 和 JSON 的例子 在jQuery http jquery com 使用IP查找方法 借助IPinfoDB ht
  • UITableView - 使用 Swift 注册类

    其他人在使用时遇到问题吗tableView registerClass方法与斯威夫特 它不再为我提供代码补全 如果手动键入 我也不能使用它 但它仍然在标题中 它对我来说非常有效 self tableView register UITable
  • CGAL:继承和内核

    CGAL问题 我正在尝试向点类添加一个属性 我想第一步是继承一个内核并用我自己的从 CGAL 继承的点类替换点类 但只是想迈出这小小的第一步 我就遇到了麻烦 编辑 根据下面的评论 我将继承更改为手册中描述的方式 下面的代码给出了以下编译错误
  • 程序集 32 位打印显示在 qemu 上运行的代码,无法在真实硬件上运行

    我已经用 x86 汇编语言编写了一小段在裸硬件上运行的代码 此时 它已启用受保护的 32 位模式 然而 我遇到了与屏幕打印有关的问题 我读到 要在不中断的情况下执行此操作 可以将字符加载到特殊的内存区域 即 RAM 地址 0xb8000 知
  • C++ new、delete 和函数

    这对我来说有点不清楚 所以 如果我有一个函数 char test int ran char ret new char ran process return ret 然后多次调用它 for int i 0 i lt 100000000 i c
  • 搜索过滤器:最少字符数

    这是我用于至少 3 个字符检查的简单代码 如果查询是全数字的 我想例外 代码还可以选择按案例 ID 进行搜索 案例 ID 少于 3 个字符 感谢帮助 用这个 if strlen POST Search gt 3 is numeric POS
  • AutoMapper:将接口映射到抽象类 - 这可能吗?

    我在用着自动映射器 http automapper codeplex com在我的应用程序的不同层之间映射对象 一方面 我有一个如下所示的界面 public interface MyRepo IEnumerable
  • 如何获得 OxyPlot 中的所有颜色?

    我有一个问题 我在 WPF C 中使用 OxyPlot 我需要将所有颜色设置为系列的 MarkerType 和 MarkerStroke 我怎样才能获得所有颜色 Green IndianRed 等是静态 OxyColors 类中的静态字段
  • javax.el.PropertyNotFoundException:在 JSP 中使用 JSTL [重复]

    这个问题在这里已经有答案了 我有一个 JSP 我尝试使用 JSTL 标记来显示类的内存实例中的数据 该数据由一系列字符串组成 其中每个字符串都是 RSS 提要的地址 在 JSP 中 我有以下代码 table border 1 tr tr t
  • view.invalidate() 无法重绘 imageview

    好吧 伙计们 这可能听起来很愚蠢 但我已经用头撞键盘有一段时间了 试图找出为什么这不会刷新 基础知识 我有一个小示例应用程序 我正在测试它是否可以将图像围绕一个点旋转 X 度 并一次显示一个度以制作平滑的动画 所以我有一个很棒的示例 我发现