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

আমরা আমাদের অ্যাপে সোয়াইপ ডাউনে রিফ্রেশ হই, যেমনটি ক্রোম ব্রাউজার বা ইউটিউবে ঘটে! আপনি এই ধরনের একটি ফাংশন প্রয়োগ করতে পারেন, এর জন্য নিম্নলিখিত প্রক্রিয়া দেওয়া হয়েছে- 1. প্রথমে আপনাকে activity_main.xml-এ যেতে হবে এবং ছবিতে দেখানো জায়গায় নিচের কোডটি পেস্ট করতে হবে। <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>


এখন আপনি এই ধরনের ত্রুটি পেতে পারেন-

- আপনাকে সবসময় উপরে থেকে অ্যান্ড্রয়েড স্টুডিওতে ত্রুটি সমাধান করতে হবে


- আপনাকে আপনার মাউসটি ত্রুটির জায়গায় নিয়ে যেতে হবে, তারপরে আপনি এটি সমাধান করার জন্য

নির্ভরতা যোগ করুন বিকল্পটি পাবেন (নীচের ছবিতে দেখানো হয়েছে), আপনাকে এটিতে ক্লিক করতে হবে,

শুধু আপনার অ্যান্ড্রয়েড স্টুডিওর সাথে সংযুক্ত থাকতে হবে। ইন্টারনেট, তাহলে সমস্যার সমাধান হবে!


2. এখন MainActivity.java এ যান এবং ছবিতে দেখানো জায়গায় নিচের কোডটি পেস্ট করুন


SwipeRefreshLayout mySwipeRefreshLayout;
তারপরে আপনি ক্লাসটি আমদানি করতে একটি ত্রুটি পাবেন, তারপরে আবার আপনাকে সেখানে মাউস সরিয়ে ক্লাসটি আমদানি করতে হবে।

আপনার ক্লাস এখানে আমদানি করা হবে

3. এখন আবার আপনাকে ছবিতে দেখানো জায়গায় নিচের কোডটি পেস্ট করতে হবে


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

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

4. এখন যে কোডটি আগে থেকে ছিল তার জায়গায় ছবিতে দেখানো কোডটি নীচের কোডটি প্রতিস্থাপন করুন।


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


এখন আপনার অ্যাপটি পরীক্ষা করুন এবং দেখুন যে এটি নিচে সোয়াইপ করার পরে রিফ্রেশ হতে শুরু করবে। নিচে আমার ফাইনাল Main_Activity.java ফাইল আছে-



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