【问题标题】:How to hide progress bar when animation has finished动画完成后如何隐藏进度条
【发布时间】:2018-11-01 15:15:57
【问题描述】:

我有一个包含WebViewProgressBar 的活动。在网页加载过程中,进度条出现并逐渐水平填充。动画完成后进度条的可见性如何设置为View.GONE

public class WebviewActivity extends AppCompatActivity {
    WebView myWebView;
    ProgressBar pBar;
    ProgressBar myProgressBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.fragment_webview);
    }

    @Override
    protected void onStart() {
        super.onStart();

        setContentView(R.layout.fragment_webview);

        myProgressBar = findViewById(R.id.mProgressBar);
        myProgressBar.setMax(100);

        String url = getIntent().getStringExtra("url");
        myWebView = findViewById(R.id.webview01);
        myWebView.setWebViewClient(new WebViewClient());
        WebSettings webSettings = myWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        myWebView.loadUrl(url);

        myWebView.setWebChromeClient(new WebChromeClient() {
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                super.onProgressChanged(view, newProgress);
                myProgressBar.setProgress(newProgress);

                if (newProgress == 100) {
                    AlphaAnimation fadeOut;
                    fadeOut = new AlphaAnimation(1,0);
                    fadeOut.setDuration(500);
                    fadeOut.setFillAfter(true);
                    myProgressBar.startAnimation(fadeOut);
//                    myProgressBar.setVisibility(View.GONE);
                } else {
                    myProgressBar.setVisibility(View.VISIBLE);
                }
            }
        });

    }

    private class WebViewClient extends android.webkit.WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request){
            String url=request.getUrl().toString();

            view.loadUrl(url);
            return true;
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
//            myProgressBar.setVisibility(View.GONE);
        }
    }
}

【问题讨论】:

标签: java android android-progressbar


【解决方案1】:

使用监听器:

fadeOut.setAnimationListener(new Animation.AnimationListener() {
    @Override
    public void onAnimationStart(Animation animation) {}

    @Override
    public void onAnimationRepeat(Animation animation) {}

    @Override
    public void onAnimantionEnd(Animation animation) {
        myProgressBar.setVisibility(View.GONE);
    }
});

【讨论】:

    【解决方案2】:

    尝试为动画对象设置一个动画监听器(fadeOut):

    myWebView.setWebChromeClient(new WebChromeClient() {
                @Override
                public void onProgressChanged(WebView view, int newProgress) {
                    super.onProgressChanged(view, newProgress);
                    myProgressBar.setProgress(newProgress);
    
                    if (newProgress == 100) {
                        AlphaAnimation fadeOut;
                        fadeOut = new AlphaAnimation(1, 0);
                        fadeOut.setDuration(500);
                        fadeOut.setFillAfter(true);
                        fadeOut.setAnimationListener(new Animation.AnimationListener() {
                            @Override
                            public void onAnimationStart(Animation animation) {
                                // whatever you want to happen when the fadeOut animation starts
                            }
    
                            @Override
                            public void onAnimationEnd(Animation animation) {
                                // whatever you want to happen when the fadeOut animation ends
                                myProgressBar.setVisibility(View.GONE);
                            }
    
                            @Override
                            public void onAnimationRepeat(Animation animation) {
                                // whatever you want to happen when the fadeOut animation repeats itself
                            }
                        });
                        myProgressBar.startAnimation(fadeOut);
                    } else {
                        myProgressBar.setVisibility(View.VISIBLE);
                    }
                }
            });
    

    通过上面的回调,您可以连接到AnimationStartAnimationEndAnimationRepeat

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多