摘要:原文發(fā)布于我的博客猿之前注意到啟動(dòng)頁(yè)很是酷炫,今天我們使用和屬性動(dòng)畫模仿實(shí)現(xiàn)其效果。需要完整代碼可以戳這里代碼傳送門
原文發(fā)布于我的博客Android猿
之前注意到coding APP啟動(dòng)頁(yè)很是酷炫,今天我們使用RxJava和屬性動(dòng)畫模仿實(shí)現(xiàn)其效果。
一、新建啟動(dòng)頁(yè)WelcomeActivity注意,我們這里讓W(xué)elcomeActivity繼承Activity不要繼承AppCompatActivity,因?yàn)锳ppCompatActivity會(huì)默認(rèn)去加載主題,造成卡頓
public class WelcomeActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_welcome); } }二、定義引導(dǎo)頁(yè)布局activity_welcome.xml
不多說直接上代碼:
這里我們用了相對(duì)布局,在ImageView上覆蓋一個(gè)View,該View用漸變色背景welcomimg_bg.xml以暗化圖片,welcomimg_bg.xml代碼如下:
其中startColor表示起始顏色,endColor表示結(jié)束顏色,angle=90 表示顏色從下往上漸變。
三、隨機(jī)選取圖片并使用RxJava啟動(dòng)動(dòng)畫最后我們的WelcomeActivity.java長(zhǎng)這樣:
public class WelcomeActivity extends Activity { @Bind(R.id.iv_entry) ImageView mIVEntry; private static final int ANIM_TIME = 2000; private static final float SCALE_END = 1.15F; private static final int[] 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,}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_welcome); ButterKnife.bind(this); Random random = new Random(SystemClock.elapsedRealtime());//SystemClock.elapsedRealtime() 從開機(jī)到現(xiàn)在的毫秒數(shù)(手機(jī)睡眠(sleep)的時(shí)間也包括在內(nèi)) mIVEntry.setImageResource(Imgs[random.nextInt(Imgs.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(mIVEntry, "scaleX", 1f, SCALE_END); ObjectAnimator animatorY = ObjectAnimator.ofFloat(mIVEntry, "scaleY", 1f, SCALE_END); AnimatorSet set = new AnimatorSet(); set.setDuration(ANIM_TIME).play(animatorX).with(animatorY); set.start(); set.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { startActivity(new Intent(WelcomeActivity.this, MainActivity.class)); WelcomeActivity.this.finish(); } }); } }
這里的RxJava使用了timer操作符,它的意思是延遲執(zhí)行某個(gè)操作,第一個(gè)參數(shù)表示延遲時(shí)間,第二個(gè)參數(shù)是時(shí)間單位。
好了,就醬。
需要完整代碼可以戳這里代碼傳送門
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/65094.html
摘要:讓你收獲滿滿碼個(gè)蛋從年月日推送第篇文章一年過去了已累積推文近篇文章,本文為年度精選,共計(jì)篇,按照類別整理便于讀者主題閱讀。本篇文章是今年的最后一篇技術(shù)文章,為了讓大家在家也能好好學(xué)習(xí),特此花了幾個(gè)小時(shí)整理了這些文章。 showImg(https://segmentfault.com/img/remote/1460000013241596); 讓你收獲滿滿! 碼個(gè)蛋從2017年02月20...
閱讀 3306·2021-11-24 09:39
閱讀 2823·2021-10-12 10:20
閱讀 1922·2019-08-30 15:53
閱讀 3086·2019-08-30 14:14
閱讀 2615·2019-08-29 15:36
閱讀 1131·2019-08-29 14:11
閱讀 1963·2019-08-26 13:51
閱讀 3420·2019-08-26 13:23