Convert Website Into An Android App | #7 Adding a progress bar

рд╣рдо рдЕрдкрдиреЗ App рдХреЛ Advance рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдЙрд╕рдореЗ Progress Bar рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рд╕реЗ User рд╕рдордЭ рдкрд╛рдПрдВрдЧреЗ рдХреА Page рдЕрднреА Load рд╣реЛ рд░рд╣рд╛ рд╣реИ!


1. рдирд┐рдЪреЗ рджрд┐рдП рд╣реБрдП Code рдХреЛ Image рдореЗрдВ рджрд┐рдЦрд╛рдП рдЕрдиреБрд╕рд╛рд░ activity_main.xml рдореЗрдВ Paste рдХреАрдЬрд┐рдпреЗ!
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="55dp"
android:layout_height="55dp"
android:indeterminate="false"
android:max="100"
android:progress="20"
android:progressTint="@color/colorAccent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />




2. рдлрд┐рд░ рд╕реЗ рд╣рдореЗ рдирд┐рдЪреЗ рджрд┐рдП рд╣реБрдП Code рдХреЛ Image рдореЗ рджрд┐рдЦрд╛рдП рдЕрдиреБрд╕рд╛рд░ MainActivity.java рдореЗрдВ Paste рдХреАрдЬрд┐рдпреЗред

private ProgressBar progressBar;

рдЕрдм рдЖрдкрдХреЛ  рдлрд┐рд░ рд╕реЗ рдЗрд╕рдХреЗ рд▓рд┐рдП Class Import рдХрд░рдирд╛ рдкреЬреЗрдЧрд╛-




3. рдлрд┐рд░ рдЖрдкрдХреЛ рдирд┐рдЪреЗ рджрд┐рдП рд╣реБрдП Code рдХреЛ Image рдореЗ рджрд┐рдЦрд╛рдП рдЕрдиреБрд╕рд╛рд░ MainActivity.java рдореЗрдВ Paste рдХрд░рдирд╛ рд╣реИ!
//Progress bar
progressBar = (ProgressBar) findViewById(R.id.progressBar);
progressBar.setMax(100);




4. рдлрд┐рд░ рдЖрдкрдХреЛ рдирд┐рдЪреЗ рджрд┐рдП рд╣реБрдП Code рдХреЛ Image рдореЗ рджрд┐рдЦрд╛рдП рдЕрдиреБрд╕рд╛рд░ MainActivity.java рдореЗрдВ рдкрд╣рд▓реЗ рд╡рд╛рд▓реЗ Code рд╕реЗ Replace рдХрд░рдирд╛ рд╣реИ!
webview = findViewById(R.id.webView);
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setDomStorageEnabled(true);
webview.setOverScrollMode(WebView.OVER_SCROLL_NEVER);
webview.loadUrl(websiteURL);
webview.setWebViewClient(new WebViewClientDemo());
webview.setWebChromeClient(new WebChromeClientDemo());

рдЕрдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЖрдкрдХреЗ рдореЗ рднреА рдРрд╕рд╛ (рдирд┐рдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ) Error рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛! рддреЛ рдЖрдк рдЗрд╕реЗ ignor рдХреАрдЬрд┐рдпреЗ Next  Code Paste рдХрд░рдиреЗ рдкрд░ рдпрд╣ Solve рд╣реЛ рдЬрд╛рдпреЗрдЧрд╛ред




5. рдЕрдм рдЖрдкрдХреЛ рд╕рд┐рд░реНрдл рдПрдХ рдФрд░ Step Complete рдХрд░рдирд╛ рд╣реИред
рдлрд┐рд░ рд╕реЗ рдЖрдкрдХреЛ рдирд┐рдЪреЗ рджрд┐рдП рд╣реБрдП Code рдХреЛ Image рдореЗ рджрд┐рдЦрд╛рдП рдЕрдиреБрд╕рд╛рд░ MainActivity.java рдореЗрдВ рдкрд╣рд▓реЗ рд╡рд╛рд▓реЗ Code рд╕реЗ Replace рдХрд░рдирд╛ рд╣реИ-
private class WebViewClientDemo extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
progressBar.setVisibility(View.GONE);
progressBar.setProgress(100);
mySwipeRefreshLayout.setRefreshing(false);
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
progressBar.setVisibility(View.VISIBLE);
progressBar.setProgress(0);
}

}
private class WebChromeClientDemo extends WebChromeClient {
public void onProgressChanged(WebView view, int progress) {
progressBar.setProgress(progress);
}
}

