2016-12-27 2 views
0

я использую XWalkView для загрузки веб-страницы, как это:Как добавить прогресс в XWalkView

<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 см этот мой post.

Но теперь, для страницы слишком много контента, он будет вызывать 4 ~ 5 секунд для финишной загрузки. Это приведет к тому, что страница приложения будет пустой. Я хочу добавить ход загрузки для XWalkView. Для XWalkView очень мало демо, я действительно не знал, с чего начать.

Любая помощь будет оценена по достоинству. Thansk!

Отредактировано: после того, как я попытаюсь ответить на ответ Шрихари, выйдет еще одна проблема с эфиром. Прогресс показывает хорошо, и когда он закончил 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" /> 

ответ

1

, прежде чем я исправить мою проблему, я пойдите, чтобы сделать umrah в makkah, я попробую 2 дня, чтобы исправить проблему после umrah, я забираю 2 минуты и исправляю свою проблему. d это поможет мне

пожалуйста Не снимайте этот разговор все, что мы имеем от бога

вам нужно для молитвы к Богу, и вы получите все, что вы хотите

это мой MainActivity

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

      } 
     }); 
     } 
    } 

i hop this help you

+0

1. Сам ОП дал ответ на свою проблему 6 месяцев назад (этот: https://stackoverflow.com/a/41487480/4887159). 2. Я тоже решил проблемы после 2 дней обдумывания, а затем через 2 минуты.Это происходит потому, что изменение окружающей среды и забывание проблемы на некоторое время стимулируют мозг. – Ray

+0

не прав Когда я собираюсь спать, он стимулирует мозг – ahmmed

1

Показать прогресс бар OnCreate этой деятельности или его фрагмента.

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

Надеется, что это может помочь вам ..

0

Я нашел weired behivour в моем вопросе вызван динамическим контентом в моей странице. Потому что есть 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(){ 

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

Лучше проиллюстрируйте свой код и добавьте код java. Спасибо. –

Смежные вопросы