首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简化WebView

简化WebView
EN

Code Review用户
提问于 2014-10-30 14:51:16
回答 2查看 190关注 0票数 3

我开始在Android上编写代码,但我认为我的代码很重,可能会降低我的应用程序的性能。

例如,当我运行我的应用程序时,我尝试在我的一个网页视图中拖动页面,这是相当滞后的。

这不包括进口:

代码语言:javascript
复制
package com.anthoapps.googlewebviewsample;

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    //AFFICHAGE DU LOGO PENDANT 3SEC
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_main);

            final ImageView imgv1 = (ImageView) findViewById(R.id.logo);
            imgv1.setVisibility(View.VISIBLE);
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    imgv1.setVisibility(View.GONE);
                }
            },2 * 1000); // Pour 3 secondes
            final WebView webv1 = (WebView) findViewById(R.id.webView);
            webv1.setVisibility(View.INVISIBLE);

     // Nous cherchons le bouton dans notre interface
        ((ImageButton)findViewById(R.id.boutonfacebook))
        // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
        .setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
        // Nous affichons un message à l’utilisateur
            // Instanciation du WebView...

            webv1.setVisibility(View.VISIBLE);
            WebView wvSite = (WebView)findViewById(R.id.webView);
            WebView myWebView = (WebView) findViewById(R.id.webView);
            myWebView.setWebViewClient(new WebViewClient(){
                public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                    view.loadData("Impossible de charger la page, veuillez vérifier votre connexion internet.", "text/html", "UTF-8");
                }

            });

            //...on active JavaScript...
            WebSettings webSettings = wvSite.getSettings();
            webSettings.setJavaScriptEnabled(true);

            //...et on charge la page
            wvSite.loadUrl("https://m.facebook.com/Google");
        }
        }); 

        // Nous cherchons le bouton dans notre interface
        ((ImageButton)findViewById(R.id.boutonvip))
        // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
        .setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
        // Nous affichons un message à l’utilisateur
            // Instanciation du WebView...

            webv1.setVisibility(View.VISIBLE);
            WebView wvSite = (WebView)findViewById(R.id.webView);
            WebView myWebView = (WebView) findViewById(R.id.webView);
            myWebView.setWebViewClient(new WebViewClient(){
                public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                    view.loadData("Impossible de charger la page, veuillez vérifier votre connexion internet.", "text/html", "UTF-8");
                }

            });


            //...on active JavaScript...
            WebSettings webSettings = wvSite.getSettings();
            webSettings.setJavaScriptEnabled(true);

            //...et on charge la page
            wvSite.loadUrl("http://www.google.fr");
        }
        });

        // Nous cherchons le bouton dans notre interface
        ((ImageButton)findViewById(R.id.boutonlive))
        // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
        .setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
        // Nous affichons un message à l’utilisateur
            // Instanciation du WebView...

            webv1.setVisibility(View.VISIBLE);
            WebView wvSite = (WebView)findViewById(R.id.webView);
            WebView myWebView = (WebView) findViewById(R.id.webView);
            myWebView.setWebViewClient(new WebViewClient(){
                public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                    view.loadData("Impossible de charger la page, veuillez vérifier votre connexion internet.", "text/html", "UTF-8");
                }

            });


            //...on active JavaScript...
            WebSettings webSettings = wvSite.getSettings();
            webSettings.setJavaScriptEnabled(true);

            //...et on charge la page
            wvSite.loadUrl("http://www.google.de");
        }
        });


        // Nous cherchons le bouton dans notre interface
        ((ImageButton)findViewById(R.id.liste))
        // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
        .setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
        // Nous affichons un message à l’utilisateur
            // Instanciation du WebView...
            webv1.setVisibility(View.VISIBLE);
            WebView wvSite = (WebView)findViewById(R.id.webView);
            WebView myWebView = (WebView) findViewById(R.id.webView);
            myWebView.setWebViewClient(new WebViewClient(){
                public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                    view.loadData("Impossible de charger la page, veuillez vérifier votre connexion internet.", "text/html", "UTF-8");
                }

            });


            //...on active JavaScript...
            WebSettings webSettings = wvSite.getSettings();
            webSettings.setJavaScriptEnabled(true);

            //...et on charge la page
            wvSite.loadUrl("http://www.google.it");
        }
        });

    // Nous cherchons le bouton dans notre interface
    ((Button)findViewById(R.id.pagefb))
    // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
    .setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
    // Nous affichons un message à l’utilisateur
        // Instanciation du WebView...

        webv1.setVisibility(View.VISIBLE);
        WebView wvSite = (WebView)findViewById(R.id.webView);
        WebView myWebView = (WebView) findViewById(R.id.webView);
        myWebView.setWebViewClient(new WebViewClient(){
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                view.loadData("Impossible de charger la page, veuillez vérifier votre connexion internet.", "text/html", "UTF-8");
            }

        });


        //...on active JavaScript...
        WebSettings webSettings = wvSite.getSettings();
        webSettings.setJavaScriptEnabled(true);

        //...et on charge la page
        wvSite.loadUrl("https://m.facebook.com/Google");
    }
    });
    // Nous cherchons le bouton dans notre interface
    ((Button)findViewById(R.id.pagevip))
    // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
    .setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        webv1.setVisibility(View.VISIBLE);
    // Nous affichons un message à l’utilisateur
        // Instanciation du WebView...

        WebView wvSite = (WebView)findViewById(R.id.webView);
        WebView myWebView = (WebView) findViewById(R.id.webView);
        myWebView.setWebViewClient(new WebViewClient(){
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                view.loadData("Impossible de charger la page, veuillez vérifier votre connexion internet.", "text/html", "UTF-8");
            }

        });


        //...on active JavaScript...
        WebSettings webSettings = wvSite.getSettings();
        webSettings.setJavaScriptEnabled(true);

        //...et on charge la page
        wvSite.loadUrl("http://www.google.fr");    
    }
    });

    // Nous cherchons le bouton dans notre interface
    ((Button)findViewById(R.id.live))
    // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
    .setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
    // Nous affichons un message à l’utilisateur
        // Instanciation du WebView...

        webv1.setVisibility(View.VISIBLE);
        WebView wvSite = (WebView)findViewById(R.id.webView);
        WebView myWebView = (WebView) findViewById(R.id.webView);
        myWebView.setWebViewClient(new WebViewClient(){
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                view.loadData("Impossible de charger la page, veuillez vérifier votre connexion internet.", "text/html", "UTF-8");
            }

        });


        //...on active JavaScript...
        WebSettings webSettings = wvSite.getSettings();
        webSettings.setJavaScriptEnabled(true);

        //...et on charge la page
        wvSite.loadUrl("http://www.google.de");
    }
    });

    // Nous cherchons le bouton dans notre interface
    ((Button)findViewById(R.id.boutonliste))
    // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
    .setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
    // Nous affichons un message à l’utilisateur
        // Instanciation du WebView...

        webv1.setVisibility(View.VISIBLE);
        WebView wvSite = (WebView)findViewById(R.id.webView);
        WebView myWebView = (WebView) findViewById(R.id.webView);
        myWebView.setWebViewClient(new WebViewClient(){
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                view.loadData("Impossible de charger la page, veuillez vérifier votre connexion internet.", "text/html", "UTF-8");
            }


        });


        //...on active JavaScript...
        WebSettings webSettings = wvSite.getSettings();
        webSettings.setJavaScriptEnabled(true);

        //...et on charge la page
        wvSite.loadUrl("http://www.google.it");
    }
    });
}
}
EN

