轻轻松松为你的Android App加点特效

421993780 8年前
   <h2>前言</h2>    <p>今天突然在一个应用中看到一个转场动画,蛮有意思的</p>    <p>退出动画</p>    <p><img src="https://simg.open-open.com/show/ae7c577d9ae00e7f3c67cc2a92833b13.gif"></p>    <p>进入动画</p>    <p><img src="https://simg.open-open.com/show/a430ed524cfbb0056471f4ad628d0c6f.gif"></p>    <p>咋一看,以为是一个zoomView的动画,网上搜了一下,使用转场动画就能做到,但是网上的有点不大适用,<br> 这是从stackoverflow上找到的,但是不能控制时间,和设置像透明值等属性</p>    <pre>  <code class="language-java">ActivityOptionsCompat options = ActivityOptionsCompat.makeScaleUpAnimation(view, 0, 0,view.getWidth(), view.getHeight());  ActivityCompat.startActivity(MainActivity.this, intent, options.toBundle());</code></pre>    <p>还有一些从A-B,两个界面都会做zoom转场。稍微修改了下。</p>    <p> </p>    <pre>  <code class="language-java">zoom_enter.xml</code></pre>    <pre>  <code class="language-java"><?xml version="1.0" encoding="utf-8"?>  <set xmlns:android="http://schemas.android.com/apk/res/android"      android:interpolator="@android:anim/decelerate_interpolator">  //动画插值器   <scale android:fromXScale="2.0" // x轴从两杯的地方开始      android:toXScale="1.0"    // x轴缩放到1倍,即真实位置      android:fromYScale="2.0"// y轴从两杯的地方开始       android:toYScale="1.0"    // y轴缩放到1倍,即真实位置          android:pivotX="50%p"   //缩放位置 y轴的一半      android:pivotY="50%p"   //缩放位置 y轴的一半          android:duration="850" /> //动画持续时间  </set></code></pre>    <p> </p>    <pre>  <code class="language-java">zoom_out.xml</code></pre>    <p><br> 这里进入退出的时候不需要scale了,不然很奇怪</p>    <pre>  <code class="language-java"><?xml version="1.0" encoding="utf-8"?>  <set xmlns:android="http://schemas.android.com/apk/res/android"      android:interpolator="@android:anim/decelerate_interpolator"      android:zAdjustment="top"> //定义动画zorder的变换    <!--<scale android:fromXScale="1.0"             android:toXScale=".5"-->       <!--android:fromYScale="1.0"             android:toYScale=".5"-->          <!--android:pivotX="50%p"             android:pivotY="50%p"-->          <!--android:duration="@android:integer/config_mediumAnimTime" />-->      <alpha android:fromAlpha="1.0"           android:toAlpha="0"                android:duration="850"/>  </set></code></pre>    <p>使用</p>    <p>开始和进入的时候都加入这行代码, zoom_in 和 zoom_out的位置不要变</p>    <p><code>overridePendingTransition(R.animator.zoom_in,R.animator.zoom_out);</code></p>    <p> </p>    <p>遇到的问题</p>    <ul>     <li>在android studio 上加运行的时候,加了instan run ,导致有时修改后没有效果,需要卸载才有,当时纠结了好一阵</li>     <li><a href="http://www.open-open.com/lib/view/open1467960571891.html">动画属性值</a></li>    </ul>    <p><br>  </p>    <p><a href="/misc/goto?guid=4959675120134565444">阅读原文</a></p>