SwitchLayout安卓最佳切换动画

来源:互联网 发布:powerbook g4 windows 编辑:程序博客网 时间:2024/05/16 10:23
switchLayout:
1.Activity视图切换库,同时兼容View的动画
2.基础动画特效15个,每个可扩展8个,大概120种特效

可以媲美IOS视图切换动画的Android视图切换动画特效库


SwitchLayout 的1.0jar包下载地址和Demo下载地址:http://pan.baidu.com/s/1dD6baLV

源码和demo在github地址:https://github.com/jaychou2012/SwitchLayout

.每个Activity实现接口implements SwichLayoutInterFace。推荐这种用法;接口里分别实现2个方法:setEnterSwichLayout();和setExitSwichLayout();这两个方法分别是设置进入Activity动画和离开Activity的动画的。

在onCreate()里调用setEnterSwichLayout();  在关闭Activity操作里调用setExitSwichLayout(); 如果需要的话在onKeyDown里拦截返回按键,调用setExitSwichLayout();

具体特效调用(举一个例子): SwitchLayout.getSlideFromBottom(this, false,BaseEffects.getMoreSlowEffect());

// 三个参数分别为(Activity/View,是否关闭Activity,特效(可为空));每个特效支持8种扩种,也可以不填特效。


.注意,在项目注册清单里,每个Activity要设置主题为透明主题。 android:theme="@android:style/Theme.Translucent",API在11以上即可


  1. package com.tandong.swichlayoutdemo;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.Intent;  
  5. import android.os.Bundle;  
  6. import android.view.View;  
  7. import android.view.View.OnClickListener;  
  8. import android.view.Window;  
  9. import android.widget.Button;  
  10.   
  11. import com.tandong.swichlayout.BaseEffects;  
  12. import com.tandong.swichlayout.SwitchLayout;  
  13.   
  14. /** 
  15.  * SwitchLayout 
  16.  *  
  17.  *  
  18.  * 为Android提供IOS平台自有的界面视图切换动画而开发此库,工作量也不小,感谢支持SwitchLayout 
  19.  *  
  20.  * 如果想自定义特效动画时长的话,请在此四个变量对应设置 SwitchLayout.animDuration = 1000; 
  21.  * SwitchLayout.longAnimDuration = 2000; BaseAnimViewS.animDuration = 1000; 
  22.  * BaseAnimViewS.longAnimDuration = 2000;即可。单位毫秒。 
  23.  *  
  24.  * 以后SwitchLayout将会划分入我的SmartUI库下面 
  25.  *  
  26.  *  
  27.  */  
  28. public class MainActivity extends Activity {  
  29.     private Button btn_ok, btn_1, btn_2, btn_3, btn_4, btn_5, btn_6, btn_7,  
  30.             btn_8, btn_9, btn_10, btn_11, btn_12, btn_13, btn_14;  
  31.   
  32.     @Override  
  33.     protected void onCreate(Bundle savedInstanceState) {  
  34.         requestWindowFeature(Window.FEATURE_NO_TITLE);  
  35.         super.onCreate(savedInstanceState);  
  36.         setContentView(R.layout.activity_main);  
  37.         initView();  
  38.   
  39.         // 设置进入Activity的Activity特效动画,同理可拓展为布局动画  
  40.         SwitchLayout.getSlideFromBottom(thisfalse,  
  41.                 BaseEffects.getQuickToSlowEffect());  
  42.         // 三个参数分别为(Activity/View,是否关闭Activity,特效(可为空))  
  43.         initListener();  
  44.   
  45.     }  
  46.   
  47.     private void initListener() {  
  48.         btn_ok.setOnClickListener(new OnClickListener() {  
  49.   
  50.             @Override  
  51.             public void onClick(View arg0) {  
  52.                 // TODO Auto-generated method stub  
  53.                 Intent in = new Intent(MainActivity.this, SecondActivity.class);  
  54.                 in.putExtra("key"0);  
  55.                 MainActivity.this.startActivity(in);  
  56.             }  
  57.         });  
  58.   
  59.         btn_1.setOnClickListener(new OnClickListener() {  
  60.   
  61.             @Override  
  62.             public void onClick(View arg0) {  
  63.                 // TODO Auto-generated method stub  
  64.                 Intent in = new Intent(MainActivity.this, SecondActivity.class);  
  65.                 in.putExtra("key"1);  
  66.                 MainActivity.this.startActivity(in);  
  67.             }  
  68.         });  
  69.         btn_2.setOnClickListener(new OnClickListener() {  
  70.   
  71.             @Override  
  72.             public void onClick(View arg0) {  
  73.                 // TODO Auto-generated method stub  
  74.                 Intent in = new Intent(MainActivity.this, SecondActivity.class);  
  75.                 in.putExtra("key"2);  
  76.                 MainActivity.this.startActivity(in);  
  77.             }  
  78.         });  
  79.         btn_3.setOnClickListener(new OnClickListener() {  
  80.   
  81.             @Override  
  82.             public void onClick(View arg0) {  
  83.                 // TODO Auto-generated method stub  
  84.                 Intent in = new Intent(MainActivity.this, SecondActivity.class);  
  85.                 in.putExtra("key"3);  
  86.                 MainActivity.this.startActivity(in);  
  87.             }  
  88.         });  
  89.         btn_4.setOnClickListener(new OnClickListener() {  
  90.   
  91.             @Override  
  92.             public void onClick(View arg0) {  
  93.                 // TODO Auto-generated method stub  
  94.                 Intent in = new Intent(MainActivity.this, SecondActivity.class);  
  95.                 in.putExtra("key"4);  
  96.                 MainActivity.this.startActivity(in);  
  97.             }  
  98.         });  
  99.         btn_5.setOnClickListener(new OnClickListener() {  
  100.   
  101.             @Override  
  102.             public void onClick(View arg0) {  
  103.                 // TODO Auto-generated method stub  
  104.                 Intent in = new Intent(MainActivity.this, SecondActivity.class);  
  105.                 in.putExtra("key"5);  
  106.                 MainActivity.this.startActivity(in);  
  107.             }  
  108.         });  
  109.         btn_6.setOnClickListener(new OnClickListener() {  
  110.   
  111.             @Override  
  112.             public void onClick(View arg0) {  
  113.                 // TODO Auto-generated method stub  
  114.                 Intent in = new Intent(MainActivity.this, SecondActivity.class);  
  115.                 in.putExtra("key"6);  
  116.                 MainActivity.this.startActivity(in);  
  117.             }  
  118.         });  
  119.   
  120.         btn_7.setOnClickListener(new OnClickListener() {  
  121.   
  122.             @Override  
  123.             public void onClick(View arg0) {  
  124.                 // TODO Auto-generated method stub  
  125.                 Intent in = new Intent(MainActivity.this, SecondActivity.class);  
  126.                 in.putExtra("key"7);  
  127.                 MainActivity.this.startActivity(in);  
  128.             }  
  129.         });  
  130.         btn_8.setOnClickListener(new OnClickListener() {  
  131.   
  132.             @Override  
  133.             public void onClick(View arg0) {  
  134.                 // TODO Auto-generated method stub  
  135.                 Intent in = new Intent(MainActivity.this, SecondActivity.class);  
  136.                 in.putExtra("key"8);  
  137.                 MainActivity.this.startActivity(in);  
  138.             }  
  139.         });  
  140.         btn_9.setOnClickListener(new OnClickListener() {  
  141.   
  142.             @Override  
  143.             public void onClick(View arg0) {  
  144.                 // TODO Auto-generated method stub  
  145.                 Intent in = new Intent(MainActivity.this, SecondActivity.class);  
  146.                 in.putExtra("key"9);  
  147.                 MainActivity.this.startActivity(in);  
  148.             }  
  149.         });  
  150.         btn_10.setOnClickListener(new OnClickListener() {  
  151.   
  152.             @Override  
  153.             public void onClick(View arg0) {  
  154.                 // TODO Auto-generated method stub  
  155.                 Intent in = new Intent(MainActivity.this, SecondActivity.class);  
  156.                 in.putExtra("key"10);  
  157.                 MainActivity.this.startActivity(in);  
  158.             }  
  159.         });  
  160.         btn_11.setOnClickListener(new OnClickListener() {  
  161.   
  162.             @Override  
  163.             public void onClick(View arg0) {  
  164.                 // TODO Auto-generated method stub  
  165.                 Intent in = new Intent(MainActivity.this, SecondActivity.class);  
  166.                 in.putExtra("key"11);  
  167.                 MainActivity.this.startActivity(in);  
  168.             }  
  169.         });  
  170.         btn_12.setOnClickListener(new OnClickListener() {  
  171.   
  172.             @Override  
  173.             public void onClick(View arg0) {  
  174.                 // TODO Auto-generated method stub  
  175.                 Intent in = new Intent(MainActivity.this, SecondActivity.class);  
  176.                 in.putExtra("key"12);  
  177.                 MainActivity.this.startActivity(in);  
  178.             }  
  179.         });  
  180.         btn_13.setOnClickListener(new OnClickListener() {  
  181.   
  182.             @Override  
  183.             public void onClick(View arg0) {  
  184.                 // TODO Auto-generated method stub  
  185.                 Intent in = new Intent(MainActivity.this, SecondActivity.class);  
  186.                 in.putExtra("key"13);  
  187.                 MainActivity.this.startActivity(in);  
  188.             }  
  189.         });  
  190.         btn_14.setOnClickListener(new OnClickListener() {  
  191.   
  192.             @Override  
  193.             public void onClick(View arg0) {  
  194.                 // TODO Auto-generated method stub  
  195.                 Intent in = new Intent(MainActivity.this, SecondActivity.class);  
  196.                 in.putExtra("key"14);  
  197.                 MainActivity.this.startActivity(in);  
  198.             }  
  199.         });  
  200.     }  
  201.   
  202.     private void initView() {  
  203.         btn_ok = (Button) this.findViewById(R.id.btn_ok);  
  204.         btn_1 = (Button) this.findViewById(R.id.btn_1);  
  205.         btn_2 = (Button) this.findViewById(R.id.btn_2);  
  206.         btn_3 = (Button) this.findViewById(R.id.btn_3);  
  207.         btn_4 = (Button) this.findViewById(R.id.btn_4);  
  208.         btn_5 = (Button) this.findViewById(R.id.btn_5);  
  209.         btn_6 = (Button) this.findViewById(R.id.btn_6);  
  210.         btn_7 = (Button) this.findViewById(R.id.btn_7);  
  211.         btn_8 = (Button) this.findViewById(R.id.btn_8);  
  212.         btn_9 = (Button) this.findViewById(R.id.btn_9);  
  213.         btn_10 = (Button) this.findViewById(R.id.btn_10);  
  214.         btn_11 = (Button) this.findViewById(R.id.btn_11);  
  215.         btn_12 = (Button) this.findViewById(R.id.btn_12);  
  216.         btn_13 = (Button) this.findViewById(R.id.btn_13);  
  217.         btn_14 = (Button) this.findViewById(R.id.btn_14);  
  218.   
  219.     }  
  220. }  

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. package com.tandong.swichlayoutdemo;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.Intent;  
  5. import android.os.Bundle;  
  6. import android.view.KeyEvent;  
  7. import android.view.View;  
  8. import android.view.View.OnClickListener;  
  9. import android.view.Window;  
  10. import android.widget.ImageView;  
  11.   
  12. import com.tandong.swichlayout.BaseEffects;  
  13. import com.tandong.swichlayout.SwichLayoutInterFace;  
  14. import com.tandong.swichlayout.SwitchLayout;  
  15. import com.tandong.swichlayoutdemo.R;  
  16.   
  17. /** 
  18.  * SwitchLayout 
  19.  *  
  20.  * 为Android提供IOS平台自有的界面视图切换动画而开发此库,工作量也不小,感谢支持SwitchLayout 
  21.  *  
  22.  *  
  23.  */  
  24. public class SecondActivity extends Activity implements SwichLayoutInterFace {  
  25.     private Intent intent;  
  26.     private ImageView iv_back;  
  27.     private int key = 0;  
  28.   
  29.     @Override  
  30.     protected void onCreate(Bundle savedInstanceState) {  
  31.         requestWindowFeature(Window.FEATURE_NO_TITLE);  
  32.         super.onCreate(savedInstanceState);  
  33.         setContentView(R.layout.activity_second);  
  34.         initIntent();  
  35.         // 设置进入Activity的Activity特效动画,同理可拓展为布局动画  
  36.         setEnterSwichLayout();  
  37.     }  
  38.   
  39.     private void initIntent() {  
  40.         intent = getIntent();  
  41.         key = intent.getExtras().getInt("key");  
  42.         iv_back = (ImageView) this.findViewById(R.id.iv_back);  
  43.         iv_back.setOnClickListener(new OnClickListener() {  
  44.   
  45.             @Override  
  46.             public void onClick(View arg0) {  
  47.                 setExitSwichLayout();  
  48.             }  
  49.         });  
  50.     }  
  51.   
  52.     public boolean onKeyDown(int keyCode, KeyEvent event) {// 按返回键时退出Activity的Activity特效动画  
  53.   
  54.         if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {  
  55.             setExitSwichLayout();  
  56.             return true;  
  57.         }  
  58.         return super.onKeyDown(keyCode, event);  
  59.     }  
  60.   
  61.     @Override  
  62.     public void setEnterSwichLayout() {  
  63.         switch (key) {  
  64.         case 0:  
  65.             SwitchLayout.get3DRotateFromLeft(thisfalsenull);  
  66.             // 三个参数分别为(Activity/View,是否关闭Activity,特效(可为空))  
  67.             break;  
  68.         case 1:  
  69.             SwitchLayout.getSlideFromBottom(thisfalse,  
  70.                     BaseEffects.getMoreSlowEffect());  
  71.             break;  
  72.         case 2:  
  73.             SwitchLayout.getSlideFromTop(thisfalse,  
  74.                     BaseEffects.getReScrollEffect());  
  75.             break;  
  76.         case 3:  
  77.             SwitchLayout.getSlideFromLeft(thisfalse,  
  78.                     BaseEffects.getLinearInterEffect());  
  79.             break;  
  80.         case 4:  
  81.             SwitchLayout.getSlideFromRight(thisfalsenull);  
  82.             break;  
  83.         case 5:  
  84.             SwitchLayout.getFadingIn(this);  
  85.             break;  
  86.         case 6:  
  87.             SwitchLayout.ScaleBig(thisfalsenull);  
  88.             break;  
  89.         case 7:  
  90.             SwitchLayout.FlipUpDown(thisfalse,  
  91.                     BaseEffects.getQuickToSlowEffect());  
  92.             break;  
  93.         case 8:  
  94.             SwitchLayout.ScaleBigLeftTop(thisfalsenull);  
  95.             break;  
  96.         case 9:  
  97.             SwitchLayout.getShakeMode(thisfalsenull);  
  98.             break;  
  99.         case 10:  
  100.             SwitchLayout.RotateLeftCenterIn(thisfalsenull);  
  101.             break;  
  102.         case 11:  
  103.             SwitchLayout.RotateLeftTopIn(thisfalsenull);  
  104.             break;  
  105.         case 12:  
  106.             SwitchLayout.RotateCenterIn(thisfalsenull);  
  107.             break;  
  108.         case 13:  
  109.             SwitchLayout.ScaleToBigHorizontalIn(thisfalsenull);  
  110.             break;  
  111.         case 14:  
  112.             SwitchLayout.ScaleToBigVerticalIn(thisfalsenull);  
  113.             break;  
  114.         default:  
  115.             break;  
  116.         }  
  117.   
  118.     }  
  119.   
  120.     @Override  
  121.     public void setExitSwichLayout() {  
  122.         switch (key) {  
  123.         case 0:  
  124.             SwitchLayout.get3DRotateFromRight(thistruenull);  
  125.             break;  
  126.         case 1:  
  127.             SwitchLayout.getSlideToBottom(thistrue,  
  128.                     BaseEffects.getMoreSlowEffect());  
  129.             break;  
  130.         case 2:  
  131.             SwitchLayout.getSlideToTop(thistrue,  
  132.                     BaseEffects.getReScrollEffect());  
  133.             break;  
  134.         case 3:  
  135.             SwitchLayout.getSlideToLeft(thistrue,  
  136.                     BaseEffects.getLinearInterEffect());  
  137.             break;  
  138.         case 4:  
  139.             SwitchLayout.getSlideToRight(thistruenull);  
  140.             break;  
  141.         case 5:  
  142.             SwitchLayout.getFadingOut(thistrue);  
  143.             break;  
  144.         case 6:  
  145.             SwitchLayout.ScaleSmall(thistruenull);  
  146.             break;  
  147.         case 7:  
  148.             SwitchLayout.FlipUpDown(thistrue,  
  149.                     BaseEffects.getQuickToSlowEffect());  
  150.             break;  
  151.         case 8:  
  152.             SwitchLayout.ScaleSmallLeftTop(thistruenull);  
  153.             break;  
  154.         case 9:  
  155.             SwitchLayout.getShakeMode(thistruenull);  
  156.             break;  
  157.         case 10:  
  158.             SwitchLayout.RotateLeftCenterOut(thistruenull);  
  159.             break;  
  160.         case 11:  
  161.             SwitchLayout.RotateLeftTopOut(thistruenull);  
  162.             break;  
  163.         case 12:  
  164.             SwitchLayout.RotateCenterOut(thistruenull);  
  165.             break;  
  166.         case 13:  
  167.             SwitchLayout.ScaleToBigHorizontalOut(thistruenull);  
  168.             break;  
  169.         case 14:  
  170.             SwitchLayout.ScaleToBigVerticalOut(thistruenull);  
  171.             break;  
  172.         default:  
  173.             break;  
  174.         }  
  175.   
  176.     }  
  177.   
  178. }  

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     package="com.tandong.swichlayoutdemo"  
  4.     android:versionCode="1"  
  5.     android:versionName="1.0" >  
  6.   
  7.     <uses-sdk  
  8.         android:minSdkVersion="11"  
  9.         android:targetSdkVersion="19" />  
  10.   
  11.     <application  
  12.         android:allowBackup="true"  
  13.         android:icon="@drawable/ic_launcher"  
  14.         android:label="@string/app_name"  
  15.         android:theme="@style/AppTheme" >  
  16.         <activity  
  17.             android:name="com.tandong.swichlayoutdemo.MainActivity"  
  18.             android:label="@string/app_name"  
  19.             android:theme="@android:style/Theme.Translucent" >  
  20.             <intent-filter>  
  21.                 <action android:name="android.intent.action.MAIN" />  
  22.   
  23.                 <category android:name="android.intent.category.LAUNCHER" />  
  24.             </intent-filter>  
  25.         </activity>  
  26.         <activity  
  27.             android:name="com.tandong.swichlayoutdemo.SecondActivity"  
  28.             android:launchMode="singleTask"  
  29.             android:theme="@android:style/Theme.Translucent" >  
  30.         </activity>  
  31.     </application>  
  32.   
  33. </manifest>  


0 0
原创粉丝点击