java - 动画不适用于所有设备

标签 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>

最佳答案

也许您可以使用内置的 ProgressBar 并将其更改为您想要的任何内容。

关于java - 动画不适用于所有设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11904656/

相关文章:

java - 有什么方法可以从我的设备键盘中删除特殊字符吗?

java - 在 IntelliJ IDEA 中,Play 框架反向路由期望 Nothing 作为参数

java - static 和 Final 对包意味着什么?

android - 在 Android OS 或 Java 中,字符序列和字符串有什么区别?

Android:覆盖 Activity 主题对话框的挂起转换不起作用

CSS3 无限动画循环在谷歌浏览器 31.0.1650.57 中不起作用

java - 多个错误通知

android - Android 平板电脑上的系统栏大小

android - 如何在 fragment extends BottomSheetDialogFragment 中设置主题?

javascript - 从左到右对 SVG 线进行动画处理 Snap.svg