Convert Website Into An Android App | #6 Add Swipe down to Refresh functionality
рд╣рдо рдЕрдкрдиреЗ App рдореЗрдВ Swipe Down рдХрд░рдиреЗ рдкрд░ Refresh рд╣реЛ рдЬрд╛рдпреЗ рдЬреИрд╕реЗ рдХреА chrome browser рдпрд╛ рдлрд┐рд░ YouTube рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ! рд╡реИрд╕рд╛ Function рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдирд┐рдЪреЗ Process рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ-
1. рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ activity_main.xml рдореЗрдВ рдЬрд╛рдирд╛ рд╣реИ рдФрд░ рдирд┐рдЪреЗ рджрд┐рдП рд╣реБрдП Code рдХреЛ Image рдореЗрдВ рджрд┐рдЦрд╛рдП рд╣реБрдП рд╕реНрдерд╛рди рдкрд░ Paste рдХрд░рдирд╛ рд╣реИ!
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipeContainer"
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/webView"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
tools:ignore="MissingConstraints" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
рдЕрдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЖрдкрдХреЗ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХрд╛ Error рдЖ рдЬрд╛рдпреЗ-
- рдЖрдкрдХреЛ Android studio рдореЗрдВ Error рд╣рдореЗрд╕рд╛ рдКрдкрд░ рд╕реЗ Solve рдХрд░рдирд╛ рд╣реИ
- рдЖрдкрдХреЛ рдЕрдкрдиреЗ Mouse рдХреЛ Error рд╡рд╛рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рд▓реЗ рдЬрд╛рдирд╛ рд╣реИ рдлрд┐рд░ рдирд┐рдЪреЗ рдЖрдкрдХреЛ рдЙрд╕рдХреЛ Solve рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Add dependency рдХрд╛ option рдЖ рдЬрд╛рдпрдЧрд╛ (рдирд┐рдЪреЗ Image рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдЙрд╕рдореЗ рдЖрдкрдХреЛ click рдХрд░рдирд╛ рд╣реИ рдмрд╕ рдЖрдкрдХрд╛ Android Studio Internet рд╕реЗ connectet рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдлрд┐рд░ problem solve рд╣реЛ рдЬрд╛рдпрдЧрд╛!
2. рдЕрдм MainActivity.java рдореЗ рдЬрд╛рдирд╛ рд╣реИ рдФрд░ рдирд┐рдЪреЗ рджрд┐рдП рд╣реБрдП Code рдХреЛ image рдореЗрдВ рджрд┐рдЦрд╛рдП рд╣реБрдП рд╕реНрдерд╛рди рдкрд░ paste рдХрд░рдирд╛ рд╣реИ
SwipeRefreshLayout mySwipeRefreshLayout;
рдлрд┐рд░ рдЖрдкрдХреЛ class import рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ Error рдЖрдПрдЧрд╛ рддреЛ рдлрд┐рд░ рд╕реЗ рдЖрдкрдХреЛ mouse рдХреЛ рд╡рд╣рд╛рдВ рдкрд░ рд▓реЗ рдЬрд╛ рдХрд░ class import рдХрд░ рд▓реЗрдирд╛ рд╣реИ
рдЖрдкрдХрд╛ class рдпрд╣рд╛рдБ рдкрд░ Import рд╣реЛ рдЬрд╛рдпреЗрдЧрд╛
3. рдЕрдм рдЖрдкрдХреЛ рдлрд┐рд░ рд╕реЗ рдирд┐рдЪреЗ рджрд┐рдП рд╣реБрдП Code рдХреЛ image рдореЗрдВ рджрд┐рдЦрд╛рдП рд╣реБрдП рд╕реНрдерд╛рди рдкрд░ paste рдХрд░ рд▓реЗрдирд╛ рд╣реИ
//Swipe to refresh functionality
mySwipeRefreshLayout = (SwipeRefreshLayout)this.findViewById(R.id.swipeContainer);
mySwipeRefreshLayout.setOnRefreshListener(
new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
webview.reload();
}
}
);
4. рдЕрдм рдирд┐рдЪреЗ рджрд┐рдП рд╣реБрдП code рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдЬреЛ Code рдерд╛ рдЙрд╕рдХреЗ рд╕реНрдерд╛рди рдкрд░ Image рдореЗрдВ рджрд┐рдЦрд╛рдП рдЕрдиреБрд╕рд╛рд░ Replace рдХрд░ рджреАрдЬрд┐рдпреЗ
private class WebViewClientDemo extends WebViewClient {
@Override
//Keep webview in app when clicking links
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
mySwipeRefreshLayout.setRefreshing(false);
}
}
рдЕрдм рдЖрдк рдЕрдкрдиреЗ App рдХреЛ Test рдХрд░рдХреЗ рджреЗрдЦрд┐рдпреЗ Swipe down рдХрд░рдиреЗ рдкрд░ Refresh рд╣реЛрдиреЗ рд▓рдЧреЗрдЧрд╛ред
рдирд┐рдЪреЗ рдореЗрд░рд╛ Final Main_Activity.java File рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ-
package com.example.technicalsangrah;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.util.Log;
import android.webkit.WebView;
import android.webkit.WebViewClient;
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;
@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());
}
//Swipe to refresh functionality
mySwipeRefreshLayout = (SwipeRefreshLayout)this.findViewById(R.id.swipeContainer);
mySwipeRefreshLayout.setOnRefreshListener(
new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
webview.reload();
}
}
);
}
private class WebViewClientDemo extends WebViewClient {
@Override
//Keep webview in app when clicking links
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
mySwipeRefreshLayout.setRefreshing(false);
}
}
//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