回答 2

Code Review用户

发布于 2014-10-30 15:28:20

您的格式在这里有很多问题,几乎没有什么是正确缩进的。

如果您希望CodeReview检查您的代码,请至少将评论翻译成英文。

下面是代码在适当缩进时的样子

代码语言:javascript
复制
package com.anthoapps.googlewebviewsample;

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    //AFFICHAGE DU LOGO PENDANT 3SEC
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_main);

        final ImageView imgv1 = (ImageView) findViewById(R.id.logo);
        imgv1.setVisibility(View.VISIBLE);
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                imgv1.setVisibility(View.GONE);
            }
        },2 * 1000); // Pour 3 secondes
        final WebView webv1 = (WebView) findViewById(R.id.webView);
        webv1.setVisibility(View.INVISIBLE);

        // Nous cherchons le bouton dans notre interface
        ((ImageButton)findViewById(R.id.boutonfacebook))
        // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
        .setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // Nous affichons un message à l’utilisateur
                // Instanciation du WebView...

                webv1.setVisibility(View.VISIBLE);
                WebView wvSite = (WebView)findViewById(R.id.webView);
                WebView myWebView = (WebView) findViewById(R.id.webView);
                myWebView.setWebViewClient(new WebViewClient(){
                    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                        view.loadData("Impossible de charger la page, veuillez vérifier votre connexion internet.", "text/html", "UTF-8");
                    }

                });

                //...on active JavaScript...
                WebSettings webSettings = wvSite.getSettings();
                webSettings.setJavaScriptEnabled(true);

                //...et on charge la page
                wvSite.loadUrl("https://m.facebook.com/Google");
            }
        }); 

        // Nous cherchons le bouton dans notre interface
        ((ImageButton)findViewById(R.id.boutonvip))
        // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
        .setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // Nous affichons un message à l’utilisateur
                // Instanciation du WebView...

                webv1.setVisibility(View.VISIBLE);
                WebView wvSite = (WebView)findViewById(R.id.webView);
                WebView myWebView = (WebView) findViewById(R.id.webView);
                myWebView.setWebViewClient(new WebViewClient(){
                    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                        view.loadData("Impossible de charger la page, veuillez vérifier votre connexion internet.", "text/html", "UTF-8");
                    }

                });


                //...on active JavaScript...
                WebSettings webSettings = wvSite.getSettings();
                webSettings.setJavaScriptEnabled(true);

                //...et on charge la page
                wvSite.loadUrl("http://www.google.fr");
            }
        });

        // Nous cherchons le bouton dans notre interface
        ((ImageButton)findViewById(R.id.boutonlive))
        // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
        .setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // Nous affichons un message à l’utilisateur
                // Instanciation du WebView...

                webv1.setVisibility(View.VISIBLE);
                WebView wvSite = (WebView)findViewById(R.id.webView);
                WebView myWebView = (WebView) findViewById(R.id.webView);
                myWebView.setWebViewClient(new WebViewClient(){
                    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                        view.loadData("Impossible de charger la page, veuillez vérifier votre connexion internet.", "text/html", "UTF-8");
                    }

                });


                //...on active JavaScript...
                WebSettings webSettings = wvSite.getSettings();
                webSettings.setJavaScriptEnabled(true);

                //...et on charge la page
                wvSite.loadUrl("http://www.google.de");
            }
        });


        // Nous cherchons le bouton dans notre interface
        ((ImageButton)findViewById(R.id.liste))
        // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
        .setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // Nous affichons un message à l’utilisateur
                // Instanciation du WebView...
                webv1.setVisibility(View.VISIBLE);
                WebView wvSite = (WebView)findViewById(R.id.webView);
                WebView myWebView = (WebView) findViewById(R.id.webView);
                myWebView.setWebViewClient(new WebViewClient(){
                    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                        view.loadData("Impossible de charger la page, veuillez vérifier votre connexion internet.", "text/html", "UTF-8");
                    }

                });


                //...on active JavaScript...
                WebSettings webSettings = wvSite.getSettings();
                webSettings.setJavaScriptEnabled(true);

                //...et on charge la page
                wvSite.loadUrl("http://www.google.it");
            }
        });

        // Nous cherchons le bouton dans notre interface
        ((Button)findViewById(R.id.pagefb))
        // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
        .setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // Nous affichons un message à l’utilisateur
                // Instanciation du WebView...

                webv1.setVisibility(View.VISIBLE);
                WebView wvSite = (WebView)findViewById(R.id.webView);
                WebView myWebView = (WebView) findViewById(R.id.webView);
                myWebView.setWebViewClient(new WebViewClient(){
                    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                        view.loadData("Impossible de charger la page, veuillez vérifier votre connexion internet.", "text/html", "UTF-8");
                    }

                });


                //...on active JavaScript...
                WebSettings webSettings = wvSite.getSettings();
                webSettings.setJavaScriptEnabled(true);

                //...et on charge la page
                wvSite.loadUrl("https://m.facebook.com/Google");
            }
        });
        // Nous cherchons le bouton dans notre interface
        ((Button)findViewById(R.id.pagevip))
        // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
        .setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                webv1.setVisibility(View.VISIBLE);
                // Nous affichons un message à l’utilisateur
                // Instanciation du WebView...

                WebView wvSite = (WebView)findViewById(R.id.webView);
                WebView myWebView = (WebView) findViewById(R.id.webView);
                myWebView.setWebViewClient(new WebViewClient(){
                    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                        view.loadData("Impossible de charger la page, veuillez vérifier votre connexion internet.", "text/html", "UTF-8");
                    }

                });


                //...on active JavaScript...
                WebSettings webSettings = wvSite.getSettings();
                webSettings.setJavaScriptEnabled(true);

                //...et on charge la page
                wvSite.loadUrl("http://www.google.fr");    
            }
        });

        // Nous cherchons le bouton dans notre interface
        ((Button)findViewById(R.id.live))
        // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
        .setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // Nous affichons un message à l’utilisateur
                // Instanciation du WebView...

                webv1.setVisibility(View.VISIBLE);
                WebView wvSite = (WebView)findViewById(R.id.webView);
                WebView myWebView = (WebView) findViewById(R.id.webView);
                myWebView.setWebViewClient(new WebViewClient(){
                    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                        view.loadData("Impossible de charger la page, veuillez vérifier votre connexion internet.", "text/html", "UTF-8");
                    }

                });


                //...on active JavaScript...
                WebSettings webSettings = wvSite.getSettings();
                webSettings.setJavaScriptEnabled(true);

                //...et on charge la page
                wvSite.loadUrl("http://www.google.de");
            }
        });

        // Nous cherchons le bouton dans notre interface
        ((Button)findViewById(R.id.boutonliste))
        // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
        .setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // Nous affichons un message à l’utilisateur
                // Instanciation du WebView...

                webv1.setVisibility(View.VISIBLE);
                WebView wvSite = (WebView)findViewById(R.id.webView);
                WebView myWebView = (WebView) findViewById(R.id.webView);
                myWebView.setWebViewClient(new WebViewClient(){
                    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                        view.loadData("Impossible de charger la page, veuillez vérifier votre connexion internet.", "text/html", "UTF-8");
                    }


                });


                //...on active JavaScript...
                WebSettings webSettings = wvSite.getSettings();
                webSettings.setJavaScriptEnabled(true);

                //...et on charge la page
                wvSite.loadUrl("http://www.google.it");
            }
        });
    }
}

