你看到的没有你想的那么复杂!案例效果分析

作为大三结束,暑期没事干的准毕业僧 前些时间找实习,有家公司邮件发来一个demo视频演示,让我觉得可以就过去。
当时已经找到合适的了就没有去,但是demo演示看了觉得还不错,详细不展示了,商城类App。其中有个转场动画,效果如下:


demo演示

我当时第一眼觉得 这个可能有点麻烦, 动态模糊且只保留一个ImageView - -,后来再看的时候发现,居然只是转场动画加上两个View交替显示。
这个和 【 湫水长天 】 的 教你一分钟实现模糊效果 思路一样
很简单,拆分来看:

你看到的没有你想的那么复杂!案例效果分析_第1张图片

这个只是一张模糊图+ImageView

这个只是用一张布局和后面差不多的图片模糊掉 来做的,然后来个属性动画将后面清晰的布局显示出来。

你看到的没有你想的那么复杂!案例效果分析_第2张图片

这个和上面保持风格相同头像位置一致

比较可知 头像位置相同,其他的大致一样就行。所以很容易就实现了~~~
仿做demo:

模仿demo

是不是差不多~~~
这demo本身没什么好说的,技术难点没有。
布局就是 Framelayout 放置两个布局差不多的LinearLayout,第一个背景是模糊的图片,
第二个是自己的布局,但是头像位置和第一个保持一致,并整体设置透明度为0.0;
启动Activity之后 播放属性动画 将第二个布局显示出来即可。
代码:




    

        
    

    

        
    



转场动画:

  head_image.setTransitionName("head_image");
                TransitionSet transitionSet = new TransitionSet();
                transitionSet.addTransition(new ChangeTransform());
                transitionSet.addTransition(new ChangeBounds());
                transitionSet.addTarget("head_image");
                transitionSet.setDuration(1000);
                Intent intent = new Intent(this, MainActivity.class);
                ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this, head_image, "head_image");
                startActivity(intent, options.toBundle());

第二个Activity进入后开始设置透明度:

 Observable.timer(700, TimeUnit.MILLISECONDS)
                .compose(this.bindToLifecycle())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Action1() {
                    @Override
                    public void call(Long aLong) {
                        ObjectAnimator
                                .ofFloat(back_back, "alpha", 0.0F, 1.0F)
                                .setDuration(700)
                                .start();
                    }
                });

大功告成~第一次写,有错误大家指正,轻喷。

你可能感兴趣的:(你看到的没有你想的那么复杂!案例效果分析)