Android Crossfading animation 淡出淡入动画
来源:互联网 发布:ppt数据图表怎么做 编辑:程序博客网 时间:2024/05/17 10:57
淡出淡入动画就是我们常说的渐隐动画,一个界面逐渐消失的时候另一个逐渐显现。当你需要在应用中切换两个视图的时候这个动画效果就显得非常实用了。 这个动画短小但很精致,巧妙的衔接了视图的切换。如果你不使用这种动画会让整个切换过程显得生硬且急促。
准备开始
1.创建成员变量链接到你需要时间动画的view上。
2.让后显示的view先Gone掉,避免它占用layout的空间,避免计算它导致系统资源浪费,加快界面载入速度。
3.用一个成员变量缓存系统的config_shortAnimTime变量,这个变量是系统提供的一种动画时间,他会确保动画执行的更一致和更精致。与此变量作用相似的还有config_longAnimTime和config_mediumAnimTime。(引用方法:int mShortAnimationDuration = getResources().getInteger(android.R.integer.config_shortAnimTime);)
用代码标示:
public class CrossfadeActivity extends Activity { private View mContentView; private View mLoadingView; private int mShortAnimationDuration; ... @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_crossfade); mContentView = findViewById(R.id.content); mLoadingView = findViewById(R.id.loading_spinner); // Initially hide the content view. mContentView.setVisibility(View.GONE); // Retrieve and cache the system's default "short" animation time. mShortAnimationDuration = getResources().getInteger( android.R.integer.config_shortAnimTime); }
渐隐这个View
以上我们已经做好准备工作了,接下来我们会来实现把它渐隐。
1.把我们将要显示的view的alpha值改为0, 将它Visibility改为Visible。现在这个view就能显示了,但是你还看不到它,因为他是透明的。
2.创建两个alpha的动画,一个是将alpha从0到1,另一个是将alpha值设置为从1到0。
3.在Animator.AnimatorListener的监听回调方法onAnimationEnd()将最开始显示的View gone掉。尽管他的alpha值是0我们已经看不到他了,但是我们还是需要把它的visibility属性设置为gone。这样可以减少他占用的空间,减少layout的计算,从而提升运行速度。
下面我们来看一下代码:
private View mContentView;private View mLoadingView;private int mShortAnimationDuration;...private void crossfade() { // Set the content view to 0% opacity but visible, so that it is visible // (but fully transparent) during the animation. mContentView.setAlpha(0f); mContentView.setVisibility(View.VISIBLE); // Animate the content view to 100% opacity, and clear any animation // listener set on the view. mContentView.animate() .alpha(1f) .setDuration(mShortAnimationDuration) .setListener(null); // Animate the loading view to 0% opacity. After the animation ends, // set its visibility to GONE as an optimization step (it won't // participate in layout passes, etc.) mLoadingView.animate() .alpha(0f) .setDuration(mShortAnimationDuration) .setListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { mLoadingView.setVisibility(View.GONE); } });}
--------------本文完---------------
题外话:
1.动画最好使用FrameLayout而不是LinearLayout或RelativeLayout。因为动画涉及很多坐标的问题,绝对位置和相对位置。使用别的布局容易导致坐标计算变的困难且难以琢磨。所以使用动画的布局最好使用FrameLayout。
2.从API12即Andoird3.1起view新增了animate()方法可以直接向上面例子一样执行动画,而不用加载一个xml动画,或者创建一个Animation对象了,不过还是看个人习惯了。
0 2
- Android Crossfading animation 淡出淡入动画
- Crossfading (淡入淡出)动画
- Android 淡入淡出动画
- Android Animations(一):Crossfading(淡入淡出)
- Android Animation动画的淡入淡出、旋转、缩放和移动
- Android AlertDialog淡入淡出动画
- Android Activity淡入淡出动画
- 两个view间淡入淡出 Crossfading Two Views——翻译自developer.android.com Training
- 八、Animation——淡入淡出动画效果
- android动画案例,淡入淡出效果
- Android实现动画效果之淡入淡出
- Android:简单动画效果-淡入淡出播放
- Crossfading Two Views 淡入淡出的两种观点
- 淡入淡出UIView动画
- Android 欢迎界面淡出动画效果(Animation)
- android基础笔记——android动画效果:淡入淡出
- Android 淡入淡出效果
- Android淡入淡出
- 爱如手中沙,抓太紧反而会从指缝间流失
- ie8 下拉菜单使用透明失去焦点问题
- rpm安装MySQL
- 64位win7 使用jna调用C dll报错
- dszgvdhfgh
- Android Crossfading animation 淡出淡入动画
- 第一套正装
- 不容易系列之(3)—— LELE的RPG难题 2045
- 内置对象一览表
- Onvif在Windows下的开发 -- 准备工作
- hdu 1757 A Simple Math Problem
- SIFT特征提取中用差分代替求偏导
- East!模拟赛 Round 1 题目,题解在上三篇博客。
- 《一位36岁程序员的困惑》读后感