0

因为我有一个有 135 个屏幕的应用程序。我知道这对应用程序来说是一个愚蠢的计划,但不幸的是这是要求。因为我们计划将所有屏幕制作为 html,然后将其放入资产中,然后将其读取为字符串并将其加载到两个网络视图中。它应该加载动画。所以我们使用了 2 个 webview。

我不知道这种方法的效率有多高。正如我在大多数博客和论坛中所读到的那样。这会产生很多性能问题。现在我的问题是我试图在 2 个 webviews 中相应地加载 4 个 html 并应用动画到 webview。这 2 个 webview 将采用框架布局。当我这样做时,我会遇到下面列出的许多问题。

  1. Webview 闪烁。
  2. 当动画发生时,有时未加载的 html 会显示在之前加载的之间。
  3. 有时页面没有加载它只会在屏幕上发生任何用户交互时显示。
  4. 有时在加载两个页面之间会显示一个白页。

闪烁和白页之间是我面临的主要问题。谁能让我知道我们如何解决这些问题。我真的很难做到这一点。如果这不是加载 135 html 的有效方法,请告诉我最好的一。下面提到了一些代码只是为了说明我是如何解决这个问题的......提前谢谢......

wv1.loadDataWithBaseURL("file:///android_asset/",
                        readFromAssests("rechercherunjob.html"), "text/html",
                        "UTF-8", null);

                anim_right_to_left_in = AnimationUtils.loadAnimation(getBaseContext(), R.anim.right_to_left_in);
                anim_left_to_right_out = AnimationUtils.loadAnimation(getBaseContext(), R.anim.right_to_left_out);

                anim_left_to_right_out.setAnimationListener(new AnimationListener() {
                            @Override
                            public void onAnimationStart(Animation animation) {
                                wv1.bringToFront();
                            }

                            @Override
                            public void onAnimationRepeat(Animation animation){
                            }

                            @Override
                            public void onAnimationEnd(Animation animation) {
                                runOnUiThread(new Runnable() {
                                    public void run() {
                                        Toast.makeText(LoadHTMLActivity.this,
                                                "anim end 2",
                                                Toast.LENGTH_SHORT).show();
                                    }
                                });
                                wv2.loadDataWithBaseURL(
                                        "file:///android_asset/",
                                        readFromAssests("blank.html"),
                                        "text/html", "UTF-8", null);
                            }
                        });


                final Handler Handler1 = new Handler();
                Runnable mUpdateTimeTask1 = new Runnable() {
                    public void run() {

                        wv1.setAnimation(anim_right_to_left_in);
                        wv2.setAnimation(anim_left_to_right_out);
                    }
                };
                Handler1.postDelayed(mUpdateTimeTask1, 1000);
4

1 回答 1

0

我认为在您的情况下,最好Fragments为它们使用和设置自定义动画过渡,不要使用多个WebViews. 如果您尝试将所有 125 个 html 绝对保留在内存中,您的应用程序将永远无法正常工作。

于 2012-11-20T10:37:54.420 回答