话不多说,先上图:


其实就是两个Activity,用动画过渡的效果。

先看第一个EnterActivity.

      布局:

             

<?xml version="1.0" encoding="utf-8"?>            

中间的View是为了给图片一个渐变效果,在black_bg中指定了gradient.

接下来就是在Activity中添加动画效果了.

/** * Created by wonder on 2016/10/27. */public class EntryActivity extends BaseActivity {    @BindView(R.id.iv_entry)    ImageView mSplashImage;    private static final int ANIMATION_TIME = 2000;    private static final float SCALE_END = 1.13f;    private static final int[] IMAGES={            R.drawable.ic_screen_default,            R.drawable.splash0,            R.drawable.splash1,            R.drawable.splash2,            R.drawable.splash3,            R.drawable.splash4,            R.drawable.splash5,            R.drawable.splash6,            R.drawable.splash7,            R.drawable.splash8,            R.drawable.splash9,            R.drawable.splash10,            R.drawable.splash11,            R.drawable.splash12,            R.drawable.splash13,            R.drawable.splash14,            R.drawable.splash15,            R.drawable.splash16};    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_entry);        ButterKnife.bind(this);        setTranslucentStatus(true);        Random random = new Random(SystemClock.currentThreadTimeMillis());        mSplashImage.setImageResource(IMAGES[random.nextInt(IMAGES.length)]);        Observable.timer(1000, TimeUnit.MILLISECONDS)                .observeOn(AndroidSchedulers.mainThread())                .subscribe(new Action1() {                    @Override                    public void call(Long aLong) {                        startAnim();                    }                });    }    private void startAnim(){        ObjectAnimator animatorX = ObjectAnimator.ofFloat(mSplashImage,"scaleX",1f,SCALE_END);        ObjectAnimator animatorY = ObjectAnimator.ofFloat(mSplashImage,"scaleY",1f,SCALE_END);        AnimatorSet set = new AnimatorSet();        set.setDuration(ANIMATION_TIME).play(animatorX).with(animatorY);        set.start();        set.addListener(new AnimatorListenerAdapter() {            @Override            public void onAnimationEnd(Animator animation) {                Intent intent = new Intent(EntryActivity.this, MainActivity.class);                startActivity(intent);                EntryActivity.this.finish();                overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out);            }        });    }}

用了一个IMAGES数组是为了使动画多样化.使用RxJava的Observab在后台线程池中启动动画. AnimatorSet是一个动画集合,play(animatorX).with(animatorY)意味着在播放animatorX的同时播放animatorY. overridePendingTransition的两个参数是指进入动画和出去动画.注意:必须在starActivity或finish之后立即调用.

Demo中的参数为系统定义的,是淡入浅出的效果.当然也可以传入自定义的动画.


更多相关文章

  1. 使用ViewPager来实现Tab的效果
  2. adb:) adb install
  3. android实现倒计时功能的方法
  4. 浅入浅出Android(007):看看你的手机上有哪些传感器
  5. Android实现抖动动画
  6. Android实现瀑布流,圆角矩形,点按效果
  7. 秒懂Android开发之MotionLayout简单上手
  8. 关于Android(安卓)渐变动画 淡入效果的实现
  9. Android(安卓)TabWidget底部显示效果

随机推荐

  1. Android下运行c程序
  2. 阿里Android开发规范:Bitmap、Drawable 与
  3. 调试FSL Android(安卓)GPS学习select和ep
  4. 关于android:tint属性的使用
  5. GDB+gdbserver 远程调试android native c
  6. Android(安卓)中Activity,Window和View之
  7. Android中AOP的实际运用
  8. 关于h5在ios和Android上的差异
  9. Android通知栏介绍与适配总结
  10. Android V1及V2签名原理简析