赞
踩
问题:怎么样自己制作的软件可以像其它已经发布软件一样,可以在开启软件的时候有动画,我简单制作了一个启动页,供给大家学习。
启动页有四种方案
第一种属性动画(ObjectAnimator)
第二种补间动画(例如:TranslateAnimation(位移)、ScaleAnimation(缩放)、AlphaAnimation(透明度)、RotateAnimation(旋转))
第三种采用定时器(Timer)
第四种Handler + Thread实现
这里我是使用ObjectAnimator属性动画来写的,你们也可以不用这种方式来写。如果你想了解其它的方案,可以去这篇文章看:
https://blog.csdn.net/wyh_file/article/details/79102690
好我们开始看代码:
首先是我们的Launch.java(我用了两种写法来写ObjectAnomator的监听事件,一种是一般方法,另外是用适配器写的来提供大家参考)
public class Launch extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView()来绑定我们的布局
setContentView(R.layout.activity_launch);
//启动页有四种方案
//第一种属性动画(ObjectAnimator)
//第二种补间动画(例如:TranslateAnimation(位移)、ScaleAnimation(缩放)、AlphaAnimation(透明度)、RotateAnimation(旋转))
//第三种采用定时器(Timer)
//第四种Handler + Thread实现
//这里使用第一种方案:ObjectAnimator
//这里的第一个参数target的意思是:你想要对哪个视图(View)绑定动画---这里我是对ImageView绑定动画
View target = findViewById(R.id.iv_view);
//这里的第二个参数propertyName的意思是:你想要对动画执行什么操作---动画的属性(这里的操作执行缩放)
//这里的第三个参数的意思是:缩放的尺寸范围(从0.0到1.0之间)
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(target, "scaleX", 0.0f, 1.0f);
//设置动画的执行的时间(企业级开发的标准一般为2到3秒)
//setDuration()函数的意思设置动画的执行时间,这里设置的为2秒
objectAnimator.setDuration(2000);
//启动动画
objectAnimator.start();
//这里启动了动画后我们就要跳转到下个界面
//因此我们就要给objectAnimator写一个监听事件
//如果用一般的方法写监听事件会比较浪费接口的利用率,因此我们这里用适配器来写监听事件
/*
//首先我们用一般的方法写
objectAnimator.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
}
@Override
//这里我们就写我们结束了动画执行了,然后就跳转界面
public void onAnimationEnd(Animator animator) {
startActivity(new Intent(Launch.this, MainActivity.class));
finish();
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
});*/
//这里我们用适配器来写
objectAnimator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationCancel(animation);
startActivity(new Intent(Launch.this, MainActivity.class));
finish();
}
});
}
}
MainActivity.java(这个文件是只创建一个空白的文件,作用只是给大家更加直观的体验动画效果)
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
然后就是我们的布局文件:
activity_launch.xml(这里只用一个ImageView的控件)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_launch"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.a25944.myapplication.Launch">
<ImageView
android:id="@+id/iv_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/baibudejie"/>
</RelativeLayout>
activity_main.xml(这里只是一个空白布局)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.a25944.myapplication.MainActivity">
</RelativeLayout>
最后我给大家把清单文件也列出来了,因为你可以到本文章前面讲Launch.java时提到硬件加速,以此我们来解释一下
AndroidManifest.xml
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<!--我们要关掉硬件加速-->
<!-- 因为系统默认的硬件加速是开启的状态,如果是开启的状态会导致我们的动画缓存释放掉了-->
<!-- 解释一下什么是硬件加速-->
<!-- 硬件加速的意思是:可以理解为释放缓存,是我们的软件运行的速度变得快一些-->
<!-- 所以当我们的动画的缓存很大的时候,我们开启硬件加速会导致我们的动画缓存被释放-->
<!-- 这里我的图片占用的内存不是很大,所以我把硬件加速打开或者关闭都没有影响-->
<!-- 但你的动画占用的内存很大的时候,要来关闭硬件加速,因为硬件加速对动画内存有要求的-->
<!-- 所以你没有关硬件加速,你会看不到动画-->
<!-- hardwareAccelerated是用来开启或者关闭硬件加速-->
<!-- 这里我还是写了hardwareAccelerated来关闭硬件加速-->
<activity android:name=".Launch"
android:hardwareAccelerated="false">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity"></activity>
</application>
最终的结果演示:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。