CSS3动画在Android 2.2上闪烁(webkit-transform:translate(..) 同时缩放(..))

2024-01-31

我在 Android 上做了一些关于 CSS3 动画(使用 webkit-transition 进行转换)的研究。 CSS3 动画在 Webkit 中仍然是一个实验性功能。如果您尝试同时进行平移和缩放,您会发现 CSS 动画中存在一些小故障和/或错误(例如,请参阅http://www.youtube.com/watch?v=vZdBVzN1B8Y http://www.youtube.com/watch?v=vZdBVzN1B8Y)。换句话说,在许多版本的 Android 中,该属性-webkit-变换:矩阵(...)无法正常工作。同时获得缩放和平移的唯一正确方法是设置“-webkit-transform:缩放(...)翻译(...)” 按这个顺序。 我将在这篇文章的底部展示我的结果。

正如你在其中看到的,我已经克服了其中的大部分。 然而,Android 2.2 (Froyo) 上的某些过渡仍然存在一些“闪烁”。

现在我的问题是:有没有办法在Android 2.2上同时进行缩放和平移而不闪烁?

我也尝试过-webkit-backface-可见性:隐藏;, -webkit-视角:1000; and -webkit-transform:translate3d(..,0)但这些属性在转换过程中引入了一些故障。您可以在以下视频中看到它:http://www.youtube.com/watch?v=Aplk-m8WRUE http://www.youtube.com/watch?v=Aplk-m8WRUE转换停止后缩放将被取消。

有没有其他解决方法来抑制闪烁? 有任何想法吗?


下面是我在 Android 上 CSS3 转换的结果(1.5

<html>
<head>
 <title>css3test</title>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
 <meta name="viewport" content="width=device-width">
</head>
<body>
<div id='log'></div>
<div id='box' style="background-color: blue; width:100; height:100;"></div>
<script language='JavaScript'>
function mesg(str) {
  document.getElementById('log').innerHTML = str;
}
var e = document.getElementById('box');
e.style['-webkit-transition-property'] = '-webkit-transform';
e.style['-webkit-transform-origin'] = "0 0";
e.style['-webkit-transition-duration'] = '350ms';
e.style['-webkit-transition-timing-function'] = 'linear';

// These properties will suppress flicker, but spoiles scaling on Android 2.2 ...
// see http://www.youtube.com/watch?v=Aplk-m8WRUE
e.style['-webkit-backface-visibility'] = 'hidden'; 
e.style['-webkit-perspective'] = '1000';

var b = 0;
function doAnim() {
  var trans;
  switch(b){
  case 0: // step 0. translate and scale at the same time
    // 1) matrix
    // On Android 1.5, we get no translation, but the box is only enlarged. Broken.
    // On Android 2.2, the transition does not occur but the box moves instantly.
    //trans = 'matrix(2,0,0,2,100,100)';
    // 2) scale first, then translate
    // On Androi2.2, there's some glitches.
    //trans = 'scale(2,2) translate(50px,50px)'; 
    // 3) tranlate first, then scale -- CORRECT 
    trans = 'translate(100px,100px) scale(2,2)';
    break;
  case 1: // step 1. translate
    // 1) matrix 
    //trans = 'matrix(1,0,0,1,35,35)';
    // 2) translate only -- will spoil transition -- 
    // On Android 1.5, the transition corrupts and the box repeatedly moves in a wrong direction. Bug?
    // see http://www.youtube.com/watch?v=vZdBVzN1B8Y
    //trans = 'translate(35px,35px)';
    // 3) tranlate first, then scale with (1,1) -- CORRECT 
    trans = 'translate(35px,35px) scale(1,1)';
    break;
  case 2: // step 2. scaling
    // 1) matrix -- nope.
    //trans = 'matrix(1.4,0,0,1.4,0,0)';
    // 2) scale only -- will spoil transition --
    //trans = 'scale(1.4,1.4)';
    // 3) tranlate with (0px,0ox), then scale -- CORRECT 
    trans = 'translate(0px,0px) scale(1.4,1.4)';
    break;
  case 3: // step 3. again, translate and scale at the same time
    // 1) matrix -- nope.
    //trans = 'matrix(1.2,0,0,1.2,100,100)';
    // 2) scale then translate -- will spoil transition --
    //trans = 'scale(1.2,1.2) translate(83.33px,83.33px)';
    // 3) tranlate first, then scale -- CORRECT 
    trans = 'translate(100px,100px) scale(1.2,1.2)';
    break;
  }
  e.style['-webkit-transform'] = trans;
  mesg('move '+b+'<br/>transform:'+trans);

  b=(b+1)%4;
}
var isAndroid = (new RegExp("android","gi")).test(navigator.appVersion);
if(isAndroid) {
  e.addEventListener('touchstart', doAnim, false);
} else {
  e.addEventListener('mousedown', doAnim, false);
}
document.addEventListener('touchmove', function(e){ e.preventDefault(); }, false);
</script>
</body>
</html>

这是一个开放的错误。给它加注星标以投票支持尽快修复它:

http://code.google.com/p/android/issues/detail?id=12451 http://code.google.com/p/android/issues/detail?id=12451

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

CSS3动画在Android 2.2上闪烁(webkit-transform:translate(..) 同时缩放(..)) 的相关文章

  • Fragment 问题中的 ExpandableListView

    我正在尝试在片段中实现可扩展列表视图 没有错误出现 当我尝试记录两个的输出时List
  • 使用非常大的背景位置偏移是否存在性能问题?

    我正在构建一个进度条控件 并且正在研究它实际上并不显示进度 而只是旋转 正在发生某事 的指示器的情况 我的设计基本上是交替的对角条纹 本质上是一个像这样的理发杆 但是 旋转 由于希望将尽可能多的负载转移给渲染引擎 我想为此使用 CSS 过渡
  • 退出设备上的 system.img

    我正在为我们部署给客户的设备 LG p509 Optimus 1 开发自动应用程序更新解决方案 我们可以控制这些设备 并且目前在它们上安装自定义内核 但不是完整的自定义 ROM 由于我们试图在设备上自动更新我们的应用程序 因此我们需要由我们
  • CSS 网格/布局框架,专注于固定元素和单页全屏布局

    经验法则 如果您在布局中过多地使用 CSS 请切换到框架 我已经研究了数十个网格 布局框架 其中大多数都专注于传统的文档网格布局 我的页面更像是一个 SPA 单页应用程序 它类似于桌面应用程序使用的布局 显然 HTML 不能很好地处理这个问
  • CSS 内边框?

    我纯粹用 CSS 创建了左侧的按钮 它是一个div 中的一个div 然而 右侧的三个按钮是background属性于img标签 我这样做是为了按照以下说明模拟翻转效果here http kyleschaeffer com best prac
  • 将 java 中的 byte[] 转换为 C++ 中的 unsigned char* 的正确方法,反之亦然?

    我是 C 和 JNI 的新手 我尝试找到一种正确的方法 通过使用 JNI 将 java 中的 byte 转换为 C 中的 unsigned char 反之亦然 我正在安卓上工作 在谷歌和SO中寻找解决方案后 我还没有找到将java中的byt
  • 如果 CSS 是渲染阻塞的,为什么我们会看到 FOUC?

    为了构建渲染树 浏览器需要 DOM 和 CSSOM CSSOM 只有在下载 CSS 后才能构建 本质上 一旦下载了 CSS 页面就应该可以正常渲染了 但是 为什么我们会在页面上看到 Flash Of Unstyled Content FOU
  • 使用 IE9、10、11 的 CSS 将比例打印到 50% 等百分比

    Zoom css 属性不适用于 IE9 10 11 观察到打印预览 UI 令人不安 默认比例为 缩小以适合 当我将此比例从 缩小 更改为适合 50 时 页面显示正常 打印预览 任何人都可以帮助我如何使用 CSS 代码将比例设置为 50 为页
  • 什么可能导致 Firefox 中出现此 HTML/CSS 渲染问题?

    款式 h2 color 71D0FF font size 11px font weight bold margin 0px 0px 5px 0px a box color FFFFFF important cursor pointer di
  • Android 上的 MIDI:Java 和/或 AIR 库

    一段时间以来 我一直在考虑在 iPad 上 重新 构建一个应用程序 其中我将使用 Objective C 和DSMI http dsmi tobw net 将 MIDI 信号发送到主机 这还不错 我的意思是 除了实际编写应用程序之外 现在我
  • Android 中的库可以有自己的意图过滤器吗?

    我想开发一个可以包含在其他 Android 应用程序中的库来拦截某些类型的意图 是否可以 我创建了一个库和一个测试项目 两者都有自己的AndroidManifest xml文件 在库的清单中 我为操作 TEST 定义了一个意图过滤器 但是
  • Android SearchView 在启动时隐藏键盘

    我有一个小问题正在尝试解决 当我打开应用程序时 键盘会显示输入搜索视图的查询 不过 我只想在单击搜索视图时显示键盘 我该如何解决 Thanks 这对我有用 用于隐藏焦点的代码 searchView SearchView view findV
  • jetpack compose 是否使用drawable-night 文件夹?

    我们有一个基于视图的 Android 应用程序 其中有一些可绘制对象res drawable文件夹 以及夜间模式的对应文件夹res drawable night folder 使用旧视图时 引用可绘制对象R drawable foo从 XM
  • 删除下拉链接并在导航栏菜单中显示其所有项目

    我正在使用 Twitter Bootstrap 及其响应式设计来实现顶部典型的 Twitter Bootstrap 导航栏菜单 在那里我有一些链接和一个下拉菜单 当我将浏览器大小调整为768px或者更少 它会转变为一种新的导航菜单 这一切开
  • 离子初始加载时间

    我正在使用 Ionic 构建一个简单的应用程序 但我的应用程序在冷启动时的初始加载时间方面存在性能问题 这是我所做的 collection repeat 代替带有 track by 的 ng repeat 原生滚动 overflow scr
  • fs-extra:源和目标不能相同。 (科尔多瓦)

    我在使用 cordova 构建时遇到错误 Error Source and destination must not be the same 构建系统 Ionic ionic cli 4 10 1 ionic framework ionic
  • ECDH使用Android KeyStore生成私钥

    我正在尝试使用 Android KeyStore Provider 生成的私有文件在 Android 中实现 ECDH public byte ecdh PublicKey otherPubKey throws Exception try
  • 检查应用程序是否在 Android Market 上可用

    给定 Android 应用程序 ID 包名称 如何以编程方式检查该应用程序是否在 Android Market 上可用 例如 com rovio angrybirds 可用 而 com random app ibuilt 不可用 我计划从
  • Android MulticastSocket.joinGroup 不会触发发送 IGMP 消息

    Code MulticastSocket s new MulticastSocket InetAddress addr InetAddress getByName 230 230 230 1 s joinGroup addr 在 Ubunt
  • 将对象从手机共享到 Android Wear

    我创建了一个应用程序 在此应用程序中 您拥有包含 2 个字符串 姓名和年龄 和一个位图 头像 的对象 所有内容都保存到 sqlite 数据库中 现在我希望可以在我的智能手表上访问这些对象 所以我想实现的是你可以去启动 启动应用程序并向左和向

随机推荐

  • 在常量表达式中调用“static constexpr”函数是...错误? [复制]

    这个问题在这里已经有答案了 我有以下代码 class MyClass static constexpr bool foo return true void bar noexcept foo 我希望从那时起foo is a static co
  • OracleConnection.Open 抛出 ORA-12541 TNS 无侦听器

    所以我通过 C 连接到外部服务器 我刚刚安装甲骨文11g我的机器上的客户端从这里 http www oracle com technetwork database windows downloads index 090165 html ht
  • 在 iPhone 上播放 CAF 声音的最简单方法?

    做到这一点有多难 有人告诉我 在 iPhone 上播放音频非常困难 实在不敢相信 但他说玩一个很难 但同时玩两个或三个就很难了 听起来很可怕 对此大家有什么想说的吗 我想要做什么 我有大约 10 个带有小光点 蜂鸣声和按钮按下声音的 CAF
  • 使用 Groovy 修改节点标签的 Jenkins/Hudson CLI API

    有谁知道如何以非手动方式修改 Jenkins Hudson 节点标签 我的意思是 彻底的 API 如该工具提供的 CLI API 当然无需重新启动 Jenkins Hudson 我的猜测是 最好的选择是使用 Groovy 脚本进入 Jenk
  • 在 JUnit 中检查异常的最佳实践是什么?

    我正在尝试编写测试用例 根据我所读到的内容 我的测试从一开始就应该失败 我应该努力让测试通过 但是 我发现自己正在编写测试来检查边界以及它们应该引起的异常 Test expected NegativeArraySizeException c
  • 如何从ABRecordID获取ABRecordRef?

    我已访问地址簿并成功从中提取了记录和必要信息 我也提取了recordid 我的问题是如何使用这个 recordid 来提取记录 我正在使用的代码是 ABRecordID recordId ABAddressBookRef addressBo
  • C# 如何将光驱盘符从 D: 更改为 Z:

    我正在尝试编写一种方法 将 CD ROM 驱动器从字母 D 更改为字母 Z 但对 WMI 没有任何运气 还有其他方法可以使用 C 来做到这一点吗 public void setVolCDROM SelectQuery queryCDROM
  • `git log --all` 怎么会错过提交点?

    提交后 我会提醒我处于分离的 HEAD 状态 gt git commit m Implemented Runrealfast algorithm detached HEAD af46ac9 Implemented Runrealfast a
  • AWS Lambda 热启动和冷启动

    您好 我是 AWS Lambda 新手 我想知道热 Lambda 函数 热启动 和冷 Lambda 函数 冷启动 是什么意思 谁能详细解释一下热 Lambda 和冷 Lambda 之间有什么区别 上传代码后或一段时间不活动后 您的 Lamb
  • 自解压可执行 C++

    我试图了解自解压 PE 文件的工作原理 有人可以解释为什么我的代码不起作用 或者修复 main 部分 include
  • 来自 std::string 的 std::istringstream 无需复制

    我一直在用这个 ifstream in file txt string line getline in line istringstream iss line 进行一些简单的解析 我想避免不必要的复制以提高性能 所以我尝试 ifstream
  • 如何用selenium获取响应状态码?

    作为一个新手 我想知道是否有一种方法可以获取http响应状态代码来判断一些期望 例如远程服务器关闭 url损坏 url重定向等 在硒中这是不可能的 欲了解更多信息 请点击here https github com seleniumhq se
  • 检测PHP会话是否存在

    Facebook 现在向用户提供订阅服务 以便您可以获得有关更改的实时更新 如果我的应用程序收到更新 我计划将其存储在数据库中 我还想检测他们的会话是否存在 如果是的话我也可以更新那里的数据 我的会话 ID 是 MD5 fb id 秘密 因
  • b-spinner 的 VUE-js 可访问性——使用 Aria 进行数据加载的音频公告,每 3 秒重复一次

    当微调器直观地显示数据正在加载时 我试图添加 数据加载 音频公告的可访问性 显然 我正在寻找一种声音公告 最好是一种无需单击任何内容即可自动播放的公告 我的目标是自动听到公告并在加载时每 3 秒重复一次 下面的代码会自动生成一个工作公告 然
  • 项目文件上的 intellij 图标

    intellij 在我的 java 文件上放置了看起来像没有入口标志的东西 带有一条线的红色圆圈 四处搜索但找不到原因 请问有人知道吗 这是一个 Maven 项目 如果这有影响的话 这意味着这些文件不是项目设置的一部分 您是如何创建该项目的
  • 将窗口固定到桌面/将窗口粘贴到桌面/“始终位于底部”窗口

    我正在 C Win32 中开发一个基本的桌面应用程序 我现在的目标是创建一个基本的 便签 应用程序固定 粘在桌面上 即始终位于桌面前面 但始终位于任何其他应用程序后面 这确实是一个个人项目 只是为了对抗我糟糕的记忆力 让我的任务 笔记始终在
  • 如何优化这个索引算法

    我的问题 无论如何 我可以加快计算速度吗 是否有更好的算法或实现可以用来计算相同的值 描述算法 我有一个复杂的索引问题 我正在努力以有效的方式解决它 目标是计算矩阵w prime使用大小相同的矩阵中的值的组合w dY and dX 的价值w
  • 在 JavaScript 中以 12 小时格式显示时间

    我想通过更改以下代码以 12 小时格式显示时间 我尝试了各种技术但没有运气 希望能从你们那里找到解决方案
  • 如何在android中解析HTML?

    我正在为 android 制作一个应用程序 该应用程序的功能之一是返回图书馆目录在线搜索的结果 应用程序需要以与应用程序的其余部分保持一致的方式显示搜索结果 这是通过自定义 HTML 表单执行的 即 需要解析搜索结果并显示有用的元素 我只是
  • CSS3动画在Android 2.2上闪烁(webkit-transform:translate(..) 同时缩放(..))

    我在 Android 上做了一些关于 CSS3 动画 使用 webkit transition 进行转换 的研究 CSS3 动画在 Webkit 中仍然是一个实验性功能 如果您尝试同时进行平移和缩放 您会发现 CSS 动画中存在一些小故障和