mg4377娱乐娱城官网_mg4377娱乐手机版_www.mg4377.com

Android达成Activity页面跳转切换动画特效,Android页

时间:2019-06-06 17:19来源:mg4377娱乐手机版
一、项目Src下新建anim包 创造anim包,存放动画xml 贰、下一步动画 位移动画解释-百分百pp:代表父窗体,百分之百:代表任何窗体,-:代码向左移动;前1页面移出:tran_out.xml(本身创办

一、项目Src下新建anim包 创造anim包,存放动画xml 贰、下一步动画 位移动画 解释-百分百pp:代表父窗体,百分之百:代表任何窗体,-:代码向左移动; 前1页面移出:tran_out.xml(本身创办的要选取translate)

作者:邹峰立,微博:zrunker,邮箱:zrunker@yahoo.com,微信公众号:木笔花创作,个人平台:www.ibooker.cc。

本文选自辛夷创作平台第55篇文章。读书最初的小说 。

页面间的切换很分布,友好的连片页面包车型大巴切换是体验的叁个最首要部分,上面用ViewPager为例,完结页面切换的卡通片效果.

理解Android程序设计的人应有驾驭,在Android 贰.0今后有了overridePendingTransition(),在那之中里面四个参数,2个是前四个activity的脱离,另1个activity的进入。

<?xml version="1.0" encoding="utf-8"?>
<translate  xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="0"
    android:toXDelta="-100%p"
    android:fromYDelta="0"
    android:toYDelta="0"
    android:duration="500"
    >

</translate>
```下一页面进入:Tran_in.xml

图片 1

普通的页面切换:

正如代码:

<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="" android:fromXDelta="100%p" android:toXDelta="0" android:fromYDelta="0" android:toYDelta="0" android:duration="500" >

麝囊花创作

图片 2pager_no by keith

@Override  
public void onCreate(Bundle savedInstanceState) {  
   super.onCreate(savedInstanceState);  
   setContentView(R.layout.SplashScreen);  
   new Handler().postDelayed(new Runnable() {  
    @Override  
    public void run() {  
    Intent mainIntent = new Intent(SplashScreen.this,   AndroidNews.class);  
    SplashScreen.this.startActivity(mainIntent);  
    SplashScreen.this.finish();  
    overridePendingTransition(R.anim.zoomin,R.anim.zoomout);  
    }  
   }, 3000);  
} 

</translate> ```三、使用动画片: 在开关onclike下执行的不二秘诀体内加入:overridePendingTransition(CR-V.anim.tran_in,R.anim.tran_out); //八个activity切换效果,放在finish()恐怕startActivity()前边就可以

在数不清运用中页面跳转动画或许各不一致,只怕是左右滑动,也可能是内外切换或然淡入淡出等。那么些页面切换效果是怎么落到实处的吧?

自定义切换动画

  1. 创设三个子类达成ViewPager.PageTransformer接口
  2. 调用ViewPager的setPageTransformer()方法设置自定义的ViewPager.PageTransformer

详见表明:ViewPager.PageTransformer中只有三个措施transformPage(View page, float position),每趟页面有移动时,左近的page都会调用这么些点子(可是小编看源码里面是遍历全数的child,每种都调用二遍)

 // ViewPager.java @CallSuper protected void onPageScrolled(int position, float offset, int offsetPixels) { ... // mPageTransformer持有我们new的自定义的PageTransformer的对象 if (mPageTransformer != null) { final int scrollX = getScrollX(); final int childCount = getChildCount(); // 遍历所有的child for (int i = 0; i < childCount; i  ) { final View child = getChildAt; final LayoutParams lp = (LayoutParams) child.getLayoutParams(); if (lp.isDecor) continue; final float transformPos =  (child.getLeft() - scrollX) / getClientWidth(); // 回调transformPage()方法 mPageTransformer.transformPage(child, transformPos); } } mCalledSuper = true; }

下一场大家得以在自定义的PageTransformer类中的transformPage()方法,依据决断position参数来对相应的page来拓展对应的操作,对于postion那些参数,提醒者page相对于中间的职位,如源码写的公式:

transformPos =  (child.getLeft() - scrollX) / getClientWidth();

如图:

图片 3Android达成Activity页面跳转切换动画特效,Android页面包车型地铁切换动画代码完结。page_transformer_position.png

先是要在res文件夹下构造建设anim文件夹,然后把动画效果xml文件放到里面去

同理,附上上一步动画代码 Tran_pre_out.xm;

AppTheme简介

其实在Android开辟中得以经过代码去落到实处页面切换效果,也能够透过安装Theme主旨来完成,可是应用程序主旨AppTheme往往会被有个别开拓者忽略掉,因为在一般开荒中暗中认可宗旨就足以了。其实宗旨设置能够达成应用软件繁多效果,举个例子落到实处窗体透明显示,应用软件全部切换效果等。

AppTheme完毕窗体透分明示

选取Eclipse开辟APP进度中,只怕有个别开荒者会碰到进入App的时候先会白屏也许黑屏一下随后在进入大家想要的布局,那几个缘故有两种恐怕是主题设置难题(私下认可宗旨导致/自定义主题不创造造成),也说不定是机型问题(分裂的无绳电话机暗许大旨不雷同)。那时候就能够透过设置AppTheme来化解那1主题材料。
设置宗旨要求在res文件夹中找到style.xml,并修改私下认可核心:

<resources>
<!--
        Base application theme, dependent on API level. This theme is replaced
        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
     -->
    <style name="AppBaseTheme" parent="android:Theme.Light">
    <!--
            Theme customizations available in newer API levels can go in
            res/values-vXX/styles.xml, while customizations related to
            backward-compatibility can go here.         -->
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowNoTitle">true</item>
    </style>

<!-- Application theme. -->
    <style name="AppTheme" parent="AppBaseTheme">
  <!-- All customizations that are NOT specific to a particular API-level can go here. -->
        <!--设置窗体透明-->
        <item name="android:windowIsTranslucent">true</item>
        <!--设置窗体无主题-->
        <item name="android:windowNoTitle">true</item>
    </style>
</resources>

其后再清单文件AndroidManifest.xml中安装修改后的主旨为运用大旨:

<application
    ......
    android:theme="@style/AppTheme" >
        ......
</application>

自定义1 -- Zoom-out page transformer

效果:

图片 4zoom_out by keith

代码:

public class ZoomOutPageTransformer implements ViewPager.PageTransformer { private static final float MIN_SCALE = 0.85f; private static final float MIN_ALPHA = 0.5f; public void transformPage(View view, float position) { int pageWidth = view.getWidth(); int pageHeight = view.getHeight(); if (position < -1) { // [-Infinity,-1) // This page is way off-screen to the left. view.setAlpha; } else if (position <= 1) { // [-1,1] // Modify the default slide transition to shrink the page as well float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs); float vertMargin = pageHeight * (1 - scaleFactor) / 2; float horzMargin = pageWidth * (1 - scaleFactor) / 2; if (position < 0) { // 如果页面在左边,向右偏移一点 view.setTranslationX(horzMargin - vertMargin / 2); } else { // 如果页面在右边,向左偏移一点 view.setTranslationX(-horzMargin   vertMargin / 2); } // Scale the page down (between MIN_SCALE and 1) view.setScaleX(scaleFactor); view.setScaleY(scaleFactor); // Fade the page relative to its size. view.setAlpha(MIN_ALPHA   (scaleFactor - MIN_SCALE) / (1 - MIN_SCALE) * (1 - MIN_ALPHA)); } else { // (1, Infinity] // This page is way off-screen to the right. view.setAlpha; } }}

图片 5

<?xml version="1.0" encoding="utf-8"?>
<translate  xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="0"
    android:toXDelta="100%p"
    android:fromYDelta="0"
    android:toYDelta="0"
    android:duration="500"
    >
</translate>
```Tran_pre_in.xm

AppTheme实现页面全体切换动画-右进左出

突发性为了满意全部机型切换动画统1可能为了兑现独特的页面全体切换动画,能够依赖AppTheme实行落到实处。

譬如要落到实处应用程序右进左出的作用,该怎么落实啊?

首先要定义页面动画。

在res/anim文件增多动画文件,这里定义slide_left _in.xml(页面关闭进入),slide_left _out.xml(页面展开退出),slide_right _in.xml(页面展开进去),slide_right _out.xml(页面关闭退出)。

A:slide_left _in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="300"
        android:fromXDelta="-100.0%p"
        android:toXDelta="0.0" />
</set>

B:slide_left _out.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="300"
        android:fromXDelta="0.0"
        android:toXDelta="-100.0%p" />
</set>

C:slide_right _in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="300"
        android:fromXDelta="100.0%p"
        android:toXDelta="0.0" />
</set>

D:slide_right _out.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="300"
        android:fromXDelta="0.0"
        android:toXDelta="100.0%p" />
</set>

设置宗旨卡通

最终只要在style.xml中期维修改AppTheme主旨卡通就可以。

<resources>

  <!-- 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="windowNoTitle">true</item>
        <!--设置窗体透明-->
        <item name="android:windowIsTranslucent">true</item>
        <!--设置窗体切换动画-->
        <item name="android:windowAnimationStyle">@style/activityAnimation</item>
    </style>

  <!--Activity进入和退出动画-->
    <!-- animation 样式 -->
    <style name="activityAnimation" parent="@android:style/Animation">
        <item name="android:activityOpenEnterAnimation">@anim/slide_right_in</item>
        <item name="android:activityOpenExitAnimation">@anim/slide_left_out</item>
        <item name="android:activityCloseEnterAnimation">@anim/slide_left_in</item>
        <item name="android:activityCloseExitAnimation">@anim/slide_right_out</item>
    </style>

</resources>

自定义2 -- Depth page transformer

图片 6pager_depth by keith

代码:

public class DepthPageTransformer implements ViewPager.PageTransformer { private static final float MIN_SCALE = 0.75f; public void transformPage(View view, float position) { int pageWidth = view.getWidth(); if (position < -1) { // [-Infinity,-1) // This page is way off-screen to the left. view.setAlpha; } else if (position <= 0) { // [-1,0] // Use the default slide transition when moving to the left page view.setAlpha; view.setTranslationX; view.setScaleX; view.setScaleY; } else if (position <= 1) { // (0,1] // Fade the page out. view.setAlpha(1 - position); // Counteract the default slide transition // 这一步很重要,设置了这个才有浮出的效果,否则效果是从左右进出,而不是上下 view.setTranslationX(pageWidth * -position); // Scale the page down (between MIN_SCALE and 1) float scaleFactor = MIN_SCALE   (1 - MIN_SCALE) * (1 - Math.abs); view.setScaleX(scaleFactor); view.setScaleY(scaleFactor); } else { // (1, Infinity] // This page is way off-screen to the right. view.setAlpha; } }}

zoomin.xml

<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="" android:fromXDelta="-100%p" android:toXDelta="0" android:fromYDelta="0" android:toYDelta="0" android:duration="500" >

代码达成页面切换动画

在支付中时常会碰着有的比较非常的页面要实行一定的页面切换动画,那个时候能够注重代码实现相应的卡通片效果。

要想通过代码完成页面切换效果,必要借助于Activity类提供的overridePendingTransition方法来运作页面进入和退出动画。

/*
 *  页面切换动画
 *  @param enterAnim 第二个activity进入时的动画
 *  @param exitAnim 第一个activity退出时的动画
 */
overridePendingTransition(int enterAnim, int exitAnim);

该办法是Android2.0从此才有的艺术,只要紧挨着startActivity()大概finish()函数之后调用,就能够兑现页面切换动画。

如:从MainActivity到BActivity

// 进入BActivity
Intent intent = new Intent(this, BActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.zoomin, R.anim.zoomout);

个中猎豹CS6.anim.zoomin和奇骏.anim.zoomout是自定义的动画文件,保存到res/anim。

A:zoomin.xml

<?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:duration="2000"
        android:fromXScale="0.1"
        android:fromYScale="0.1"
        android:pivotX="50%p"
        android:pivotY="50%p"
        android:toXScale="1.0"
        android:toYScale="1.0" />

  <!-- 这里为了看到动画演示效果,把动画持续时间设为3秒 -->
    <alpha
        android:duration="1000"
        android:fromAlpha="0.1"
        android:toAlpha="1.0" />

</set>

B:zoomout.xml

<?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" >

  <scale
        android:duration="2000"
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:pivotX="50%p"
        android:pivotY="50%p"
        android:toXScale=".5"
        android:toYScale=".5" />

  <!--
           系统内置的动画持续时间
           android:duration="@android:integer/config_mediumAnimTime"
    -->
    <alpha
        android:duration="1000"
        android:fromAlpha="1.0"
        android:toAlpha="0" />

</set>

Github地址
翻阅原来的书文


图片 7

微信公众号:紫风流创作

自定义3 -- Rotate page transformer

效果:

图片 8pager_rotate by keith

代码:

 public class RotatePageTransformer implements ViewPager.PageTransformer { private static final float MIN_SCALE = 0.75f; @Override public void transformPage(View page, float position) { if (position < -1 || position > 1) { page.setAlpha; } else { page.setRotation(360 * position); // Fade the page out. page.setAlpha(1 - Math.abs); float scaleFactor = MIN_SCALE   (1 - MIN_SCALE) * (1 - Math.abs); page.setScaleX(scaleFactor); page.setScaleY(scaleFactor); } } }
<?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:duration="@android:integer/config_mediumAnimTime"
        Android:fromXScale="2.0"
        Android:fromYScale="2.0"
        Android:pivotX="50%p"
        Android:pivotY="50%p"
        Android:toXScale="1.0"
        Android:toYScale="1.0" />
</set>

</translate> ```应用动画片: overridePendingTransition(路虎极光.anim.tran_pre_in,R.anim.tran_pre_out);

Notice

  • ViewPager.PageTransformer,这些类对于ViewPager依然挺实用的,记住用

zoomout.xml

编辑:mg4377娱乐手机版 本文来源:Android达成Activity页面跳转切换动画特效,Android页

关键词: Android java Android... 书客创作 页面