平常用到的一些比较机智的动画
1.ViewCompat
ServiceApp里面看到一个二维码扫描/条形码输入的一个界面,两个界面放在一个Activity里面,切换二维码扫描跟条形码输入的时候会有一个过渡动画,
1.1先设置要做过渡动画的View
ViewCompat.setAlpha(rlBlur, 0);
1.2 在该显示的时候, 设置VISIBLE,(默认应该是GONE)
1 2 3 
  | rlBlur.setVisibility(View.VISIBLE); rlBlur.setBackground(new BitmapDrawable(null, blurBg)); ViewCompat.animate(rlBlur).alpha(1).setDuration(400).start(); 
  | 
 
1.3 在不显示的时候是指GONE和透明度
1 2 
  | rlBlur.setVisibility(View.GONE); ViewCompat.setAlpha(rlBlur, 0); 
  | 
 
1.4 也可以设置一些监听操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 
  | switch (v.getId()) {             case R.id.tv_qr_scan:                 if (!tvQrScan.isSelected()) {                     tvCodeInput.setSelected(false);                     tvQrScan.setSelected(true);                     ViewCompat.animate(llInput).alpha(0).setDuration(400).setListener(new ViewPropertyAnimatorListener() {                         @Override                         public void onAnimationStart(View view) {                         }                         @Override                         public void onAnimationEnd(View view) {                             llInput.setVisibility(View.GONE);                         }                         @Override                         public void onAnimationCancel(View view) {                         }                     }).start();                     mQRCodeView.startSpot();                 }                 break;             case R.id.tv_code_input:                 if (!tvCodeInput.isSelected()) {                     tvQrScan.setSelected(false);                     tvCodeInput.setSelected(true);                     ViewCompat.animate(llInput).alpha(1).setDuration(400).setListener(new ViewPropertyAnimatorListener() {                         @Override                         public void onAnimationStart(View view) {                             llInput.setVisibility(View.VISIBLE);                         }                         @Override                         public void onAnimationEnd(View view) {                         }                         @Override                         public void onAnimationCancel(View view) {                         }                     }).start();                     mQRCodeView.stopSpot();                 }                 break; 
  | 
 
感觉用起来还不错,有需要可以用这个,在两个VIEW切换的时候用,显得切换不会那么生硬。
2.Activity启动退出动画
2.1.首先在res/anim文件夹下创建进入和退出动画的set
这里以底部上滑出现和从顶部下滑退出为例:
activity_open.xml:
1 2 3 4 5 6 7 8 
  | <?xml version="1.0" encoding="utf-8"?>  <set xmlns:android="http://schemas.android.com/apk/res/android">     <translate      android:fromYDelta="100%p"      android:toYDelta="0"      android:duration="1500"    />  </set> 
  | 
 
:1 2 3 4 5 6 7 8 9 
  | ```xml <?xml version="1.0" encoding="utf-8"?>   <set xmlns:android="http://schemas.android.com/apk/res/android">      <translate       android:fromYDelta="25"       android:toYDelta="100%p"       android:duration="1500"      />   </set> 
  | 
 
2.2.设置启动动画:
1 2 3 4 
  | Intent intent = new Intent();  intent.setClassName(cxt,"com.test.mrn.android.route.RouteDemoActivity"); startActivity(intent);  overridePendingTransition(R.anim.activity_open,0); 
  | 
 
2.3.设置关闭动画
1 2 3 4 5 6 7 
  | button.setOnClickListener(new OnClickListener() {     @Override     public void onClick(View v) {         finish();         overridePendingTransition(0, R.anim.activity_close);       } }); 
  | 
 
3.使用style的方式定义Activity的切换动画
3.1 定义Application的style
1 2 3 4 5 
  | <application android:allowbackup="true" android:icon="@mipmap/ic_launcher"  android:label="@string/app_name"  android:supportsrtl="true"  android:theme="@style/AppTheme"> </application> 
  | 
 
3.2 定义具体的AppTheme样式
其中这里的windowAnimationStyle就是我们定义的Actvity切换动画的style。而@anim/slide_in_top就是我们定义的动画文件。也就是说通过切换Application的style,然后为windowAnimationStyle设置动画文件就可以全局的为Activity跳转配置动画效果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 
  |  <<!-- Base application theme. -->     <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">         <!-- Customize your theme here. -->         <item name="colorPrimary">@color/colorPrimary</item>         <item name="colorPrimaryDark">@color/colorPrimaryDark</item>         <item name="colorAccent">@color/colorAccent</item>         <item name="android:windowAnimationStyle">@style/activityAnim</item>     </style> <!-- 使用style方式定义activity切换动画 -->     <style name="activityAnim">         <item name="android:activityOpenEnterAnimation">@anim/slide_in_top</item>         <item name="android:activityOpenExitAnimation">@anim/slide_in_top</item>     </style> 
  | 
在windowAnimationStyle存在四中动画:
- activityOpenEnterAnimation
 
- activityOpenExitAnimation 
 
- activityCloseEnterAnimation
 
- activityCloseExitAnimation