你也有一些额外的空白。

票数 2
EN

Code Review用户

发布于 2014-10-31 16:48:09

您的onCreate中有很多代码重复--除了加载的url之外,您的所有onClickListeners都是相等的。您可以将这些url放到视图的标记中,或者创建Map来映射id-url。

此外,您正在查找您的网页视图在每次点击-使它成为一个字段,并找到和配置它一次。findViewById对于性能来说是相当沉重的。

实现:(对不起,我不知道注释所用的语言,这样它们的结构就会被破坏)

代码语言:javascript
复制
private WebView myWebView; //fields are accessible for anonymous classes

/**
 * Called when the activity is first created.
 */
//AFFICHAGE DU LOGO PENDANT 3SEC
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fragment_main);

    final ImageView logo = (ImageView) findViewById(R.id.logo); //bad name. you can use "logo", or if you are stuck to pointing the type in the name - ivLogo
   // logo.setVisibility(View.VISIBLE); //onCreate is called when activity is first created, so you can omit this line.
    new Handler().postDelayed(new Runnable() { //non-static handlers are dangerous for memory-leaks
        @Override
        public void run() {
            imgv1.setVisibility(View.GONE);
        }
    }, 2 * 1000); // Pour 3 secondes - this is for 2 :)
    myWebView = (WebView) findViewById(R.id.webView);
    myWebView.setVisibility(View.INVISIBLE); //again, onCreate is called when activity is first created, so explicitly set webview's visibility in your xml

    //You are duplicating code in all your onClickListeners. The only explicit difference is in url to load. We can put that in views tag or create Map<Integer, String> with <id-urlToLoad>
    myWebView.setWebViewClient(new WebViewClient() {
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
            view.loadData("Impossible de charger la page, veuillez vérifier votre connexion internet.", "text/html", "UTF-8");
        }

    });

    //...on active JavaScript...
    WebSettings webSettings = myWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);

    final OnClickListener onClickListener = (OnClickListener) new OnClickListener() {
        @Override
        public void onClick(View v) {
            // Nous affichons un message à l’utilisateur
            // Instanciation du WebView...

            webv1.setVisibility(View.VISIBLE);

            //...et on charge la page
            myWebView.loadUrl((String) v.getTag());
        }
    };
    final ImageButton fbButton = (ImageButton) findViewById(R.id.boutonfacebook);
    fbButton.setTag("https://m.facebook.com/Google");
    fbButton.setOnClickListener(onClickListener);

    // Nous cherchons le bouton dans notre interface
    final ImageButton vipButton = (ImageButton) findViewById(R.id.boutonvip);
    vipButton.setTag("http://www.google.fr")
    vipButton
            // Nous paramétrons un écouteur sur l’événement ‘click’ de ce bouton
            .setOnClickListener(onClickListener);

    //and so on...

}

变量的名称可能更有意义。imgv1作为一个名称非常无用,您可以使用“徽标”或(如果您坚持将视图的类型输入名称) ivLogo。我会用"ivLogo“来表示xml,而用"logo”来表示变量名。

票数 1
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/68409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档