由于看了IOS上面很多开发者开发的APP的视图界面切换动画体验非常好,这些都是IOS自带的,但是Android的Activity等视图切换动画并没有提供原生的,所以特此写了一个可以媲美IOS视图切换动画的Android视图切换动画特效库!SwitchLayout!可以说是目前Android上第一个,也是唯一的一个强大的视图切换动画库引擎!
作者:谭东
QQ:852041173
项目开源!推荐使用jar包形式!
没有经过作者允许,不可修改项目库源码自行发布。
如果你的项目中使用了SwtichLayout,建议你在您的APP关于页面注明SwitchLayout库提供支持!非常感谢!如果您觉得SwitchLayout强大,欢迎推荐给你们的朋友。
如果有什么建议,也可以反馈给我,会及时升级SwitchLayout库。
SwitchLayout 的1.0jar包下载地址和Demo下载地址:http://pan.baidu.com/s/1dD6baLV
源码和demo在github地址:https://github.com/jaychou2012/SwitchLayout
好了,先看下主要的界面支持的视图切换特效吧!(此为Demo截图)
、
效果引擎足够媲美IOS了。
里面的列表中,每个特效暴露的自定义扩展特效引擎接口大概可以扩充8个特效。所以一共大概可以扩充105种特效!足够强大!
好了,下面说下大致的用法:
1.导入SwitchLayout1.0.jar或者下载开源库。
2.每个Activity实现接口implements SwichLayoutInterFace。推荐这种用法;接口里分别实现2个方法:setEnterSwichLayout();和setExitSwichLayout();这两个方法分别是设置进入Activity动画和离开Activity的动画的。
在onCreate()里调用setEnterSwichLayout(); 在关闭Activity操作里调用setExitSwichLayout(); 如果需要的话在onKeyDown里拦截返回按键,调用setExitSwichLayout();
3.具体特效调用(举一个例子): SwitchLayout.getSlideFromBottom(this, false,BaseEffects.getMoreSlowEffect());
// 三个参数分别为(Activity/View,是否关闭Activity,特效(可为空));每个特效支持8种扩种,也可以不填特效。
4.注意,在项目注册清单里,每个Activity要设置主题为透明主题。 android:theme=”@android:style/Theme.Translucent”,API在11以上即可。
下面贴下SwitchLayoutDemo里的代码:
**[java]** [view plain](http://blog.csdn.net/jay100500/article/details/42227365#)[copy](http://blog.csdn.net/jay100500/article/details/42227365#)[](https://code.csdn.net/snippets/565636)[](https://code.csdn.net/snippets/565636/fork) <div> <embed id="ZeroClipboardMovie_1" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" type="application/x-shockwave-flash" width="18" height="18" align="middle" name="ZeroClipboardMovie_1"> </embed> </div> </div> - <span class="keyword">package</span> com.tandong.swichlayoutdemo; - - <span class="keyword">import</span> android.app.Activity; - <span class="keyword">import</span> android.content.Intent; - <span class="keyword">import</span> android.os.Bundle; - <span class="keyword">import</span> android.view.View; - <span class="keyword">import</span> android.view.View.OnClickListener; - <span class="keyword">import</span> android.view.Window; - <span class="keyword">import</span> android.widget.Button; - - <span class="keyword">import</span> com.tandong.swichlayout.BaseEffects; - <span class="keyword">import</span> com.tandong.swichlayout.SwitchLayout; - - <span class="comment">/**</span> - <span class="comment"> * SwitchLayout</span> - <span class="comment"> * </span> - <span class="comment"> * QQ 852041173</span> - <span class="comment"> * </span> - <span class="comment"> * 为Android提供IOS平台自有的界面视图切换动画而开发此库,工作量也不小,感谢支持SwitchLayout</span> - <span class="comment"> * </span> - <span class="comment"> * 如果想自定义特效动画时长的话,请在此四个变量对应设置 SwitchLayout.animDuration = 1000;</span> - <span class="comment"> * SwitchLayout.longAnimDuration = 2000; BaseAnimViewS.animDuration = 1000;</span> - <span class="comment"> * BaseAnimViewS.longAnimDuration = 2000;即可。单位毫秒。</span> - <span class="comment"> * </span> - <span class="comment"> * 以后SwitchLayout将会划分入我的SmartUI库下面</span> - <span class="comment"> * </span> - <span class="comment"> * @author Tan Dong(谭东) 2014.12.28</span> - <span class="comment"> * </span> - <span class="comment"> */</span> - <span class="keyword">public</span> <span class="keyword">class</span> MainActivity <span class="keyword">extends</span> Activity { - <span class="keyword">private</span> Button btn_ok, btn_1, btn_2, btn_3, btn_4, btn_5, btn_6, btn_7, - btn_8, btn_9, btn_10, btn_11, btn_12, btn_13, btn_14; - - <span class="annotation">@Override</span> - <span class="keyword">protected</span> <span class="keyword">void</span> onCreate(Bundle savedInstanceState) { - requestWindowFeature(Window.FEATURE_NO_TITLE); - <span class="keyword">super</span>.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - initView(); - - <span class="comment">// 设置进入Activity的Activity特效动画,同理可拓展为布局动画</span> - SwitchLayout.getSlideFromBottom(<span class="keyword">this</span>, <span class="keyword">false</span>, - BaseEffects.getQuickToSlowEffect()); - <span class="comment">// 三个参数分别为(Activity/View,是否关闭Activity,特效(可为空))</span> - initListener(); - - } - - <span class="keyword">private</span> <span class="keyword">void</span> initListener() { - btn_ok.setOnClickListener(<span class="keyword">new</span> OnClickListener() { - - <span class="annotation">@Override</span> - <span class="keyword">public</span> <span class="keyword">void</span> onClick(View arg0) { - <span class="comment">// TODO Auto-generated method stub</span> - Intent in = <span class="keyword">new</span> Intent(MainActivity.<span class="keyword">this</span>, SecondActivity.<span class="keyword">class</span>); - in.putExtra(<span class="string">“key”</span>, <span class="number"></span>); - MainActivity.<span class="keyword">this</span>.startActivity(in); - } - }); - - btn_1.setOnClickListener(<span class="keyword">new</span> OnClickListener() { - - <span class="annotation">@Override</span> - <span class="keyword">public</span> <span class="keyword">void</span> onClick(View arg0) { - <span class="comment">// TODO Auto-generated method stub</span> - Intent in = <span class="keyword">new</span> Intent(MainActivity.<span class="keyword">this</span>, SecondActivity.<span class="keyword">class</span>); - in.putExtra(<span class="string">“key”</span>, <span class="number">1</span>); - MainActivity.<span class="keyword">this</span>.startActivity(in); - } - }); - btn_2.setOnClickListener(<span class="keyword">new</span> OnClickListener() { - - <span class="annotation">@Override</span> - <span class="keyword">public</span> <span class="keyword">void</span> onClick(View arg0) { - <span class="comment">// TODO Auto-generated method stub</span> - Intent in = <span class="keyword">new</span> Intent(MainActivity.<span class="keyword">this</span>, SecondActivity.<span class="keyword">class</span>); - in.putExtra(<span class="string">“key”</span>, <span class="number">2</span>); - MainActivity.<span class="keyword">this</span>.startActivity(in); - } - }); - btn_3.setOnClickListener(<span class="keyword">new</span> OnClickListener() { - - <span class="annotation">@Override</span> - <span class="keyword">public</span> <span class="keyword">void</span> onClick(View arg0) { - <span class="comment">// TODO Auto-generated method stub</span> - Intent in = <span class="keyword">new</span> Intent(MainActivity.<span class="keyword">this</span>, SecondActivity.<span class="keyword">class</span>); - in.putExtra(<span class="string">“key”</span>, <span class="number">3</span>); - MainActivity.<span class="keyword">this</span>.startActivity(in); - } - }); - btn_4.setOnClickListener(<span class="keyword">new</span> OnClickListener() { - - <span class="annotation">@Override</span> - <span class="keyword">public</span> <span class="keyword">void</span> onClick(View arg0) { - <span class="comment">// TODO Auto-generated method stub</span> - Intent in = <span class="keyword">new</span> Intent(MainActivity.<span class="keyword">this</span>, SecondActivity.<span class="keyword">class</span>); - in.putExtra(<span class="string">“key”</span>, <span class="number">4</span>); - MainActivity.<span class="keyword">this</span>.startActivity(in); - } - }); - btn_5.setOnClickListener(<span class="keyword">new</span> OnClickListener() { - - <span class="annotation">@Override</span> - <span class="keyword">public</span> <span class="keyword">void</span> onClick(View arg0) { - <span class="comment">// TODO Auto-generated method stub</span> - Intent in = <span class="keyword">new</span> Intent(MainActivity.<span class="keyword">this</span>, SecondActivity.<span class="keyword">class</span>); - in.putExtra(<span class="string">“key”</span>, <span class="number">5</span>); - MainActivity.<span class="keyword">this</span>.startActivity(in); - } - }); - btn_6.setOnClickListener(<span class="keyword">new</span> OnClickListener() { - - <span class="annotation">@Override</span> - <span class="keyword">public</span> <span class="keyword">void</span> onClick(View arg0) { - <span class="comment">// TODO Auto-generated method stub</span> - Intent in = <span class="keyword">new</span> Intent(MainActivity.<span class="keyword">this</span>, SecondActivity.<span class="keyword">class</span>); - in.putExtra(<span class="string">“key”</span>, <span class="number">6</span>); - MainActivity.<span class="keyword">this</span>.startActivity(in); - } - }); - - btn_7.setOnClickListener(<span class="keyword">new</span> OnClickListener() { - - <span class="annotation">@Override</span> - <span class="keyword">public</span> <span class="keyword">void</span> onClick(View arg0) { - <span class="comment">// TODO Auto-generated method stub</span> - Intent in = <span class="keyword">new</span> Intent(MainActivity.<span class="keyword">this</span>, SecondActivity.<span class="keyword">class</span>); - in.putExtra(<span class="string">“key”</span>, <span class="number">7</span>); - MainActivity.<span class="keyword">this</span>.startActivity(in); - } - }); - btn_8.setOnClickListener(<span class="keyword">new</span> OnClickListener() { - - <span class="annotation">@Override</span> - <span class="keyword">public</span> <span class="keyword">void</span> onClick(View arg0) { - <span class="comment">// TODO Auto-generated method stub</span> - Intent in = <span class="keyword">new</span> Intent(MainActivity.<span class="keyword">this</span>, SecondActivity.<span class="keyword">class</span>); - in.putExtra(<span class="string">“key”</span>, <span class="number">8</span>); - MainActivity.<span class="keyword">this</span>.startActivity(in); - } - }); - btn_9.setOnClickListener(<span class="keyword">new</span> OnClickListener() { - - <span class="annotation">@Override</span> - <span class="keyword">public</span> <span class="keyword">void</span> onClick(View arg0) { - <span class="comment">// TODO Auto-generated method stub</span> - Intent in = <span class="keyword">new</span> Intent(MainActivity.<span class="keyword">this</span>, SecondActivity.<span class="keyword">class</span>); - in.putExtra(<span class="string">“key”</span>, <span class="number">9</span>); - MainActivity.<span class="keyword">this</span>.startActivity(in); - } - }); - btn_10.setOnClickListener(<span class="keyword">new</span> OnClickListener() { - - <span class="annotation">@Override</span> - <span class="keyword">public</span> <span class="keyword">void</span> onClick(View arg0) { - <span class="comment">// TODO Auto-generated method stub</span> - Intent in = <span class="keyword">new</span> Intent(MainActivity.<span class="keyword">this</span>, SecondActivity.<span class="keyword">class</span>); - in.putExtra(<span class="string">“key”</span>, <span class="number">10</span>); - MainActivity.<span class="keyword">this</span>.startActivity(in); - } - }); - btn_11.setOnClickListener(<span class="keyword">new</span> OnClickListener() { - - <span class="annotation">@Override</span> - <span class="keyword">public</span> <span class="keyword">void</span> onClick(View arg0) { - <span class="comment">// TODO Auto-generated method stub</span> - Intent in = <span class="keyword">new</span> Intent(MainActivity.<span class="keyword">this</span>, SecondActivity.<span class="keyword">class</span>); - in.putExtra(<span class="string">“key”</span>, <span class="number">11</span>); - MainActivity.<span class="keyword">this</span>.startActivity(in); - } - }); - btn_12.setOnClickListener(<span class="keyword">new</span> OnClickListener() { - - <span class="annotation">@Override</span> - <span class="keyword">public</span> <span class="keyword">void</span> onClick(View arg0) { - <span class="comment">// TODO Auto-generated method stub</span> - Intent in = <span class="keyword">new</span> Intent(MainActivity.<span class="keyword">this</span>, SecondActivity.<span class="keyword">class</span>); - in.putExtra(<span class="string">“key”</span>, <span class="number">12</span>); - MainActivity.<span class="keyword">this</span>.startActivity(in); - } - }); - btn_13.setOnClickListener(<span class="keyword">new</span> OnClickListener() { - - <span class="annotation">@Override</span> - <span class="keyword">public</span> <span class="keyword">void</span> onClick(View arg0) { - <span class="comment">// TODO Auto-generated method stub</span> - Intent in = <span class="keyword">new</span> Intent(MainActivity.<span class="keyword">this</span>, SecondActivity.<span class="keyword">class</span>); - in.putExtra(<span class="string">“key”</span>, <span class="number">13</span>); - MainActivity.<span class="keyword">this</span>.startActivity(in); - } - }); - btn_14.setOnClickListener(<span class="keyword">new</span> OnClickListener() { - - <span class="annotation">@Override</span> - <span class="keyword">public</span> <span class="keyword">void</span> onClick(View arg0) { - <span class="comment">// TODO Auto-generated method stub</span> - Intent in = <span class="keyword">new</span> Intent(MainActivity.<span class="keyword">this</span>, SecondActivity.<span class="keyword">class</span>); - in.putExtra(<span class="string">“key”</span>, <span class="number">14</span>); - MainActivity.<span class="keyword">this</span>.startActivity(in); - } - }); - } - - <span class="keyword">private</span> <span class="keyword">void</span> initView() { - btn_ok = (Button) <span class="keyword">this</span>.findViewById(R.id.btn_ok); - btn_1 = (Button) <span class="keyword">this</span>.findViewById(R.id.btn_1); - btn_2 = (Button) <span class="keyword">this</span>.findViewById(R.id.btn_2); - btn_3 = (Button) <span class="keyword">this</span>.findViewById(R.id.btn_3); - btn_4 = (Button) <span class="keyword">this</span>.findViewById(R.id.btn_4); - btn_5 = (Button) <span class="keyword">this</span>.findViewById(R.id.btn_5); - btn_6 = (Button) <span class="keyword">this</span>.findViewById(R.id.btn_6); - btn_7 = (Button) <span class="keyword">this</span>.findViewById(R.id.btn_7); - btn_8 = (Button) <span class="keyword">this</span>.findViewById(R.id.btn_8); - btn_9 = (Button) <span class="keyword">this</span>.findViewById(R.id.btn_9); - btn_10 = (Button) <span class="keyword">this</span>.findViewById(R.id.btn_10); - btn_11 = (Button) <span class="keyword">this</span>.findViewById(R.id.btn_11); - btn_12 = (Button) <span class="keyword">this</span>.findViewById(R.id.btn_12); - btn_13 = (Button) <span class="keyword">this</span>.findViewById(R.id.btn_13); - btn_14 = (Button) <span class="keyword">this</span>.findViewById(R.id.btn_14); - - } - } ...