рдЕрдм Class Import рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 3 рд╕реЗ 4 Error рдЖрдПрдЧрд╛ рддреЛ рдЖрдкрдХреЛ рд╕рднреА Error рдореЗ рдЕрдкрдиреЗ Mouse pointer рдХреЛ рд▓реЗ рдЬрд╛рдирд╛ рд╣реИ рдФрд░ Class Implrt рдХрд░ рд▓реЗрдирд╛ рд╣реИ, рдирд┐рдЪреЗ Image рдореЗ рд╕рднреА рдХреЛ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред 



рд╕рднреА Class рдХреЛ Import рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдЖрдкрдХреЗ рдореЗ рдФрд░ рдХреЛрдИ Error рдирд╣реА рдЖрдПрдЧрд╛ред




рдирд┐рдЪреЗ рдореЗрд░рд╛ Final (MainActivity.java) Code рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
package com.example.technicalsangrah;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Bitmap;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;

import androidx.appcompat.app.AppCompatActivity;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;

public class MainActivity extends AppCompatActivity {

String websiteURL = "https://youtube.com/technicalsangrah"; // sets web url
private WebView webview;
SwipeRefreshLayout mySwipeRefreshLayout;
private ProgressBar progressBar;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

if( ! CheckNetwork.isInternetAvailable(this)) //returns true if internet available
{
//if there is no internet do this
setContentView(R.layout.activity_main);
//Toast.makeText(this,"No Internet Connection, Chris",Toast.LENGTH_LONG).show();

new AlertDialog.Builder(this) //alert the person knowing they are about to close
.setTitle("No internet connection available")
.setMessage("Please Check you're Mobile data or Wifi network.")
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
})
//.setNegativeButton("No", null)
.show();

}
else
{
//Webview stuff
webview = findViewById(R.id.webView);
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setDomStorageEnabled(true);
webview.setOverScrollMode(WebView.OVER_SCROLL_NEVER);
webview.loadUrl(websiteURL);
webview.setWebViewClient(new WebViewClientDemo());
webview.setWebChromeClient(new WebChromeClientDemo());

}

//Swipe to refresh functionality
mySwipeRefreshLayout = (SwipeRefreshLayout)this.findViewById(R.id.swipeContainer);

mySwipeRefreshLayout.setOnRefreshListener(
new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
webview.reload();
}
}
);

//Progress bar
progressBar = (ProgressBar) findViewById(R.id.progressBar);
progressBar.setMax(100);

}


private class WebViewClientDemo extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
progressBar.setVisibility(View.GONE);
progressBar.setProgress(100);
mySwipeRefreshLayout.setRefreshing(false);
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
progressBar.setVisibility(View.VISIBLE);
progressBar.setProgress(0);
}

}
private class WebChromeClientDemo extends WebChromeClient {
public void onProgressChanged(WebView view, int progress) {
progressBar.setProgress(progress);
}
}

//set back button functionality
@Override
public void onBackPressed() { //if user presses the back button do this
if (webview.isFocused() && webview.canGoBack()) { //check if in webview and the user can go back
webview.goBack(); //go back in webview
} else { //do this if the webview cannot go back any further

new AlertDialog.Builder(this) //alert the person knowing they are about to close
.setTitle("EXIT")
.setMessage("Are you sure. You want to close this app?")
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
})
.setNegativeButton("No", null)
.show();
}
}


}

class CheckNetwork {

private static final String TAG = CheckNetwork.class.getSimpleName();

public static boolean isInternetAvailable(Context context)
{
NetworkInfo info = (NetworkInfo) ((ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();

if (info == null)
{
Log.d(TAG,"no internet connection");
return false;
}
else
{
if(info.isConnected())
{
Log.d(TAG," internet connection available...");
return true;
}
else
{
Log.d(TAG," internet connection");
return true;
}

}
}
}

..

Comments

Post a Comment

Popular posts from this blog

Convert Website Into An Android App | #10 Set Up Push Notifications

Convert Website Into An Android App | #6 Add Swipe down to Refresh functionality

Convert Website Into An Android App | #2 Make your first simple webview app