android动画切换效果
1. Android 界面切换的动画效果
可能是里面的处理逻辑太复杂了把
2. Android常见动画效果合集,让APP熠熠生辉,绚丽灵动
在App中添加一些动画效果,会给用户耳目一新,眼前一亮的感觉,让APP显的高端大气上档次,因此开发项目的过程中能够实现一些常见的动画效果还是很有必要的,Android本身提供了丰富的动画API,方便我们实现炫酷的动画效果。
先放上几张实现的效果图:
一帧一帧进行播放,它的原理与Gif类似,按序播放一组预先定义好的图片序列,如:
直接更改View 的属性来实现的动画。
工作原理:在一定时间间隔内,通过不断调用set方法对值进行改变,并不断将该值赋给对象的属性,从而实现该对象在该属性上的动画效果
Google在Android 5.0之后推出的一种动画效果,就是以某种方式从一个场景以动画的形式过渡到另一个场景,可以参考 Material-Animations ,常用于点击列表页中的图片跳转到大图或由列表页跳转到详情页
Lottie 是 Airbnb推出的一套跨平台的动画完整解决方案,它能够帮助开发者直接加载json格式的文件在 iOS、Android 和 React Native之上,实现 100% 与设计稿相同的动画效果,而无需关心中间的实现细节。设计师只需要使用 After Effectes 设计出动画之后,通过使用 Lottie 提供的Bodymovin插件将设计好的动画导出成json格式的文件交付给开发即可完成。 Lottie网站 lottie-android
跨平台的即时通信软件Telegram推出的新的Sticker贴纸格式,这个全新的 Sticker 贴纸格式为 .tgs,其实就是基于Lottie json文件改造而来的一种格式
GIF(Graphics Interchange Format)是由CompuServe公司开发的一种图像文件格式,可以将多幅图像保存到一个图像文件,展示的时候将多幅图像数据逐帧读出并显示到屏幕上,从而形成动画效果。在Android中播放GIF通常有以下几种方式:
https://github.com/kongpf8848/Animation
animlogoview
Telegram
3. android中如何进行多个view进行动画切换
这个首选需要你的手机是四核及以上,这是硬件要求,再者就是你每次打开视频或者游戏界面看看是否有没有在手机右侧有个小窗口等类似字眼,点击下,即可。
4. 如何设定Android Activity间切换时的动画
首先定义好acitivity切换的动画
<style name="FeelyouWindowAnimTheme" parent="@android:style/Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/in_from_left</item>
<item name="android:activityOpenExitAnimation">@anim/out_from_right</item>
<item name="android:activityCloseEnterAnimation">@anim/in_from_right</item>
<item name="android:activityCloseExitAnimation">@anim/out_from_left</item>
</style>
注意需要继承自 @android:style/Animation.Activity。
4个属性的意思:
假设我们有 2 个 Activity,分别是 A1 和 A2:
当我们从 A1 启动 A2 时,A1 从屏幕上消失,这个动画叫做 android:activityOpenExitAnimation
当我们从 A1 启动 A2 时,A2 出现在屏幕上,这个动画叫做 android:activityOpenEnterAnimation
当我们从 A2 退出回到 A1 时,A2 从屏幕上消失,这个叫做 android:activityCloseExitAnimation
当我们从 A2 退出回到 A1 时,A1 出现在屏幕上,这个叫做 android:activityCloseEnterAnimation
定义具体的动画文件
anim/out_from_right.xml
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:ration="500"
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="100%p"
android:toYDelta="0" >
</translate>
anim/in_from_left.xml
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:ration="500"
android:fromXDelta="-100%p"
android:fromYDelta="0"
android:toXDelta="0"
android:toYDelta="0" >
</translate>
anim/out_from_left.xml
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:ration="500"
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="-100%p"
android:toYDelta="0" >
</translate>
anim/in_from_right.xm
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:ration="500"
android:fromXDelta="100%p"
android:fromYDelta="0"
android:toXDelta="0"
android:toYDelta="0" >
</translate>
最后设定activity的主题的android:windowAnimationStyle
<style name="AnimActivityTheme">
<item name="android:windowAnimationStyle">@style/FeelyouWindowAnimTheme</item>
</style>
注意两个activity都需要应用相同动画主题
<activity
android:name="com.test..A1"
android:theme="@style/AnimActivityTheme" >
</activity>
<activity
android:name="com.test.A2"
android:theme="@style/AnimActivityTheme" >
</activity>
5. Android动画之ViewPropertyAnimator(专用于view的属性动画)
属性动画对比原来的视图动画有很多的优点,属性动画可以对所有的对象做动画操作,但Android开发中需要做动画最多的还是View,如果只是对一个view做动画,很少的几个属性还行,如果是对同一个view的十几个属性同时做动画,相信属性动画的写法是比较繁琐的。ViewPropertyAnimator从名字就可以看出是专用于View的属性动画,在API12被提供。ViewPropertyAnimator专用于操作View动画,语法更加简洁,使用更加方便。
developer: https://developer.android.google.cn/reference/android/view/ViewPropertyAnimator
如何获取ViewPropertyAnimator 对象:
ViewPropertyAnimator 没有构造函数,通过View.animate()方法可以方便的获取ViewPropertyAnimator 对象,此时获取的动画对象就专用于操作当前view。
setDuration(); //设置动画时长
setInterpolator(); //设置插值器
setStartDelay(); //设置延迟开始时间
start(); //立刻开始动画
cancel(); //取消动画
明显看到图片先往下走了一段,然后向左的动画才开始执行。
链式操作
ViewPropertyAnimator viewPropertyAnimator = gongxiang.animate().setDuration(2000).translationY(300).scaleX(0.5f);
以上函数的执行,会导致相同动画的cancle,以上函数都是除了坐标相关都是以view左上角为坐标原点。
方法都比较简单,下面距几个列子:
首先利用translationX,translationXBy来区分By的意义:
ViewPropertyAnimator viewPropertyAnimator = gongxiang.animate().setDuration(3000).translationY(300);
ViewPropertyAnimator viewPropertyAnimator = gongxiang.animate().setDuration(3000).translationYBy(300);
translationYBy 可以多次移动View,translationY多次执行没有效果。
ViewPropertyAnimator viewPropertyAnimator = gongxiang.animate().setDuration(3000).x(100).y(100);
ViewPropertyAnimator viewPropertyAnimator = gongxiang.animate().setDuration(2000).rotation(270);
据观察withEndAction相当于动画开始,withStartAction相当于动画结束。
可以看到可以添加setUpdateListener监听,但无法通过这个监听函数监听到当前动画的信息,所以这个监听函数可能用处不大。
Animation动画概述和执行原理
Android动画之补间动画TweenAnimation
Android动画之逐帧动画FrameAnimation
Android动画之插值器简介和系统默认插值器
Android动画之插值器Interpolator自定义
Android动画之视图动画的缺点和属性动画的引入
Android动画之ValueAnimator用法和自定义估值器
Android动画之ObjectAnimator实现补间动画和ObjectAnimator自定义属性
Android动画之ObjectAnimator中ofXX函数全解析-自定义Property,TypeConverter,TypeEvaluator
Android动画之AnimatorSet联合动画用法
Android动画之LayoutTransition布局动画
Android动画之共享元素动画
Android动画之ViewPropertyAnimator(专用于view的属性动画)
Android动画之Activity切换动画overridePendingTransition实现和Theme Xml方式实现
Android动画之ActivityOptionsCompat概述
Android动画之场景变换Transition动画的使用
Android动画之Transition和TransitionManager使用
Android动画之圆形揭露动画Circular Reveal
Android 动画之 LayoutAnimation 动画
Android动画之视图动画的缺点和属性动画的引入
6. 如何设定Android Activity间切换时的动画
转载本代码示例介绍如何设定Activity间切换时的动画效果。本示例使用Eclipse的Android工程编译测试。
1. 定义清单文件(AndroidManifest.xml)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http。//schemas。android。com/apk/res/android"
package="my.android.test"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Animation"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Controls1"
android:label="@string/app_name"
android:theme="@android:style/Theme.Light">
</activity>
</application>
<uses-sdk android:minSdkVersion="9" />
</manifest>
2. 定义字符串资源(res/values/strings.xml)
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World,Aniation!</string>
<string name="app_name">Animation</string>
<string name="activity_animation_msg">Press a button to launch an activity with a custom animation.</string>
<string name="activity_animation_fade">Fade in</string>
<string name="activity_animation_zoom">Zoom in</string>
<string name="controls_1_save">Save</string>
<string name="controls_1_checkbox_1">Checkbox 1</string>
<string name="controls_1_checkbox_2">Checkbox 2</string>
<string name="controls_1_radiobutton_1">RadioButton 1</string>
<string name="controls_1_radiobutton_2">RadioButton 2</string>
<string name="controls_1_star">Star</string>
<string name="textColorPrimary">textColorPrimary</string>
<string name="textColorSecondary">textColorSecondary</string>
<string name="textColorTertiary">textColorTertiary</string>
<string name="listSeparatorTextViewStyle">listSeparatorTextViewStyle</string>
</resources>
3. 定义渐入动画资源定义(res/anim/fade.xml、res/anim/hold.xml)
res/anim/fade.xml文件
<?xml version="1.0" encoding="utf-8"?>
<!-- 声明动画对象的透明度,本例使用渐入的方式,显示Activity
属性说明参照zoom_exit.xml -->
<alpha xmlns:android="http。//schemas。android。com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="0.0" android:toAlpha="1.0"
android:ration="@android:integer/config_longAnimTime" />
res/anim/hold.xml文件
<?xml version="1.0" encoding="utf-8"?>
<!-- 声明动画对象的水平和垂直移动量,本例使用水平移动方式,
android:interpolator:指定在设定时间内动画移动过程中插补器,用于改善动画的平滑度
android:fromXDelta:指定动画开始时,动画对象的水平位置,可以用像素智设定,也可以用
相对父窗口宽度的百分比来设定。
android:toXDelta:指定动画结束时,动画对象的水平位置,可以用像素值来设定,也可以用
相对父窗口宽度的百分比来设定。
android:ration:指定动画的播放时间
-->
<translate xmlns:android="http。//schemas。android。com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromXDelta="0" android:toXDelta="0"
android:ration="@android:integer/config_longAnimTime" />
4. 定义缩放动画资源定义(res/anim/zoom_enter.xml、res/anim/zoom_exit.xml)
res/anim/zoom_enter.xml文件
<?xml version="1.0" encoding="utf-8"?>
<!-- 声明动画对象进入屏幕时的动画资源
android:interpolator:指定在设定时间内动画移动过程中插补器,用于改善动画的平滑度
-->
<set xmlns:android="http。//schemas。android。com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator">
<!-- 声明动画对象进入屏幕时的缩放动画,
属性说明参照zoom_exit.xml -->
<scale android:fromXScale="2.0" android:toXScale="1.0"
android:fromYScale="2.0" android:toYScale="1.0"
android:pivotX="50%p" android:pivotY="50%p"
android:ration="@android:integer/config_mediumAnimTime" />
</set>
res/anim/zoom_exit.xml文件
<?xml version="1.0" encoding="utf-8"?>
<!-- 声明Activity退出时使用的动画资源
android:interpolator:指定在设定时间内动画移动过程中插补器,用于改善动画的平滑度
android:zAdjustment:允许再动画播放期间,调整播放内容在Z轴方向的顺序,normal(0):真正播放的
动画内容保持当前的Z轴顺序,top(1):在动画播放期间,强制把当前播放的内容放到其他内容的上面;
bottom(-1):在动画播放期间,强制把当前播放的内容放到其他内容之下。
-->
<set xmlns:android="http。//schemas。android。com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator"
android:zAdjustment="top">
<!-- 指定动画对象的缩放因子和播放时间
android:fromXScale和android:toXScale指定X轴的动画开始和结束时的缩放因子
android:fromYScale和android:toYScale指定Y轴的动画开始和结束时的缩放因子
android:pivoteX:在动画对象被缩放时,X轴要保留的原始尺寸的百分比。
android:pivoteY:在动画对象被缩放时,Y轴要保留的原始尺寸的百分比。
android:ration指定动画的播放时间
-->
<scale android:fromXScale="1.0" android:toXScale=".5"
android:fromYScale="1.0" android:toYScale=".5"
android:pivotX="50%p" android:pivotY="50%p"
android:ration="@android:integer/config_mediumAnimTime" />
<!-- 定义动画对象的透明度,该动画在动画缩放之后播放。
android:fromAlpha:指定动画初始时的透明度
android:toAlpha:指定动画结束时的透明度
android:ratiion:指定动画透明处理的执行时间
-->
<alpha android:fromAlpha="1.0" android:toAlpha="0"
android:ration="@android:integer/config_mediumAnimTime"/>
</set>
7. 如何设定Android Activity间切换时的动画
可以通过以下几个步骤完成:
1、定义清单文件(AndroidManifest.xml)
2、定义字符串资源(res/values/strings.xml)
3、定义渐入动画资源定义(res/anim/fade.xml、res/anim/hold.xml)
4、定义缩放动画资源定义(res/anim/zoom_enter.xml、res/anim/zoom_exit.xml)
5、定义布局Activity布局资源(res/layout/activity_animation.xml、res/layout/controls_1.xml)
6、创建Activity窗口(Animation.java、Controls1.java)
8. android 两个activity之间怎么进行带动画的翻转切换
//实现淡入浅出的效果
startActivity(new Intent(MainActivity.this,SecondActivity.class));
overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out);
// 由左向右滑入的效果
startActivity(new Intent(MainActivity.this,SecondActivity.class));
overridePendingTransition(android.R.anim.slide_in_left,android.R.anim.slide_out_right);
你可以去网络下这个方法overridePendingTransition。
9. Android ViewPager多页面滑动切换以及动画效果
用Viewpager + Fragment + ActionBar 这是谷歌的标配
当然,你不想用ActionBar 那就用TabHost这个最简单
或者用RadioGroup 单选按钮来实现
我那有个例子,是直接用Viewpager+TabHost做的一个滑动切换
但是没有Viewpager + Fragment好用
http://download.csdn.net/detail/qqmsd8/6469823
10. android 怎么在轮播时实现多种动画效果,如第一张到第二张渐变,第二张到第三张旋转
Android系统自带的一个多页面管理控件,它可以实现子界面的自动切换:
首先 需要为ViewFlipper加入View
(1) 静态导入:在layout布局文件中直接导入
(2) 动态导入:addView()方法
ViewPlipper常用方法:
setInAnimation:设置View进入屏幕时候使用的动画
setOutAnimation:设置View退出屏幕时候使用的动画
showNext:调用该函数来显示ViewFlipper里面的下一个View
showPrevious:调用该函数来显示ViewFlipper里面的上一个View
setFlipInterval:设置View之间切换的时间间隔
startFlipping使用上面设置的时间间隔来开始切换所有的View,切换会循环进行
stopFlipping:停止View切换
讲了这么多,那么我们今天要实现的是什么呢?
(1) 利用ViewFlipper实现图片的轮播
(2) 支持手势滑动的ViewFlipper
我们需要先准备几张图片:把图片放进drawable中
创建两个动画:在res下面新建一个folder里面新建两个xml: