Skip to content

Commit

Permalink
Site updated: 2025-01-21 15:12:03
Browse files Browse the repository at this point in the history
  • Loading branch information
ysy950803 committed Jan 21, 2025
1 parent aecf079 commit d373bbc
Show file tree
Hide file tree
Showing 186 changed files with 627 additions and 627 deletions.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="https://blog.ysy950803.top/img/avatar-ysy.png">
<meta property="article:published_time" content="2018-08-02T16:00:00.000Z">
<meta property="article:modified_time" content="2024-08-26T07:47:32.413Z">
<meta property="article:modified_time" content="2025-01-21T07:06:28.432Z">
<meta property="article:author" content="YSY">
<meta property="article:tag" content="Android">
<meta property="article:tag" content="AOSP">
Expand Down Expand Up @@ -66,7 +66,7 @@
isHome: false,
isHighlightShrink: false,
isToc: false,
postUpdate: '2024-08-26 15:47:32'
postUpdate: '2025-01-21 15:06:28'
}</script><noscript><style type="text/css">
#nav {
opacity: 1
Expand Down Expand Up @@ -189,7 +189,7 @@
}
}
detectApple()
})(window)</script><script>document.oncontextmenu=function(){return!1}</script><script>document.addEventListener("DOMContentLoaded",function(){const e=document.getElementById("busuanzi_value_site_uv"),t=document.getElementById("busuanzi_value_site_pv"),n=new MutationObserver(e=>{for(let t of e)if("childList"===t.type){n.disconnect(),t.target.innerHTML=parseInt(t.target.innerHTML)+1e5;break}}),i=new MutationObserver(e=>{for(let t of e)if("childList"===t.type){i.disconnect(),t.target.innerHTML=parseInt(t.target.innerHTML)+3e5;break}}),r={childList:!0};n.observe(e,r),i.observe(t,r)});</script><meta name="referrer" content="no-referrer" /><meta name="generator" content="Hexo 6.3.0"></head><body><div id="sidebar"><div id="menu-mask"></div><div id="sidebar-menus"><div class="avatar-img is-center"><img src="/img/avatar-ysy.png" onerror="onerror=null;src='/img/friend_404.gif'" alt="avatar"/></div><div class="sidebar-site-data site-data is-center"><a href="/archives/"><div class="headline">文章</div><div class="length-num">93</div></a><a href="/tags/"><div class="headline">标签</div><div class="length-num">15</div></a><a href="/categories/"><div class="headline">分类</div><div class="length-num">0</div></a></div><hr class="custom-hr"/><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> Home</span></a></div><div class="menus_item"><a class="site-page" href="/archives/"><i class="fa-fw fas fa-archive"></i><span> Archives</span></a></div><div class="menus_item"><a class="site-page" href="/tags/"><i class="fa-fw fas fa-tags"></i><span> Tags</span></a></div><div class="menus_item"><a class="site-page" href="/gallery/"><i class="fa-fw fas fa-images"></i><span> Gallery</span></a></div><div class="menus_item"><a class="site-page" href="/about/"><i class="fa-fw fas fa-heart"></i><span> About</span></a></div></div></div></div><div class="post" id="body-wrap"><header class="post-bg" id="page-header" style="background-image: url('/img/home-bg.jpg')"><nav id="nav"><span id="blog-info"><a href="/" title="Pig Cat"><span class="site-name">Pig Cat</span></a></span><div id="menus"><div id="search-button"><a class="site-page social-icon search" href="javascript:void(0);"><i class="fas fa-search fa-fw"></i><span> Search</span></a></div><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> Home</span></a></div><div class="menus_item"><a class="site-page" href="/archives/"><i class="fa-fw fas fa-archive"></i><span> Archives</span></a></div><div class="menus_item"><a class="site-page" href="/tags/"><i class="fa-fw fas fa-tags"></i><span> Tags</span></a></div><div class="menus_item"><a class="site-page" href="/gallery/"><i class="fa-fw fas fa-images"></i><span> Gallery</span></a></div><div class="menus_item"><a class="site-page" href="/about/"><i class="fa-fw fas fa-heart"></i><span> About</span></a></div></div><div id="toggle-menu"><a class="site-page" href="javascript:void(0);"><i class="fas fa-bars fa-fw"></i></a></div></div></nav><div id="post-info"><h1 class="post-title">如何防止开发者选项关闭动画后使其失效</h1><div id="post-meta"><div class="meta-firstline"><span class="post-meta-date"><i class="far fa-calendar-alt fa-fw post-meta-icon"></i><span class="post-meta-label">发表于</span><time class="post-meta-date-created" datetime="2018-08-02T16:00:00.000Z" title="发表于 2018-08-03 00:00:00">2018-08-03</time><span class="post-meta-separator">|</span><i class="fas fa-history fa-fw post-meta-icon"></i><span class="post-meta-label">更新于</span><time class="post-meta-date-updated" datetime="2024-08-26T07:47:32.413Z" title="更新于 2024-08-26 15:47:32">2024-08-26</time></span></div><div class="meta-secondline"><span class="post-meta-separator">|</span><span class="post-meta-pv-cv" id="" data-flag-title="如何防止开发者选项关闭动画后使其失效"><i class="far fa-eye fa-fw post-meta-icon"></i><span class="post-meta-label">阅读量:</span><span id="busuanzi_value_page_pv"><i class="fa-solid fa-spinner fa-spin"></i></span></span></div></div></div></header><main class="layout" id="content-inner"><div id="post"><article class="post-content" id="article-container"><p>很多用户为了手机用起来感觉上快,在开发者选项里把系统动画给关了,即把那3个缩放比例改成了0,系统默认一般是1x。个人建议调到0.5x就很合适了,没必要关闭,否则某些动效比较多的App体验会很差。<br>本文的问题就是,当开发者选项中的动画缩放比例被全部调成0后,App中部分设置了duration的属性动画就会失效,表现为直接从开头跳到了结尾,没有动画过程。</p>
})(window)</script><script>document.oncontextmenu=function(){return!1}</script><script>document.addEventListener("DOMContentLoaded",function(){const e=document.getElementById("busuanzi_value_site_uv"),t=document.getElementById("busuanzi_value_site_pv"),n=new MutationObserver(e=>{for(let t of e)if("childList"===t.type){n.disconnect(),t.target.innerHTML=parseInt(t.target.innerHTML)+1e5;break}}),i=new MutationObserver(e=>{for(let t of e)if("childList"===t.type){i.disconnect(),t.target.innerHTML=parseInt(t.target.innerHTML)+3e5;break}}),r={childList:!0};n.observe(e,r),i.observe(t,r)});</script><meta name="referrer" content="no-referrer" /><meta name="generator" content="Hexo 6.3.0"></head><body><div id="sidebar"><div id="menu-mask"></div><div id="sidebar-menus"><div class="avatar-img is-center"><img src="/img/avatar-ysy.png" onerror="onerror=null;src='/img/friend_404.gif'" alt="avatar"/></div><div class="sidebar-site-data site-data is-center"><a href="/archives/"><div class="headline">文章</div><div class="length-num">93</div></a><a href="/tags/"><div class="headline">标签</div><div class="length-num">15</div></a><a href="/categories/"><div class="headline">分类</div><div class="length-num">0</div></a></div><hr class="custom-hr"/><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> Home</span></a></div><div class="menus_item"><a class="site-page" href="/archives/"><i class="fa-fw fas fa-archive"></i><span> Archives</span></a></div><div class="menus_item"><a class="site-page" href="/tags/"><i class="fa-fw fas fa-tags"></i><span> Tags</span></a></div><div class="menus_item"><a class="site-page" href="/gallery/"><i class="fa-fw fas fa-images"></i><span> Gallery</span></a></div><div class="menus_item"><a class="site-page" href="/about/"><i class="fa-fw fas fa-heart"></i><span> About</span></a></div></div></div></div><div class="post" id="body-wrap"><header class="post-bg" id="page-header" style="background-image: url('/img/home-bg.jpg')"><nav id="nav"><span id="blog-info"><a href="/" title="Pig Cat"><span class="site-name">Pig Cat</span></a></span><div id="menus"><div id="search-button"><a class="site-page social-icon search" href="javascript:void(0);"><i class="fas fa-search fa-fw"></i><span> Search</span></a></div><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> Home</span></a></div><div class="menus_item"><a class="site-page" href="/archives/"><i class="fa-fw fas fa-archive"></i><span> Archives</span></a></div><div class="menus_item"><a class="site-page" href="/tags/"><i class="fa-fw fas fa-tags"></i><span> Tags</span></a></div><div class="menus_item"><a class="site-page" href="/gallery/"><i class="fa-fw fas fa-images"></i><span> Gallery</span></a></div><div class="menus_item"><a class="site-page" href="/about/"><i class="fa-fw fas fa-heart"></i><span> About</span></a></div></div><div id="toggle-menu"><a class="site-page" href="javascript:void(0);"><i class="fas fa-bars fa-fw"></i></a></div></div></nav><div id="post-info"><h1 class="post-title">如何防止开发者选项关闭动画后使其失效</h1><div id="post-meta"><div class="meta-firstline"><span class="post-meta-date"><i class="far fa-calendar-alt fa-fw post-meta-icon"></i><span class="post-meta-label">发表于</span><time class="post-meta-date-created" datetime="2018-08-02T16:00:00.000Z" title="发表于 2018-08-03 00:00:00">2018-08-03</time><span class="post-meta-separator">|</span><i class="fas fa-history fa-fw post-meta-icon"></i><span class="post-meta-label">更新于</span><time class="post-meta-date-updated" datetime="2025-01-21T07:06:28.432Z" title="更新于 2025-01-21 15:06:28">2025-01-21</time></span></div><div class="meta-secondline"><span class="post-meta-separator">|</span><span class="post-meta-pv-cv" id="" data-flag-title="如何防止开发者选项关闭动画后使其失效"><i class="far fa-eye fa-fw post-meta-icon"></i><span class="post-meta-label">阅读量:</span><span id="busuanzi_value_page_pv"><i class="fa-solid fa-spinner fa-spin"></i></span></span></div></div></div></header><main class="layout" id="content-inner"><div id="post"><article class="post-content" id="article-container"><p>很多用户为了手机用起来感觉上快,在开发者选项里把系统动画给关了,即把那3个缩放比例改成了0,系统默认一般是1x。个人建议调到0.5x就很合适了,没必要关闭,否则某些动效比较多的App体验会很差。<br>本文的问题就是,当开发者选项中的动画缩放比例被全部调成0后,App中部分设置了duration的属性动画就会失效,表现为直接从开头跳到了结尾,没有动画过程。</p>
<p>我们先分析下为什么会这样。<br>看ValueAnimator(&#x2F;frameworks&#x2F;base&#x2F;core&#x2F;java&#x2F;android&#x2F;animation&#x2F;ValueAnimator.java)的部分源码:</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">public</span> <span class="keyword">final</span> <span class="type">boolean</span> <span class="title function_">doAnimationFrame</span><span class="params">(<span class="type">long</span> frameTime)</span> &#123;</span><br><span class="line"> ......</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">if</span> (mLastFrameTime &lt; <span class="number">0</span>) &#123;</span><br><span class="line"> <span class="keyword">if</span> (mSeekFraction &gt;= <span class="number">0</span>) &#123;</span><br><span class="line"> <span class="type">long</span> <span class="variable">seekTime</span> <span class="operator">=</span> (<span class="type">long</span>) (getScaledDuration() * mSeekFraction); <span class="comment">// 开发者选项改后此处为0</span></span><br><span class="line"> mStartTime = frameTime - seekTime;</span><br><span class="line"> mSeekFraction = -<span class="number">1</span>;</span><br><span class="line"> &#125;</span><br><span class="line"> mStartTimeCommitted = <span class="literal">false</span>;</span><br><span class="line"> &#125;</span><br><span class="line"> mLastFrameTime = frameTime;</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">final</span> <span class="type">long</span> <span class="variable">currentTime</span> <span class="operator">=</span> Math.max(frameTime, mStartTime);</span><br><span class="line"> <span class="type">boolean</span> <span class="variable">finished</span> <span class="operator">=</span> animateBasedOnTime(currentTime);</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">if</span> (finished) &#123;</span><br><span class="line"> endAnimation();</span><br><span class="line"> &#125;</span><br><span class="line"> <span class="keyword">return</span> finished;</span><br><span class="line">&#125;</span><br><span class="line"> </span><br><span class="line"><span class="type">boolean</span> <span class="title function_">animateBasedOnTime</span><span class="params">(<span class="type">long</span> currentTime)</span> &#123;</span><br><span class="line"> <span class="type">boolean</span> <span class="variable">done</span> <span class="operator">=</span> <span class="literal">false</span>;</span><br><span class="line"> <span class="keyword">if</span> (mRunning) &#123;</span><br><span class="line"> <span class="keyword">final</span> <span class="type">long</span> <span class="variable">scaledDuration</span> <span class="operator">=</span> getScaledDuration(); <span class="comment">// 开发者选项改后此处为0</span></span><br><span class="line"> ......</span><br><span class="line"> <span class="keyword">if</span> (scaledDuration == <span class="number">0</span>) &#123;</span><br><span class="line"> <span class="comment">// 0 duration animator, ignore the repeat count and skip to the end</span></span><br><span class="line"> done = <span class="literal">true</span>;</span><br><span class="line"> &#125; ......</span><br><span class="line"> &#125;</span><br><span class="line"> <span class="keyword">return</span> done;</span><br><span class="line">&#125;</span><br><span class="line"> </span><br><span class="line"> </span><br><span class="line"><span class="keyword">private</span> <span class="type">long</span> <span class="title function_">getScaledDuration</span><span class="params">()</span> &#123;</span><br><span class="line"> <span class="keyword">return</span> (<span class="type">long</span>)(mDuration * sDurationScale); <span class="comment">// 开发者选项修改直接影响sDuration的值</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

Expand Down
Loading

0 comments on commit d373bbc

Please sign in to comment.