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