0

次のように、XWalkView を使用して Web ページをロードします。

<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>

アクティビティ

XWalkView mXWalkView = (XWalkView) findViewById(R.id.webview);
mXWalkView.load("http://xxxxxxxx", null);

XWalkView の実装の詳細については、私のこの投稿を参照してください。

しかし、ページのコンテンツが多すぎるため、読み込みが完了するまでに 4 ~ 5 秒かかります。これにより、アプリ ページが空白になります。XWalkView のロード進行状況を追加したい。XWalkView にはデモがほとんどないため、どこから始めればよいか本当にわかりませんでした。

どんな助けでも大歓迎です。ありがとう!

編集済み:@Srihariの回答に従って試した後、別の奇妙な問題が出てきました。進行具合もよく、100%終わったら消えました。しかし、ページの読み込みが完了するとすぐに、100% で再び飛び出し、消えることはありません。

アクティビティ:

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

<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" />
4

4 に答える 4

1

そのアクティビティまたはフラグメントの作成時にプログレス バーを表示します。

xWalkView.setResourceClient(new XWalkResourceClient(xWalkView){
    @Override
    public void onLoadFinished(XWalkView view, String url) {
        super.onLoadFinished(view, url);
        // Stop your progress bar here
    }
});

これがあなたを助けることを願っています..

于 2016-12-27T08:51:13.627 に答える
1

activity_main にある問題を修正しました。

<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>
于 2017-06-24T04:35:34.310 に答える
0

私の質問の奇妙な動作は、私のページの動的コンテンツが原因であることがわかりました。私のページには stlloader があるため、xwalkview の読み込みの進行状況と stlloader の読み込みの進行状況を実装します。

Xwalkview ロードの進行状況:

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);
    }

stlloader ロードの進行状況:

      var loader = new THREE.STLLoader(manager);
      loader.load( "{{ $modelfilepath }}", function ( geometry ) {
          var meshMaterial = new THREE.MeshPhongMaterial( { color: 0xAAAAAA, specular: 0x111111, shininess: 200 } );
          if (geometry.hasColors) {
              meshMaterial = new THREE.MeshPhongMaterial({ opacity: geometry.alpha, vertexColors: THREE.VertexColors });
          }
          centerOffset = geometry.center();
          var mesh = new THREE.Mesh( geometry, meshMaterial );
          tV.z = (-geometry.boundingBox.min.z + geometry.boundingBox.max.z)/2;
          mesh.matrix.elements[14] = tV.z;
          mesh.castShadow = true;
          mesh.receiveShadow = true;
          mesh.matrixAutoUpdate = false;

          boundBox.setFromObject(mesh);
          if(!isFillin(boundBox.min, boundBox.max, machineLength))
          {
              mesh.material.color.setHex(0xff0000);
          }

          stlMesh = mesh;
          scene.add( mesh );
          objects.push(mesh);
          showPosition(0, 0, tV.z);
      }, function(progressItem) {
          $('#loaderstatus').html("Loading... " + (Math.round(progressItem.loaded / progressItem.total *100)) + "%");
      }, function(){

      });
于 2017-01-05T14:25:25.570 に答える