摘要:原文發布于我的博客猿之前注意到啟動頁很是酷炫,今天我們使用和屬性動畫模仿實現其效果。需要完整代碼可以戳這里代碼傳送門
原文發布于我的博客Android猿
之前注意到coding APP啟動頁很是酷炫,今天我們使用RxJava和屬性動畫模仿實現其效果。
一、新建啟動頁WelcomeActivity注意,我們這里讓WelcomeActivity繼承Activity不要繼承AppCompatActivity,因為AppCompatActivity會默認去加載主題,造成卡頓
public class WelcomeActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_welcome); } }二、定義引導頁布局activity_welcome.xml
不多說直接上代碼:
這里我們用了相對布局,在ImageView上覆蓋一個View,該View用漸變色背景welcomimg_bg.xml以暗化圖片,welcomimg_bg.xml代碼如下:
其中startColor表示起始顏色,endColor表示結束顏色,angle=90 表示顏色從下往上漸變。
三、隨機選取圖片并使用RxJava啟動動畫最后我們的WelcomeActivity.java長這樣:
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() 從開機到現在的毫秒數(手機睡眠(sleep)的時間也包括在內) 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操作符,它的意思是延遲執行某個操作,第一個參數表示延遲時間,第二個參數是時間單位。
好了,就醬。
需要完整代碼可以戳這里代碼傳送門
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/65094.html
摘要:讓你收獲滿滿碼個蛋從年月日推送第篇文章一年過去了已累積推文近篇文章,本文為年度精選,共計篇,按照類別整理便于讀者主題閱讀。本篇文章是今年的最后一篇技術文章,為了讓大家在家也能好好學習,特此花了幾個小時整理了這些文章。 showImg(https://segmentfault.com/img/remote/1460000013241596); 讓你收獲滿滿! 碼個蛋從2017年02月20...
閱讀 3296·2021-11-24 09:39
閱讀 2805·2021-10-12 10:20
閱讀 1908·2019-08-30 15:53
閱讀 3076·2019-08-30 14:14
閱讀 2600·2019-08-29 15:36
閱讀 1121·2019-08-29 14:11
閱讀 1956·2019-08-26 13:51
閱讀 3408·2019-08-26 13:23