关闭

Activity转场动画(透明Activity)

标签: androidappjava应用手机
1073人阅读 评论(5) 收藏 举报
分类:

公司的应用开发已经进入了优化阶段,这时就想给每一个打开的activity增加一个手势返回,当手指向右滑动时候,activity会跟着手指滑动,直至销毁(仿微信)。

想做成滑动返回的效果,当前的activity除了监听手势之外,自身的背景一定要是透明的!并且为了配合右滑返回的效果,activity进场的动画也不能采用默认的动画,应该让activity从屏幕的右侧飘进来~~activity销毁的时候向右侧飘去~~~


滑动中透明的Activity效果如上图所示:

首相在styles.xml中自定义一个转场的样式:

<style name="AnimationActivity" parent="@android:style/Animation.Activity">
        <item name="android:activityOpenEnterAnimation">@anim/slidein_from_right</item>
        <item name="android:activityOpenExitAnimation">@anim/xxxx</item>
        <item name="android:activityCloseExitAnimation">@anim/slideout_to_right</item>
        <item name="android:activityCloseEnterAnimation">@anim/xxxxx</item>
</style>
activityOpenEnterAnimation:A打开B,B进入时候的动画

activityOpenExitAnimation:A打开B,A消失时候的动画

activityCloseExitAnimation:B退出到A,B退出时候的动画

activityCloseEnterAnimation:B退出到A,A进入时候的动画


再将上面的样式关联到activity需要设置的样式上:

<style name="AppThemeLightTranslucent" parent="Theme.AppCompat.Light.DarkActionBar">
	<item name="android:windowAnimationStyle">@style/AnimationActivity</item>
	<item name="android:windowIsTranslucent">true</item>
	<item name="android:windowBackground">@android:color/transparent</item>
</style>
windowIsTranslucent和windowBackground就是将activity设置为透明


最后在manifest中将需要用到滑动返回的activity设置为我们自定义的样式:

<activity
    android:name=".MainActivity"
    android:screenOrientation="portrait"
    android:theme="@style/AppThemeLightTranslucent"
    />

通过上述的代码,我们的activity就会带有转场动画以及透明的背景啦吐舌头

最后再附上转场动画的set文件:

slidein_from_right.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="80%p" android:toXDelta="0"
        android:duration="@android:integer/config_mediumAnimTime"/>
    <!--<alpha android:fromAlpha="0.0" android:toAlpha="1.0"-->
        <!--android:duration="@android:integer/config_mediumAnimTime" />-->
</set>
slideout_to_right.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="0" android:toXDelta="80%p"
        android:duration="@android:integer/config_mediumAnimTime"/>
    <!--<alpha android:fromAlpha="1.0" android:toAlpha="0.0"-->
        <!--android:duration="@android:integer/config_mediumAnimTime" />-->
</set>

滑动返回我是参考的github一个库SwipeBackActivity,源代码是监听了全屏的滑动返回事件,我把他改成了只有左边缘才会触发侧滑返回事件,我觉得这样的话,更加适合项目。

差不多该结束了,若有问题请留言,或者加我QQ:394114161




2
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:77655次
    • 积分:928
    • 等级:
    • 排名:千里之外
    • 原创:28篇
    • 转载:9篇
    • 译文:0篇
    • 评论:101条
    文章分类
    最新评论