QuizSplashActivity
的代码:
package com.androidbook.triviaquiz;
import java.text.DateFormat;
import java.util.Date;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.AnimationUtils;
import android.view.animation.LayoutAnimationController;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
public class QuizSplashActivity extends QuizActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String rest="First Time Launched";
String launchd=DateFormat.getDateInstance().format(new Date());
String launcht=DateFormat.getTimeInstance().format(new Date());
String ldt=launchd+" "+launcht;
SharedPreferences set=getSharedPreferences(GAME_PREFERENCES,MODE_PRIVATE);
if(set.contains("lastLaunch"))
{rest=set.getString("lastLaunch", "default");
}
Log.i("LaunchInfo",rest);
SharedPreferences.Editor edit=set.edit();
edit.putString("lastLaunch",ldt);
edit.commit();
setContentView(R.layout.splash);
anime();
}
private void anime()
{TextView t1=(TextView)findViewById(R.id.TextViewTopTitle);
Animation f1=AnimationUtils.loadAnimation(this, R.anim.fade_in);
t1.startAnimation(f1);
TextView t2=(TextView)findViewById(R.id.TextViewBotTitle);
Animation f2=AnimationUtils.loadAnimation(this, R.anim.fade_in2);
//t2.startAnimation(f2);
// Animation fade2 =AnimationUtils.loadAnimation(this, R.anim.fade_in2);
//View.startAnimation(fade2);
t2.startAnimation(f2);
AnimationListener animListener=new AnimationListener() {
public void onAnimationEnd(Animation animation){
startActivity(new Intent(QuizSplashActivity.this,QuizMenuActivity.class));
QuizSplashActivity.this.finish();
}
public void onAnimationRepeat(Animation animation) {
}
public void onAnimationStart(Animation animation) {
}
};
f2.setAnimationListener(animListener);
Animation spinin=AnimationUtils.loadAnimation(this,R.anim.custom_anim);
LayoutAnimationController controller=new LayoutAnimationController(spinin);
TableLayout tb=(TableLayout) findViewById(R.id.tableLayout1);
for(int i=0;i<tb.getChildCount();i++)
{TableRow row=(TableRow) tb.getChildAt(i);
row.setLayoutAnimation(controller);
}
}
@Override
protected void onPause()
{super.onPause();
TextView t1=(TextView)findViewById(R.id.TextViewTopTitle);
t1.clearAnimation();
TextView t2 =(TextView)findViewById(R.id.TextViewBotTitle);
t2.clearAnimation();
TableLayout tb=(TableLayout) findViewById(R.id.tableLayout1);
for(int i=0;i<tb.getChildCount();i++)
{TableRow row=(TableRow) tb.getChildAt(i);
row.clearAnimation();
}
}
@Override
protected void onResume()
{super.onResume();
anime();
}
}
QuizMenuActivity代码
package com.androidbook.triviaquiz;
import android.os.Bundle;
public class QuizMenuActivity extends QuizActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.menu);
}
}
在启动动画播放后(特别是fade_in2),QuizMenuActivity
应该启动并且启动完成。动画效果很好,但QuizMenuActivity
似乎没有发布。使用调试器/断点,程序流似乎永远不会进入onAnimationEnd
(动画动画)方法。虽然我可能错了,因为我对eclipse和android很新。
我已根据第一个回复修复了代码并更新了它。现在列表工具正在解雇但是在启动活动之后我得到了“应用程序已经意外停止。请再试一次。强制关闭”。在某事物中看到叫做ZygoteInit $ MethodAnd。
这是callstack:
tiv [Android Application]
DalvikVM[localhost:8612]
Thread [<3> main] (Running)
Thread [<13> Binder Thread #2] (Running)
Thread [<11> Binder Thread #1] (Running)
我认为callstacks应该在logcat中,但我得到'无法打开堆栈跟踪文件'/data/anr/traces.txt':权限被拒绝'错误登录logcat。 此外,应用程序似乎在显示动画f2(正在被监听的内容)之前崩溃.t2永远不会显示。
答案 0 :(得分:1)
- 改变对此的表现 - 它解决了我的问题 -add点在活动名称的开头,不确定为什么或是否有必要!
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.androidbook.triviaquiz7"
android:versionCode="1"
android:versionName="1.0">
<application
android:label="@string/app_name"
android:debuggable="true"
android:icon="@drawable/quizicon">
<activity
android:name=".QuizSplashActivity"
android:label="@string/app_name">
<intent-filter>
<action
android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".QuizGameActivity"></activity>
<activity
android:name=".QuizSettingsActivity"></activity>
<activity
android:name=".QuizScoresActivity"></activity>
<activity
android:name=".QuizHelpActivity"></activity>
<activity
android:name=".QuizMenuActivity"></activity>
</application>
<uses-sdk
android:minSdkVersion="7" />
答案 1 :(得分:0)
您似乎正在将动画侦听器添加到“fade2”动画对象中。但该动画未设置为任何视图,如
view.startAnimation(fade2);
如果没有为视图启动动画,则侦听器将不会触发。