Android-Android应用程序启动时如何实现背景画面的切换?

Android-Android应用程序启动时如何实现背景画面的切换?

偏爱自由 发布于 2017-07-23 字数 0 浏览 1074 回复 3

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

灵芸 2017-10-21 3 楼

1 、 在values文件新建styles.xml文件,添加一个属性节点:

[java] view plaincopyprint?
<?xml version="1.0" encoding="UTF-8"?>
<resources>

<!-- style name以及它所继承的系统Theme主题 -->
<style name="Theme.MainActivity" parent="android:Theme">
<!-- 是否允许有标题栏 -->
<item name="android:windowNoTitle">true</item>
<!-- 提示背景图片 -->
<item name="android:windowBackground">@drawable/bg_theme</item>
<item name="android:windowContentOverlay">@null</item>
<!-- 是否允许背景灰暗 -->
<item name="android:backgroundDimEnabled">false</item>
</style>

<!-- dialog样式的Activity -->
<style name="Theme.FloatActivity" parent="android:style/Theme.Dialog" >
<item name="android:windowBackground" >@drawable/bg_car</item>
<item name="android:backgroundDimEnabled">false</item>
</style>

</resources>

2、在AndroidManifest文件下应用之前创建的theme/style

[java] view plaincopyprint?
<span style="font-size:13px;"><?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.feixun.cn" android:versionCode="1" android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainActivity" android:label="@string/app_name"
android:theme="@style/Theme.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" ></action>
<category android:name="android.intent.category.LAUNCHER" ></category>
</intent-filter>

</activity>

<activity android:name=".TestActivityCallBack">

</activity>
<activity android:name=".TestActivityCallBack_2" android:theme="@style/Theme.MainActivity"></activity>

</application>

</manifest> </span>
<span style="font-size:13px;"><?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.feixun.cn" android:versionCode="1" android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainActivity" android:label="@string/app_name"
android:theme="@style/Theme.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" ></action>
<category android:name="android.intent.category.LAUNCHER" ></category>
</intent-filter>
</activity>

<activity android:name=".TestActivityCallBack">

</activity>
<activity android:name=".TestActivityCallBack_2" android:theme="@style/Theme.MainActivity"></activity>
</application>

</manifest> </span>

下面,以一个程序来验证我们的特效,程序启动时显示的是自定义属性中"Theme.MainActivity"

中的bg_theme图片,进入程序后,显示的的是自定义布局中的bg_car图片,是不是看起来很炫。为了延长特效时间,可以利用handler来延长特效时间。 程序如下:

[java] view plaincopyprint?
<pre class="java" name="code">
<pre class="java" name="code"> [java] view plaincopyprint?
importandroid.app.Activity;
import android.os.Bundle;
importandroid.os.Handler;
importandroid.os.Message;
importandroid.widget.LinearLayout;

public class MainActivity extends Activity {

private static int WAIT_FOR = 1;

/** Called whenthe activity is first created. */
@Override
public void onCreate(BundlesavedInstanceState) {

super.onCreate(savedInstanceState);
// 利用handler来使主线程睡眠一段时间
handler.sendEmptyMessage(WAIT_FOR);
setContentView(R.layout.main);

}

private Handler handler = new Handler() {

public voidhandleMessage(Message msg) {
if (msg.what == WAIT_FOR) {
try {
//主线程睡眠一段时间
Thread.sleep(5000);
}
catch(InterruptedException e) {
// TODO Auto-generatedcatch block
e.printStackTrace();
}
}
}

};
}

甜柠檬 2017-10-20 2 楼

我猜测你的问题是不是已启动时有一个背景切换的动画对吗?如果是这样的建议使用frameanimation或者新起线程执行图片的变换。

归属感 2017-07-23 1 楼

你这个问题,我想到的可以做到这种效果有下面三种:
1.在activity的onCreate事件中做一个循环设置界面的背景图片,在循环的时候,做一下延时就可以了;
2.也可以建几个activity相互切换,也可以有这种效果
3.就是用多媒体了,需要写动画轨道等一些方法,这个写起来比较麻烦;