Android-Kotlin实现App闪屏

如标题所述,使用Kotlin编写实现App的启动闪屏页面,效果如下图:

实现并不复杂,简单的逻辑就是控件动画的设置,控件部分代码如下:

//文字动画
val objectAnimator : ObjectAnimator = ObjectAnimator.ofFloat(app_name, "rotationX", 0f, 360f)
objectAnimator.duration = 2000
objectAnimator.start()

//图片动画
val translationX: ObjectAnimator = ObjectAnimator.ofFloat(iv_splash, "translationX", 600f, 0f)
val translationY = ObjectAnimator.ofFloat(iv_splash, "translationY", -100f, 90f, -80f, 70f, -60f, 50f)

animalSet.apply {
    playTogether(translationX, translationY)
    duration = 2000
}

addListener()

其中 addListener() 方法是对动画执行的一些监听回调的实现:

private fun addListener() {
        animalSet.apply {
            start()
            addListener(object  : Animator.AnimatorListener {
                override fun onAnimationStart(animation: Animator) {
                }

                override fun onAnimationEnd(animation: Animator) {
                    try {
                        Thread.sleep(500)
                        startActivity(Intent(this@SplashActivity, LoginActivity::class.java))
                        finish()
                    } catch (e: InterruptedException) {
                        e.printStackTrace()
                    }
                }

                override fun onAnimationCancel(animation: Animator) {

                }

                override fun onAnimationRepeat(animation: Animator) {

                }
            })
        }
    }

完整的代码如下:

package wanandroid.xuboyu.com.wanandroid.ui.activity

import android.animation.Animator
import android.animation.AnimatorSet
import android.animation.ObjectAnimator
import android.content.Intent
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_splash.*
import wanandroid.xuboyu.com.wanandroid.R
import wanandroid.xuboyu.com.wanandroid.base.BaseActivity

/**
 * use:闪屏界面
 * author: XuBoYu
 * time: 2019/4/12
 **/

class SplashActivity : AppCompatActivity() {

    var animalSet = AnimatorSet()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        setContentView(R.layout.activity_splash)

        //文字动画
        val objectAnimator : ObjectAnimator = ObjectAnimator.ofFloat(app_name, "rotationX", 0f, 360f)
        objectAnimator.duration = 2000
        objectAnimator.start()

        //图片动画
        val translationX: ObjectAnimator = ObjectAnimator.ofFloat(iv_splash, "translationX", 600f, 0f)
        val translationY = ObjectAnimator.ofFloat(iv_splash, "translationY", -100f, 90f, -80f, 70f, -60f, 50f)

        animalSet.apply {
            playTogether(translationX, translationY)
            duration = 2000
        }

        addListener()
    }

    private fun addListener() {
        animalSet.apply {
            start()
            addListener(object  : Animator.AnimatorListener {
                override fun onAnimationStart(animation: Animator) {
                }

                override fun onAnimationEnd(animation: Animator) {
                    try {
                        Thread.sleep(500)
                        startActivity(Intent(this@SplashActivity, LoginActivity::class.java))
                        finish()
                    } catch (e: InterruptedException) {
                        e.printStackTrace()
                    }
                }

                override fun onAnimationCancel(animation: Animator) {

                }

                override fun onAnimationRepeat(animation: Animator) {

                }
            })
        }
    }
}

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值