ScrollView to the WebView JavaScript Code and WebView Scrolling issue in Android


 package com.indiable.pawanpawar.webview; import android.app.ProgressDialog; import android.os.Build; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.KeyEvent; import android.view.ViewTreeObserver; import android.webkit.ConsoleMessage; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.ScrollView; import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.AdView; import com.indiable.pawanpawar.R; public class Webview1Activity extends AppCompatActivity {     private ProgressDialog progDailog;     WebView webView;     @Override     protected void onDestroy() {         if (webView != null)             webView.destroy();         super.onDestroy();     }     private ScrollView mScrollView;     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_webview1);         AdView mAdView = (AdView) findViewById(R.id.adView);         AdRequest adRequest1 = new AdRequest.Builder()                 .build();         mAdView.loadAd(adRequest1);         progDailog = ProgressDialog.show(this, "Loading", "Please wait...", true);         progDailog.setCancelable(true);         webView = (WebView) findViewById(R.id.webView1);         webView.setWebViewClient(new WebViewClient());         webView.getSettings().setJavaScriptEnabled(true);         webView.getSettings().setLoadWithOverviewMode(true);         webView.getSettings().setUseWideViewPort(true);         webView.setWebViewClient(new WebViewClient() {             @Override             public void onPageFinished(WebView view, final String url) {                 onPageLoaded();                 progDailog.dismiss();             }         });         webView.setWebChromeClient(new WebChromeClient() {             @Override             public boolean onConsoleMessage(ConsoleMessage consoleMessage) {                // Log.d("WebViewLogs", consoleMessage.message());                 return true;             }         });         webView.loadUrl("http://ctcrowd.com/entity-list/Govt.Scheme/9q71tBp3PlNRWC0yHEov");         setScrollViewListener();;     }     public static final long DELAY_TIME = 1000;     private long mTime;     private void setScrollViewListener() {         mScrollView = findViewById(R.id.scrollView);         mScrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {             @Override             public void onScrollChanged() {                 if (mTime + DELAY_TIME < System.currentTimeMillis()) {                     mTime = System.currentTimeMillis();                     sendScrollEvent(mScrollView.getScrollY(), mScrollView.getScrollX());                 }             }         });     }     private void sendScrollEvent(int top, int left) {         invokeJavaScriptCode(                 String.format("" +                                 "jQuery(document).ready(" +                                 "function($){" +                                 "$(window).trigger(\"scroll\", [{top: %d , left: %d}]);" +                                 "}" +                                 ");"                         , top, left)         );     }     private void invokeJavaScriptCode(String code) {         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {             webView.evaluateJavascript(code, null);         } else {             webView.loadUrl(String.format("javascript:%s", code));         }     }     private void onPageLoaded() {         invokeJavaScriptCode("" +                 "jQuery(document).ready(function($){" +                 "$(window).scroll(function(event, data) {" +                 "console.log(\"LOG: top: \" + data.top + \"  left: \" + data.left);" +                 "});" +                 "});");     }     @Override     public boolean onKeyDown(int keyCode, KeyEvent event) {         if (event.getAction() == KeyEvent.ACTION_DOWN) {             switch (keyCode) {                 case KeyEvent.KEYCODE_BACK:                     if (webView.canGoBack()) {                         webView.goBack();                     } else {                         finish();                     }                     return true;             }         }         return super.onKeyDown(keyCode, event);     }     boolean doubleBackToExitPressedOnce = false;    /* @Override     public void onBackPressed() {         if (doubleBackToExitPressedOnce) {             super.onBackPressed();             return;         }         this.doubleBackToExitPressedOnce = true;         Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show();         new Handler().postDelayed(new Runnable() {             @Override             public void run() {                 doubleBackToExitPressedOnce=false;             }         }, 2000);     }*/ } 

 


0 Comments


Leave a Reply