たとえば、私のアニメーションは SGS2 で動作しますが、SGS 1 やエミュレーターでは動作しません (何らかの理由で、同じように作成した他のアニメーションはすべてのデバイスで完全に正常に動作します)
さらに、アニメーションを実行するデバイスでも、OnPostExcute が呼び出されるとアニメーションが停止しますが、ASyncTask にネストされている他の同様のアニメーションでは、stop() が呼び出されるまでアニメーションは停止しません。
各フレームのサイズは 512x512 です
アニメーション リスト ファイルは次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/logo0" android:duration="35" />
<item android:drawable="@drawable/logo1" android:duration="35" />
<item android:drawable="@drawable/logo2" android:duration="35" />
<item android:drawable="@drawable/logo3" android:duration="35" />
<item android:drawable="@drawable/logo4" android:duration="35" />
<item android:drawable="@drawable/logo5" android:duration="35" />
<item android:drawable="@drawable/logo6" android:duration="35" />
<item android:drawable="@drawable/logo7" android:duration="35" />
<item android:drawable="@drawable/logo8" android:duration="35" />
<item android:drawable="@drawable/logo9" android:duration="35" />
<item android:drawable="@drawable/logo10" android:duration="35" />
<item android:drawable="@drawable/logo11" android:duration="35" />
<item android:drawable="@drawable/logo12" android:duration="35" />
<item android:drawable="@drawable/logo13" android:duration="35" />
<item android:drawable="@drawable/logo14" android:duration="35" />
<item android:drawable="@drawable/logo15" android:duration="35" />
<item android:drawable="@drawable/logo16" android:duration="35" />
<item android:drawable="@drawable/logo17" android:duration="35" />
<item android:drawable="@drawable/logo18" android:duration="35" />
<item android:drawable="@drawable/logo19" android:duration="35" />
<item android:drawable="@drawable/logo20" android:duration="35" />
<item android:drawable="@drawable/logo21" android:duration="35" />
<item android:drawable="@drawable/logo22" android:duration="35" />
<item android:drawable="@drawable/logo23" android:duration="35" />
<item android:drawable="@drawable/logo24" android:duration="35" />
<item android:drawable="@drawable/logo25" android:duration="35" />
<item android:drawable="@drawable/logo26" android:duration="35" />
<item android:drawable="@drawable/logo27" android:duration="35" />
<item android:drawable="@drawable/logo28" android:duration="35" />
<item android:drawable="@drawable/logo29" android:duration="35" />
<item android:drawable="@drawable/logo30" android:duration="35" />
<item android:drawable="@drawable/logo31" android:duration="35" />
<item android:drawable="@drawable/logo32" android:duration="35" />
<item android:drawable="@drawable/logo33" android:duration="35" />
<item android:drawable="@drawable/logo34" android:duration="35" />
<item android:drawable="@drawable/logo35" android:duration="35" />
<item android:drawable="@drawable/logo36" android:duration="35" />
<item android:drawable="@drawable/logo37" android:duration="35" />
<item android:drawable="@drawable/logo38" android:duration="35" />
<item android:drawable="@drawable/logo39" android:duration="35" />
<item android:drawable="@drawable/logo40" android:duration="35" />
<item android:drawable="@drawable/logo41" android:duration="35" />
<item android:drawable="@drawable/logo42" android:duration="35" />
<item android:drawable="@drawable/logo43" android:duration="35" />
<item android:drawable="@drawable/logo44" android:duration="35" />
<item android:drawable="@drawable/logo45" android:duration="35" />
<item android:drawable="@drawable/logo46" android:duration="35" />
<item android:drawable="@drawable/logo47" android:duration="35" />
<item android:drawable="@drawable/logo48" android:duration="35" />
<item android:drawable="@drawable/logo49" android:duration="35" />
<item android:drawable="@drawable/logo50" android:duration="35" />
<item android:drawable="@drawable/logo51" android:duration="35" />
<item android:drawable="@drawable/logo52" android:duration="35" />
<item android:drawable="@drawable/logo53" android:duration="35" />
<item android:drawable="@drawable/logo54" android:duration="35" />
<item android:drawable="@drawable/logo55" android:duration="35" />
<item android:drawable="@drawable/logo56" android:duration="35" />
<item android:drawable="@drawable/logo57" android:duration="35" />
<item android:drawable="@drawable/logo58" android:duration="35" />
<item android:drawable="@drawable/logo59" android:duration="35" />
</animation-list>
アニメーションを開始するコードは次のとおりです。
final ImageView logoAnimation = (ImageView) findViewById(R.id.logoAnimation);
logoAnimation.setImageResource(R.drawable.none);
logoAnimation.setBackgroundResource(R.drawable.logo_animation);
final AnimationDrawable frameAnimation = (AnimationDrawable) logoAnimation
.getBackground();
class Init extends AsyncTask<Void, Boolean, Boolean> {
@Override
protected void onPreExecute() {
super.onPreExecute();
frameAnimation.start();
}
@Override
protected Boolean doInBackground(Void... params) {
if (!isNetworkAvailable()) {
return false;
} else {
try {
CheckAll();
} catch (IOException e) {
}
}
return true;
}
@Override
protected void onPostExecute(Boolean result) {
super.onPostExecute(result);
frameAnimation.stop();
if (result) {
Intent openMain = new Intent(c, Main.class);
startActivity(openMain);
Splash.this.finish();
} else {
Builder alertDialog = new AlertDialog.Builder(Splash.this);
alertDialog
.setMessage(getString(R.string.noInternetConnection));
alertDialog.setNegativeButton(getString(R.string.close),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
Splash.this.finish();
}
});
alertDialog.show();
}
}
}
new Init().execute();
必要かどうかはわかりませんが、レイアウト xml ファイルは次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/splash"
android:orientation="vertical" >
<ImageView
android:id="@+id/logoAnimation"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:src="@drawable/logo0"
android:contentDescription="@null" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/logoAnimation"
android:layout_centerHorizontal="true"
android:text="@string/loading"
android:textAppearance="?android:attr/textAppearanceLarge" />
</RelativeLayout>