【Android之本菜鸡的毕设】第一节 启动界面的实现方式

0.先结论:4种方式

分别是:属性动画ObjectAnimator实现;补间动画Animation实现;定时器Timer实现;Handler+Thread实现;
下面分别以简单例子实现;

1.属性动画ObjectAnimator实现

首先是activity_splash.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/launch_bg"
    tools:context=".SplashActivity">

    <ImageView
        android:id="@+id/imageView_launch_icon"
        android:layout_width="148dp"
        android:layout_height="140dp"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="5dp"
        android:layout_centerHorizontal="true"
        app:srcCompat="@drawable/launch_icon_demo" />
</RelativeLayout>

其次是SplashActivity.java

package com.yh.splashactivitytest;

import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;

public class SplashActivity extends AppCompatActivity {
    private ImageView imageView_launch_icon;//启动界面上的小图标,期望它实现动画
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
        //初始化启动页面图标
        imageView_launch_icon = findViewById(R.id.imageView_launch_icon);
        //第一种实现启动页面的方案:使用ObjectAnimator
        //第一个参数是动画对象,第二个是动画形式scaleX是缩放,第三第四是缩放变化范围
        ObjectAnimator objectAnimator_launch_icon = ObjectAnimator.ofFloat
                (imageView_launch_icon,"scaleX",0.5f,1.0f);
        objectAnimator_launch_icon.setDuration(3000);//设置动画时长3秒
        objectAnimator_launch_icon.start();//启动动画
        //设置监听器以使得动画结束后界面跳转
        objectAnimator_launch_icon.addListener(new AnimatorListenerAdapter() {
            @Override
            public void onAnimationEnd(Animator animation) {
                Intent intent = new Intent(SplashActivity.this,MainActivity.class);
                startActivity(intent);//页面跳转
                SplashActivity.this.finish();//关闭当前界面
            }
        });
    }
}

2.补间动画实现

activity_splash.xml不变
SplashActivity.java中部分代码改为:

		/*
        第二种实现启动页面的方案:使用补间动画Animation
         */
        //平移动画的四个参数分别是起始x坐标,结束x坐标,起始y坐标,结束y坐标
        Animation translateAnimation_launch_icon = new TranslateAnimation
                (-250,250,
                        0,0);
        translateAnimation_launch_icon.setDuration(3000);//设置动画时长3秒
        imageView_launch_icon.startAnimation(translateAnimation_launch_icon);//开启动画
        translateAnimation_launch_icon.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {
            }

            @Override
            public void onAnimationEnd(Animation animation) {
                Intent intent = new Intent(SplashActivity.this,MainActivity.class);
                startActivity(intent);
                SplashActivity.this.finish();
            }

            @Override
            public void onAnimationRepeat(Animation animation) {
            }
        });

3.定时器Timer实现

修改部分为:

		/*
        第三种实现启动页面的方案:使用Timer定时器
         */
        Timer timer = new Timer();
        TimerTask timerTask = new TimerTask() {
            @Override
            public void run() {
                Intent intent = new Intent(SplashActivity.this,MainActivity.class);
                startActivity(intent);
                SplashActivity.this.finish();
            }
        };
        timer.schedule(timerTask,3000);

4.定时器Handler Thread实现

暂时不会

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值