动画无法在所有设备上运行

时间:2012-08-10 15:20:06

标签: java android animation frame android-animation


例如,我的动画可以在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>

1 个答案:

答案 0 :(得分:1)

也许你可以使用内置的ProgressBar并将它的drawable改为你想要的任何东西。