切换不同的数据状态布局,包含加载中、空数据和出错状态(利用开源框架)

 

implementation 'com.github.Bakumon:StatusLayoutManager:1.0.4'

将要动态加载的布局用SwipeRefreshLayout包含,布局如下

    <android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/act_index_srl"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <WebView
            android:id="@+id/act_webview_wv"
            android:layout_width="match_parent"
            android:layout_height="match_parent"

            >

        </WebView>
    </android.support.v4.widget.SwipeRefreshLayout>

Java类,通过webView加载完成后,改变页面状态

    @Override
    public void initView() {
        setContentView(R.layout.act_index_web);
        Intent intent = getIntent();
        String strUrl = intent.getStringExtra("index");
        webView = findViewById(R.id.act_webview_wv);
        webView.loadUrl(strUrl);
        webView.setWebViewClient(new WebViewClient(){

            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                statusLayoutManager.showSuccessLayout();
            }

        });

        setWebInit();
        initSRL();


    }

    private void initSRL() {
        swipeRefresh = findViewById(R.id.act_index_srl);
        swipeRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                swipeRefresh.setRefreshing(false);
            }
        });
        statusLayoutManager = new StatusLayoutManager.Builder(swipeRefresh)
                .setOnStatusChildClickListener(new OnStatusChildClickListener() {
                    @Override
                    public void onEmptyChildClick(View view) {
//                        Toast.makeText(indexViewActivity.this, R.string.reload_empty, Toast.LENGTH_SHORT).show();
                        statusLayoutManager.showLoadingLayout();
//                        getData(1000);
                    }

                    @Override
                    public void onErrorChildClick(View view) {
//                        Toast.makeText(MainActivity.this, R.string.reload_error, Toast.LENGTH_SHORT).show();
                        statusLayoutManager.showLoadingLayout();
//                        getData(1000);
                    }

                    @Override
                    public void onCustomerChildClick(View view) {
//                        if (view.getId() == R.id.tv_customer) {
                            Toast.makeText(MainActivity.this, R.string.request_access, Toast.LENGTH_SHORT).show();
//                        } else if (view.getId() == R.id.tv_customer1) {
                            Toast.makeText(MainActivity.this, R.string.switch_account, Toast.LENGTH_SHORT).show();
//                        }

                    }
                })
                .build();
        statusLayoutManager.showLoadingLayout();

//        statusLayoutManager.showSuccessLayout();

    }

    @Override
    public String setTitleText() {
        return "微博主页";
    }

    public void setWebInit() {
        /* 设置支持Js,必须设置的,不然网页基本上不能看 */
        webView.getSettings().setJavaScriptEnabled(true);
        /* 设置缓存模式,我这里使用的默认,不做多讲解 */
        webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
        /* 设置为true表示支持使用js打开新的窗口 */
        webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
        /* 大部分网页需要自己保存一些数据,这个时候就的设置下面这个属性 */
        webView.getSettings().setDomStorageEnabled(true);
        /* 设置为使用webview推荐的窗口 */
        webView.getSettings().setUseWideViewPort(true);
        /* 设置网页自适应屏幕大小 ---这个属性应该是跟上面一个属性一起用 */
        webView.getSettings().setLoadWithOverviewMode(true);
        /* HTML5的地理位置服务,设置为true,启用地理定位 */
        webView.getSettings().setGeolocationEnabled(true);
        /* 设置是否允许webview使用缩放的功能,我这里设为false,不允许 */
        webView.getSettings().setBuiltInZoomControls(false);
        /* 提高网页渲染的优先级 */
        webView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
        /* 设置显示水平滚动条,就是网页右边的滚动条.我这里设置的不显示 */
        webView.setHorizontalScrollBarEnabled(false);
        /* 指定垂直滚动条是否有叠加样式 */
        webView.setVerticalScrollbarOverlay(true);
        /* 设置滚动条的样式 */
        webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
        /* 这个不用说了,重写WebChromeClient监听网页加载的进度,从而实现进度条 */
        webView.setWebChromeClient(new WebChromeClient());

        webView.getSettings().setDomStorageEnabled(true);
    }
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值