当前位置: 首页 > 科技观察

RxJava实践打造炫酷的启动页

时间:2023-03-14 11:33:18 科技观察

我注意到codingAPP的启动页非常炫酷。今天我们使用RxJava和属性动画来模仿实现它的效果。1.新建一个启动页WelcomeActivity注意这里我们让WelcomeActivity继承Activity而不是AppCompatActivity,因为AppCompatActivity会默认加载主题,导致卡顿activity_welcome);}}2.定义引导页布局activity_welcome.xml话不多说直接上传代码:<文本视图wandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_marginBottom="100dp"android:gravity="center"android:text="xialong"android:textColor="@android:颜色/白色"android:textSize="23sp"/>这里我们使用相对布局覆盖ImageView上的一个View,它使用渐变背景welcomimg_bg.xml来将图片调暗,welcomimg_bg.xml代码如下:<渐变android:angle="90"android:startColor="@color/black"android:endColor="@android:color/transparent"/>其中startColor代表开始颜色,endColor代表结束颜色,angle=90代表颜色从从下到下的上渐变3.随机选择图片,使用RxJava启动动画***我们的WelcomeActivity.java是这样的:publicclassWelcomeActivityextendsActivity{@Bind(R.id.iv_entry)ImageViewmIVEntry;privatestaticfinalintANIM_TIME=2000;privatestaticfinalfloatSCALE_END=1.15F;privatestaticfinalint[]Imgs={R.drawable.welcomimg1,R.drawable.welcomimg2,R.drawable.welcomimg3,R.drawable.welcomimg4,R.drawable.welcomimg5,R.drawable.welcomimg6,R.drawable.welcomimg7,R.drawable.welcomimg8,R.drawable.welcomimg9,R.drawable.welcomimg10,R.drawable.welcomimg11,R.drawable.welcomimg12,};@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_welcome);ButterKnife.bind();Randomrandom=newRandom(SystemClock.elapsedRealtime());//SystemClock.elapsedRealtime()从开机到现在的毫秒数(手机休眠(sleep)的时间也算在内)mIVentry.setImageResource(Imgs[random.nextInt(Imgs.length)]);Observable.timer(1000,TimeUnit.MILLISECONDS).observeOn(AndroidSchedulers.mainThread()).subscribe(newAction1(){@Overridepublicvoidcall(LongaLong){startAnim();}});}privatevoidstartAnim(){ObjectAnimatoranimatorX=ObjectAnimator.ofFloat(mIVentry,"scaleX",1f,SCALE_END);ObjectAnimatoranimatorY=ObjectAnimator.ofFloat(mIVentry,"scaleY",1f,SCALE_END);AnimatorSetset=newAnimatorSet();set.setDuration(ANIM_TIME).play(animatorX).with(animatorY);set.start();set.addListener(newAnimatorListenerAdapter(){@OverridepublicvoidonAnimationEnd(Animatoranimation){startActivity(newIntent)(WelcomeActivity.this,MainActivity.class));WelcomeActivity.this.finish();}});}}这里RxJava使用了定时器操作符,意思是延迟执行一个操作,第一个参数表示延迟时间,第二个参数是时间单位。好吧,只是酱汁。需要完整代码的可以戳这里获取代码传送门#RxJavaAndroid启动页