首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在XWalkView中添加进度

如何在XWalkView中添加进度
EN

Stack Overflow用户
提问于 2016-12-27 16:39:12
回答 4查看 1.6K关注 0票数 0

我使用XWalkView加载网页,如下所示:

代码语言:javascript
复制
<org.xwalk.core.XWalkView android:id="@+id/webview"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
</org.xwalk.core.XWalkView>

活动

代码语言:javascript
复制
XWalkView mXWalkView = (XWalkView) findViewById(R.id.webview);
mXWalkView.load("http://xxxxxxxx", null);

有关实现XWalkView的详细信息,请参阅my this post

但是现在,由于页面内容太多,它会调用4~5秒来完成加载。这将导致应用程序页面空白。我想添加XWalkView的加载进度。由于XWalkView的演示很少,我真的不知道从哪里开始。

任何帮助都将不胜感激。桑斯克!

编辑:在我尝试了@Srihari的答案之后,另一个奇怪的问题出来了。THe进度显示良好,当它完成100%时,它消失了。但在页面加载完成后不久,它又以100%的速度跳了出来,并且再也没有消失过。

活动:

代码语言:javascript
复制
class ResourceClient extends XWalkResourceClient {
    public ResourceClient(XWalkView xwalkView) {
        super(xwalkView);
    }

    public void onLoadStarted(XWalkView view, String url) {
        mProgress = (ProgressBar) findViewById(R.id.progressBar);
        mProgress.setVisibility(View.VISIBLE);
        super.onLoadStarted(view, url);
        Log.d("INFO", "Load Started:" + url);
    }

    public void onLoadFinished(XWalkView view, String url) {
        super.onLoadFinished(view, url);
        Log.d("INFO", "Load Finished:" + url);
        bottomBar = (BottomBar) findViewById(R.id.bottomBar);
        mProgress = (ProgressBar) findViewById(R.id.progressBar);
        mProgress.setVisibility(View.GONE);
    }

    public void onProgressChanged(XWalkView view, int progressInPercent) {
        super.onProgressChanged(view, progressInPercent);
        Log.d("INFO", "Loading Progress:" + progressInPercent);
        mProgress = (ProgressBar) findViewById(R.id.progressBar);
        mProgress.setProgress(progressInPercent);
    }

xml

代码语言:javascript
复制
<ProgressBar
    android:id="@+id/progressBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    style="@android:style/Widget.ProgressBar.Horizontal"
    android:layout_marginTop="50dp" />
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-06-25 08:38:09

在我解决我的问题之前,我去麦加做乌姆拉,我试了2天来解决问题,在乌拉之后,我花了2分钟来解决我的问题,我的上帝帮助我。

请不要删除我们从上帝那里得到的一切

你需要向上帝祈祷,你会得到你想要的一切吗?

这是我的MainActivity

代码语言:javascript
复制
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.View;
import android.webkit.ValueCallback;
import android.widget.FrameLayout;
import android.widget.ProgressBar;

import org.xwalk.core.XWalkPreferences;
import org.xwalk.core.XWalkResourceClient;
import org.xwalk.core.XWalkUIClient;
import org.xwalk.core.XWalkView;

import static com.github.crazyorr.embeddedcrosswalk.R.string.url;
public class MainActivity extends AppCompatActivity {

    private XWalkView mXWalkView;
    private FrameLayout frameLayout;
    private SwipeRefreshLayout swipe;
    private ProgressBar progressBar;

    @SuppressLint("SetJavaScriptEnabled")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        frameLayout = (FrameLayout) findViewById(R.id.framelayout);
        progressBar = (ProgressBar) findViewById(R.id.ProgressBar);
        swipe= (SwipeRefreshLayout) findViewById(R.id.swipe);
        swipe.setColorSchemeResources(R.color.orange, R.color.green, R.color.blue, R.color.purple);
        swipe.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {

                @Override
                public void onRefresh() 
                {mXWalkView.reload(url);}
        });

            loadweb();
        }


      public void loadweb(){

        mXWalkView = (XWalkView) findViewById(R.id.webview);
        mXWalkView.setResourceClient(new ResourceClient(mXWalkView));
          mXWalkView.setUIClient(new XWalkUIClient(mXWalkView) {
              @Override
              public void onPageLoadStarted(XWalkView view, String url) {
                  frameLayout.setVisibility(View.VISIBLE);
                  progressBar.setVisibility(ProgressBar.VISIBLE);
              }

              @Override
              public void onPageLoadStopped(XWalkView view, String url, XWalkUIClient.LoadStatus status) {
                  progressBar.setVisibility(view.GONE);
                  swipe.setRefreshing(false);
              }
          });
        XWalkPreferences.setValue(XWalkPreferences.REMOTE_DEBUGGING, true);
        mXWalkView.getSettings().setJavaScriptEnabled(true);
        mXWalkView.loadUrl("https://www.google.com.sa");
      }


      class ResourceClient extends XWalkResourceClient {

        public ResourceClient(XWalkView xwalkView) {
            super(xwalkView);
        }

         public void onProgressChanged(XWalkView view, int progressInPercent){

             frameLayout.setVisibility(View.VISIBLE);
             progressBar.setProgress(progressInPercent);


             if (progressInPercent == 100){
                 frameLayout.setVisibility(View.GONE);
             }
             super.onProgressChanged(view, progressInPercent);



         }


      }





      @Override
      public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return super.onCreateOptionsMenu(menu);
      }

      @Override
      public void onBackPressed() {
        mXWalkView.evaluateJavascript("onBackPressed()", new ValueCallback<String>() {
            @Override
            public void onReceiveValue(final String value) {
                if (!Boolean.valueOf(value)) {
                    MainActivity.super.onBackPressed();
                }

            }
        });
      }
    }

我希望这能帮助你

票数 3
EN

Stack Overflow用户

发布于 2016-12-27 16:51:14

显示活动或片段进度条onCreate。

代码语言:javascript
复制
xWalkView.setResourceClient(new XWalkResourceClient(xWalkView){
    @Override
    public void onLoadFinished(XWalkView view, String url) {
        super.onLoadFinished(view, url);
        // Stop your progress bar here
    }
});

希望这能帮助你..

票数 1
EN

Stack Overflow用户

发布于 2017-06-24 12:35:34

我解决了activity_main中的问题:

代码语言:javascript
复制
<org.xwalk.core.XWalkView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <FrameLayout
            android:id="@+id/framelayout"
            android:layout_width="match_parent"
            android:layout_height="3dp"
            android:background="@android:color/transparent"
            android:visibility="visible"></FrameLayout>

        <ProgressBar
            android:id="@+id/ProgressBar"
            style="@android:style/Widget.DeviceDefault.Light.ProgressBar.Large"
            android:layout_width="match_parent"
            android:layout_height="4dp"
            android:layout_gravity="top"
            android:layout_marginTop="3dp"
            android:background="@android:color/transparent"
            android:progress="10"
            android:progressDrawable="@drawable/custom_progress" />
    </org.xwalk.core.XWalkView>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41341732

复制
相关文章

相似问题

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