How to Create & Design Multi WebView App with Fragment Layout | Complete App Tutorial

We are creating a Multi Webview Application with the help of Android Studio | Version Chipmunk | 2021.2.1 Patch 1

Now we are following the steps given below:

  • CREATE A NEW PROJECT to press the “New Project” button.

Now, under this project, we can change anything given here: Name, Package Name, Save location, Language, and Minimum SDK. After that, we can press the “FINISH” button and leave minutes until your project is automatically created and reach the “MainActivity” layout.

  • First, we have to change the name in the JAVA file “MainActivity” to “SplashActivity” and also we can change the name of the XML file means “activity_main to “activity_splash”. YOU CAN USE the short Keyboard method. Press “(Fn+Shift)” Hold this button then press “F6” button.
Write like this type of JAVA files name given above picture.

You can create a JAVA files name like the below image.

Create a new JAVA file demo.
All Fragment names like that

Now, we can create and insert icons in the drawable folder. First, Right-click on the “drawable” folder > go to “New” > select “Vector Asset” and put the name given below.

  • disclaimer_bg
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">

<corners android:radius="16dp" />
<stroke
android:width="2dp"
android:color="@color/purple_200" />
<solid android:color="@color/white" />

</shape>
  • ic_baseline_refresh
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M17.65,6.35C16.2,4.9 14.21,4 12,4c-4.42,0 -7.99,3.58 -7.99,8s3.57,8 7.99,8c3.73,0 6.84,-2.55 7.73,-6h-2.08c-0.82,2.33 -3.04,4 -5.65,4 -3.31,0 -6,-2.69 -6,-6s2.69,-6 6,-6c1.66,0 3.14,0.69 4.22,1.78L13,11h7V4l-2.35,2.35z" />
</vector>
  • ic_nav_menu_info
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@color/purple_200"
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM13,17h-2v-6h2v6zM13,9h-2L11,7h2v2z" />
</vector>

The YouTube video is given below.

  • ic_nav_menu_more_apps
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@color/green"
android:pathData="M16,20m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0" />
<path
android:fillColor="@color/green"
android:pathData="M6,20m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0" />
<path
android:fillColor="@color/blue"
android:pathData="M22,7V6.48C22,4.56 20.52,3 18.65,3c-1.66,0 -2.54,1.27 -3.18,2.03l-8.8,10.32C6.12,16 6.58,17 7.43,17L15,17c1.1,0 2,-0.9 2,-2V6.27C17.58,5.59 17.97,5 18.65,5C19.42,5 20,5.66 20,6.48V7H22z" />
<path
android:fillColor="@color/orange"
android:pathData="M14.3,4.1C13.03,3.4 11.56,3 10,3C8.03,3 6.21,3.64 4.72,4.72l4.89,4.89L14.3,4.1z" />
</vector>
  • ic_nav_menu_privacy_tip
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@color/purple_200"
android:pathData="M12,1L3,5v6c0,5.55 3.84,10.74 9,12c5.16,-1.26 9,-6.45 9,-12V5L12,1L12,1zM11,7h2v2h-2V7zM11,11h2v6h-2V11z" />
</vector>
  • ic_nav_menu_security
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@color/purple_200"
android:pathData="M12,1L3,5v6c0,5.55 3.84,10.74 9,12 5.16,-1.26 9,-6.45 9,-12L21,5l-9,-4zM12,11.99h7c-0.53,4.12 -3.28,7.79 -7,8.94L12,12L5,12L5,6.3l7,-3.11v8.8z" />
</vector>
  • ic_nav_menu_star_half
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@color/purple_200"
android:pathData="M22,9.24l-7.19,-0.62L12,2L9.19,8.63L2,9.24l5.46,4.73L5.82,21L12,17.27L18.18,21l-1.63,-7.03L22,9.24zM12,15.4V6.1l1.71,4.04l4.38,0.38l-3.32,2.88l1,4.28L12,15.4z" />
</vector>
  • ic_nav_share
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@color/purple_200"
android:pathData="M18,16.08c-0.76,0 -1.44,0.3 -1.96,0.77L8.91,12.7c0.05,-0.23 0.09,-0.46 0.09,-0.7s-0.04,-0.47 -0.09,-0.7l7.05,-4.11c0.54,0.5 1.25,0.81 2.04,0.81 1.66,0 3,-1.34 3,-3s-1.34,-3 -3,-3 -3,1.34 -3,3c0,0.24 0.04,0.47 0.09,0.7L8.04,9.81C7.5,9.31 6.79,9 6,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3c0.79,0 1.5,-0.31 2.04,-0.81l7.12,4.16c-0.05,0.21 -0.08,0.43 -0.08,0.65 0,1.61 1.31,2.92 2.92,2.92 1.61,0 2.92,-1.31 2.92,-2.92s-1.31,-2.92 -2.92,-2.92z" />
</vector>
  • model_bg_0
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/purple_200" />
<corners android:radius="8dp" />

</shape>
  • model_bg_1
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/white" />
<corners
android:bottomLeftRadius="24dp"
android:bottomRightRadius="24dp"
android:topLeftRadius="0dp"
android:topRightRadius="0dp" />

</shape>
  • model_bg_2
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/white" />
<corners
android:bottomLeftRadius="0dp"
android:bottomRightRadius="0dp"
android:topLeftRadius="24dp"
android:topRightRadius="24dp" />

</shape>
  • model_bg_3
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/white" />
<corners
android:bottomLeftRadius="0dp"
android:bottomRightRadius="24dp"
android:topLeftRadius="0dp"
android:topRightRadius="24dp" />

</shape>
  • model_bg_4
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/white" />
<corners
android:bottomLeftRadius="24dp"
android:bottomRightRadius="0dp"
android:topLeftRadius="24dp"
android:topRightRadius="0dp" />

</shape>
  • navigation_menu_background
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <corners
        android:bottomLeftRadius="0dp"
        android:bottomRightRadius="500dp"
        android:topLeftRadius="0dp"
        android:topRightRadius="0dp" />
    <solid android:color="@color/white" />

</shape>

Now, we have to change the application color with the help of the color.xml file.

<resources>
    <color name="purple_200">#FF5722</color>
    <color name="purple_500">#FF5722</color>
    <color name="purple_700">#FF5722</color>
    <color name="teal_200">#FF5722</color>
    <color name="teal_700">#FF5722</color>
    <color name="black">#FF000000</color>
    <color name="white">#FFFFFFFF</color>
    <color name="colorGray">#B6B6B6</color>
    <color name="yellow">#FFC107</color>
    <color name="green">#019E07</color>
    <color name="orange">#FF511A</color>
    <color name="blue">#033BE3</color>
</resources>

Now, we have to change the theme style > and replace “ DarkActionBar” with “NoActionBar“.

Now, we have to create a menu folder. Here is the step > Right Click on the “res” folder > goto to “New” > and select “Android Resource Directory“. sample photos are given below.

Here, in the New Resource Directory, we have to change the directory name = “menu“, resource type = “menu“, then you have to press the “OK” button details are given below.

  • Now, we can create a menu file name action_menu.xml and navigation_menu.xml layout.
  • First, We have to create an action_menu.xml file layout.
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

<item
android:id="@+id/refresh"
android:icon="@drawable/ic_baseline_refresh"
android:title="@string/refresh"
app:showAsAction="always" />

</menu>
  • Second, We have to create a navigation_menu.xml layout.
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">

<item
android:id="@+id/nav_more_apps"
android:icon="@drawable/ic_nav_menu_more_apps"
android:title="@string/more_apps" />

<item
android:id="@+id/nav_rate_this_app"
android:icon="@drawable/ic_nav_menu_star_half"
android:title="@string/rate_this_app" />

</group>
<item android:title="@string/communication">
<menu>
<item
android:id="@+id/nav_share"
android:icon="@drawable/ic_nav_share"
android:title="@string/share" />
<item
android:id="@+id/nav_disclaimer"
android:icon="@drawable/ic_nav_menu_info"
android:title="@string/disclaimer" />
<item
android:id="@+id/nav_privacy_policy"
android:icon="@drawable/ic_nav_menu_security"
android:title="@string/privacy_policy" />
<item
android:id="@+id/nav_terms_conditions"
android:icon="@drawable/ic_nav_menu_privacy_tip"
android:title="@string/terms_conditions" />
</menu>
</item>

</menu>
  • Now, we can create animation folder items named “recycler_view_animation.xml” and “splash_screen_animation.xml” layout.

Now, we have to create anim folder and under this folder, we can create a recycler_view_animation.xml layout and splash_screen_animation.xml layout.

Here, the “anim” folder creates like the “menu” folder given above. All processes to create an “Android Resource Directory” are the same but we have to change a few things like under “Resource type” which will be replaced by “anim”.

Now, here is the recycler_view_animation.xml layout code below:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:duration="500"
android:fromAlpha="0"
android:toAlpha="1" />

<translate
android:duration="500"
android:fromYDelta="-200%"
android:toYDelta="0%" />

</set>

Now, here is the splash_screen_animation.xml layout code below:

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="1800">

</alpha>

Before creating the Asset folder first we have to add the Lottie Files dependency under build.gradle is given below. Also, you can find the latest dependency from the official website name “LOTTIEFILES

  • Now, we can import all dependencies in the build.gradle.xml layout.
// Dependency Lottie Effect
implementation 'com.airbnb.android:lottie:4.2.2'
// Rate now Library
implementation 'com.github.hotchemi:android-rate:1.0.1'
// Update Play Core API Dependency
implementation 'com.google.android.play:core:1.10.3'
// Support Dependency
implementation 'androidx.core:core:1.8.0'
// Facebook Audience Network Dependency
// implementation 'com.facebook.android:audience-network-sdk:6.11.0'

Now, we can create a “assets” folder to show “webview progressBar” in the webview layout. So you can follow these steps > Right-click on the “res” folder >go to “New” > select “Folder” > select “Assets Folder” then press the “FINISH” button.

If you want to download our asset file then you have to click the “DOWNLOAD NOW” button given below.

Now, we can import some important code in the string,xml layout is given below.

<resources>
    <string name="app_name">WebViewApp</string>
    <string name="custom_app_name">Multi WebView Template</string>
    <string name="developed_by_click2code">Developed by: <b>CLICK2CODE</b></string>
    <string name="website_title">Website Title</string>

    <!-- Navigation Menu Items -->
    <string name="more_apps">Visit More Apps</string>
    <string name="rate_this_app">Rate this Application</string>
    <string name="communication">Communication</string>
    <string name="share">Share</string>
    <string name="disclaimer">Disclaimer</string>
    <string name="privacy_policy">Privacy Policy</string>
    <string name="terms_conditions"><![CDATA[Terms & Conditions]]></string>

    <!-- Drawer Layout Items -->
    <string name="drawer_open">Drawer Open</string>
    <string name="drawer_close">Drawer Close</string>

    <!-- Navigation Menu Links -->
    <string name="text_plain">text/plain</string>
    <string name="AppDescription"><b>Multi WebView Template</b> : के तहत जो भी लिस्ट निकलता है उसका सभी विवरण यंहा तत्काल अपलोड कर दिया जाता है , <b>Download</b> करें इस Application को और अपने सुविधा अनुसार उपयोग करें ! </string>
    <string name="AppLink"><![CDATA[https://play.google.com/store/apps/details?id=com.nilkanthpawan.nilkanthpawan&hl=en]]></string>
    <string name="sub_here">Your Subject Here</string>
    <string name="shareUsing">Share using</string>
    <string name="packageDetails">market://details?id=</string>
    <string name="packageDetail">http://play.google.com/store/apps/details?id=</string>
    <string name="privacyLink">https://nilkanthpawanapps.blogspot.com/2022/02/privacy-policy-nilkanth-pawan-built.html</string>
    <string name="termsLink">https://nilkanthpawanapps.blogspot.com/2022/02/terms-conditions-by-downloading-or.html</string>
    <string name="developerApps">https://play.google.com/store/apps/developer?id=pub:Nilkanth+Pawan</string>
    <string name="DeveloperApp"><![CDATA[market://search?q=pub:Nilkanth+Pawan&c=apps]]></string>
    <string name="refresh">Refresh</string>

    <!-- Disclaimer Layout Links Below -->
    <string name="email_id">Email Us:</string>
    <string name="emailId">nilkanthpawan@gmail.com</string>
    <string name="about_disclaimer">Content presented in this app is collected from the Internet. We do not have any right of any kind on this materials and we invalidate all types of realities about this material.\nIf you have any personal ownership rights on any of the content shown in the application than you can inform us by sending an E-mail to given below with proof of ownership/authority.\nWe will check the validity of your claim doing so will remove content immediately.</string>
    <string name="about_disclaimer_short">We just provide Numbers for your help purpose. We are not responsible.\nIf any issue please contact to owner of website.</string>
    <string name="version_name">V-1.1.0</string>

    <!-- All WebView Links Given Below -->
    <string name="one_link">https://eshram.gov.in/</string>
    <string name="two_link">https://pmaymis.gov.in/Open/Find_Beneficiary_Details.aspx</string>
    <string name="three_link">https://rhreporting.nic.in/netiay/SECCReport/report_categorywiseseccverification.aspx/</string>
    <string name="four_link">https://rhreporting.nic.in/netiay/benificiary.aspx</string>
    <string name="five_link">https://pmaymis.gov.in/</string>
    <string name="six_link">https://pmaymis.gov.in/Open/Find_Beneficiary_Details.aspx</string>
    <string name="seven_link">https://pmaymis.gov.in/Track_Application_Status.aspx</string>
    <string name="eight_link">http://sbm.gov.in/sbmReport/Report/Physical/SBM_TargetVsAchievementWithout1314.aspx</string>
    <string name="nine_link">https://www.india.gov.in/hi/spotlight/%E0%A4%AA%E0%A5%8D%E0%A4%B0%E0%A4%A7%E0%A4%BE%E0%A4%A8%E0%A4%AE%E0%A4%82%E0%A4%A4%E0%A5%8D%E0%A4%B0%E0%A5%80-%E0%A4%89%E0%A4%9C%E0%A5%8D%E0%A4%9C%E0%A4%B5%E0%A4%B2%E0%A4%BE-%E0%A4%AF%E0%A5%8B%E0%A4%9C%E0%A4%A8%E0%A4%BE#tab=tab-1</string>
    <string name="ten_link">https://mnregaweb2.nic.in/netnrega/dynamic_account_details_ippe.aspx</string>
    <string name="eleven_link">https://nrega.nic.in/netnrega/HomeGP.aspx</string>
    <string name="twelve_link">https://nsap.nic.in/</string>
    <string name="thirteen_link">https://egramswaraj.gov.in/actionPlanReportForGP.do</string>
    <string name="fourteen_link">https://pmkisan.gov.in/</string>
    <string name="fifteen_link">http://mnregaweb4.nic.in/netnrega/workers/wrkinfo.aspx</string>
    <string name="sixteen_link">https://pmkisan.gov.in/BeneficiaryStatus.aspx</string>
    <string name="seventeen_link">https://pmkisan.gov.in/Rpt_BeneficiaryStatus_pub.aspx</string>
    <string name="eighteen_link">https://pmkisan.gov.in/FarmerStatus.aspx</string>
    <string name="nineteen_link">https://pmkisan.gov.in/aadharekyc.aspx</string>
    <string name="twenty_link">https://pmkisan.gov.in/SearchSelfRegisterfarmerDetailsNew.aspx</string>
</resources>
  • Now, we can create an XML layout with the help of the Right-click mouse click and New > Layout Resource File.
  1. activity_splash.xml
  2. activity_home.xml
  3. custom_webview.xml
  4. disclaimer.xml
  5. home_fragment.xml
  6. model_item.xml
  7. navigation_header.xml

Now, we can implement all code into the XML files which are given above.

  • We can implement all code in this activity_splash.xml layout.
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:fitsSystemWindows="true"
tools:context=".SplashActivity">

<ImageView
android:id="@+id/logo"
android:layout_width="180dp"
android:layout_height="180dp"
android:contentDescription="@string/app_name"
android:elevation="2dp"
android:src="@drawable/logo"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.38" />

<ProgressBar
android:id="@+id/progressBar"
android:layout_width="32dp"
android:layout_height="32dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/logo"
app:layout_constraintVertical_bias="0.5" />

<TextView
android:id="@+id/developedBy"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="2dp"
android:text="@string/developed_by_click2code"
android:textColor="@color/black"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/progressBar"
app:layout_constraintVertical_bias="1" />

</androidx.constraintlayout.widget.ConstraintLayout>
  • Also, we can implement all code in this activity_home.xml layout.
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:fitsSystemWindows="true"
tools:context=".HomeActivity">

<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">

<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

<androidx.appcompat.widget.Toolbar
android:id="@+id/toolBar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
android:id="@+id/textView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/custom_app_name"
android:textAppearance="@style/TextAppearance.AppCompat.Large"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.appcompat.widget.Toolbar>
</com.google.android.material.appbar.AppBarLayout>

<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="?attr/actionBarSize">

<FrameLayout
android:id="@+id/fragmentContainer"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />


</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

<com.google.android.material.navigation.NavigationView
android:id="@+id/navigationMenu"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@drawable/navigation_menu_background"
android:scrollbars="vertical"
app:menu="@menu/navigation_menu" />

</androidx.drawerlayout.widget.DrawerLayout>
  • Now, we can customize the custom_webview.xml layout.
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:fitsSystemWindows="true">

<WebView
android:id="@+id/web_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@+id/progress_bar"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<com.airbnb.lottie.LottieAnimationView
android:id="@+id/progress_bar"
android:layout_width="match_parent"
android:layout_height="148dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:lottie_autoPlay="true"
app:lottie_fileName="progress_bar_for_web_view.json"
app:lottie_loop="true" />

</androidx.constraintlayout.widget.ConstraintLayout>
  • Now, we can implement all code in the disclaimer.xml layout.
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorGray"
android:fitsSystemWindows="true">

<RelativeLayout
android:id="@+id/relativeLayout3"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_gravity="center"
android:layout_marginStart="40dp"
android:layout_marginTop="80dp"
android:layout_marginEnd="40dp"
android:layout_marginBottom="80dp"
android:background="@drawable/disclaimer_bg"
android:elevation="4dp"
android:gravity="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:gravity="center"
android:orientation="vertical">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="60dp"
android:text="@string/disclaimer"
android:textAllCaps="true"
android:textAppearance="@style/TextAppearance.AppCompat.Large"
android:textColor="@color/purple_200"
android:textStyle="bold" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="12dp"
android:layout_marginTop="20dp"
android:layout_marginRight="12dp"
android:text="@string/about_disclaimer"
android:textAlignment="center"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textColor="@color/black" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="12dp"
android:layout_marginTop="10dp"
android:layout_marginRight="12dp"
android:text="@string/about_disclaimer_short"
android:textAlignment="center"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textColor="@color/purple_200"
android:textStyle="bold|italic" />

<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="16dp"
android:background="@color/purple_200" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:text="@string/email_id"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:textColor="@color/purple_200"
android:textStyle="bold" />

<TextView
android:id="@+id/sendMailID"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="12dp"
android:layout_marginTop="4dp"
android:layout_marginRight="12dp"
android:layout_marginBottom="12dp"
android:text="@string/emailId"
android:textAlignment="center"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textColor="@color/blue" />


</LinearLayout>

<ImageView
android:id="@+id/dialog_image"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:contentDescription="@string/app_name"
android:padding="2dp"
android:src="@drawable/logo" />

</RelativeLayout>

</androidx.constraintlayout.widget.ConstraintLayout>
  • Next, we can implement code in the home_fragment.xml layout.
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:fitsSystemWindows="true"
tools:context=".HomeFragment">

<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="parent" />


</androidx.constraintlayout.widget.ConstraintLayout>
  • implement code in the model.xml layout.
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/recycler_view_item"
android:layout_width="match_parent"
android:layout_height="110dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:background="@drawable/model_bg_0"
android:clickable="true"
android:fitsSystemWindows="true"
android:focusable="true"
android:foreground="?attr/selectableItemBackgroundBorderless">

<TextView
android:id="@+id/modelText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="center"
android:paddingStart="8dp"
android:paddingTop="8dp"
android:paddingEnd="8dp"
android:paddingBottom="8dp"
android:text="@string/website_title"
android:textAppearance="@style/TextAppearance.AppCompat.Large"
android:textColor="@color/black"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="0dp"
android:layout_height="8dp"
android:layout_marginStart="44dp"
android:layout_marginEnd="44dp"
android:background="@drawable/model_bg_1"
android:gravity="center"
app:layout_constraintBottom_toTopOf="@+id/modelText"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0">

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="3dp"
android:layout_marginStart="6dp"
android:layout_marginEnd="6dp"
android:background="@drawable/model_bg_1"
android:elevation="2dp" />

</RelativeLayout>

<RelativeLayout
android:id="@+id/relativeLayout2"
android:layout_width="0dp"
android:layout_height="8dp"
android:layout_marginStart="44dp"
android:layout_marginEnd="44dp"
android:background="@drawable/model_bg_2"
android:gravity="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/modelText"
app:layout_constraintVertical_bias="1">

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="3dp"
android:layout_marginStart="6dp"
android:layout_marginEnd="6dp"
android:background="@drawable/model_bg_2"
android:elevation="2dp" />

</RelativeLayout>

<RelativeLayout
android:id="@+id/relativeLayout"
android:layout_width="8dp"
android:layout_height="70dp"
android:background="@drawable/model_bg_3"
android:gravity="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@+id/modelText"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toStartOf="@+id/modelText"
app:layout_constraintTop_toTopOf="parent">

<RelativeLayout
android:layout_width="3dp"
android:layout_height="40dp"
android:background="@drawable/model_bg_3"
android:elevation="2dp" />

</RelativeLayout>

<RelativeLayout
android:id="@+id/relativeLayout4"
android:layout_width="8dp"
android:layout_height="70dp"
android:background="@drawable/model_bg_4"
android:gravity="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@+id/modelText"
app:layout_constraintHorizontal_bias="1"
app:layout_constraintStart_toStartOf="@+id/modelText"
app:layout_constraintTop_toTopOf="parent">

<RelativeLayout
android:layout_width="3dp"
android:layout_height="40dp"
android:background="@drawable/model_bg_4"
android:elevation="2dp" />


</RelativeLayout>

</androidx.constraintlayout.widget.ConstraintLayout>
  • At last, we have to implement code in the navigation_header.xml layout.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="176dp"
android:background="@color/purple_200"
android:fitsSystemWindows="true"
android:gravity="center"
android:orientation="vertical">

<androidx.cardview.widget.CardView
android:layout_width="80dp"
android:layout_height="80dp"
app:cardBackgroundColor="@color/white"
app:cardCornerRadius="100dp">

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">

<ImageView
android:id="@+id/image_logo"
android:layout_width="60dp"
android:layout_height="60dp"
android:contentDescription="@string/app_name"
android:src="@drawable/logo" />

</RelativeLayout>

</androidx.cardview.widget.CardView>


<TextView
android:id="@+id/header_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:gravity="center_horizontal"
android:text="@string/custom_app_name"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:textColor="@color/white"
android:textStyle="bold" />
</LinearLayout>

Now, we can change “minifyEnabled true”.

Now, we can implement some code in the “ManifestFile.XML layout given below.

  • Now, we can implement code in the JAVA files given below;
  1. SplashActivity
  2. HomeActivity
  3. HomeFragment
  4. Model
  5. HomeAdapter
  6. Disclaimer
  7. PrivacyPolicy
  8. TermsConditions
  • Now, insert all code in the SplashActivty.java file.
public class SplashActivity extends AppCompatActivity {

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

ImageView imageView = findViewById(R.id.logo);
ProgressBar progressBar = findViewById(R.id.progressBar);
TextView textView = findViewById(R.id.developedBy);

int splashTimeOut = 2500;
new Handler().postDelayed(() -> {
Intent intent = new Intent(SplashActivity.this, HomeActivity.class);
startActivity(intent);
finish();

}, splashTimeOut);

Animation animation = AnimationUtils.loadAnimation(this, R.anim.splash_screen_animation);
imageView.startAnimation(animation);
progressBar.startAnimation(animation);
textView.startAnimation(animation);
}
}
  • Import all code in the HomeActivity.java file.
public class HomeActivity extends AppCompatActivity {

ActionBarDrawerToggle actionBarDrawerToggle;
View view;
private DrawerLayout drawerLayout;
// Variable of App Update Manager
AppUpdateManager appUpdateManager;
int RequestUpdate = 1;

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

getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer, new HomeFragment()).commit();

// Create a ToolBar
Toolbar toolbar = findViewById(R.id.toolBar);
setSupportActionBar(toolbar);
Objects.requireNonNull(getSupportActionBar()).setTitle(getResources().getString(R.string.custom_app_name));
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

// Create a Drawer Layout
drawerLayout = findViewById(R.id.drawerLayout);
actionBarDrawerToggle = new ActionBarDrawerToggle(HomeActivity.this,
drawerLayout, R.string.drawer_open, R.string.drawer_close);
drawerLayout.addDrawerListener(actionBarDrawerToggle);
actionBarDrawerToggle.syncState();

// Create a Navigation Menu
NavigationView navigationView = findViewById(R.id.navigationMenu);
view = navigationView.inflateHeaderView(R.layout.navigation_header);
navigationView.setItemIconTintList(null);

navigationView.setNavigationItemSelectedListener(item -> {
UserMenuSelector(item);
return false;
});
// Create a Rate and Feedback System
AppRate.with(this)
.setInstallDays(0)
.setLaunchTimes(2)
.setRemindInterval(1)
.monitor();

AppRate.showRateDialogIfMeetsConditions(this);

// Use App Update code Below (01)
appUpdateManager = AppUpdateManagerFactory.create(this);
appUpdateManager.getAppUpdateInfo().addOnSuccessListener(result -> {
if ((result.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE)
&& result.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)) {
try {
appUpdateManager.startUpdateFlowForResult(result, AppUpdateType.IMMEDIATE, HomeActivity.this, RequestUpdate);
} catch (IntentSender.SendIntentException e) {
e.printStackTrace();
}
}
});
}

// Create on Option Item Selected Listener
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (actionBarDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
return super.onOptionsItemSelected(item);
}

// Create a UserMenuSelector
@SuppressLint("NonConstantResourceId")
private void UserMenuSelector(MenuItem item) {
switch (item.getItemId()) {

case R.id.nav_more_apps:
try {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.DeveloperApp)));
startActivity(intent);
} catch (Exception ex) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.developerApps)));
startActivity(intent);
}
break;

case R.id.nav_share:
Intent myIntent = new Intent(Intent.ACTION_SEND);
myIntent.setType(getString(R.string.text_plain));
String shareBody = getString(R.string.AppDescription) + getString(R.string.AppLink);
String shareSub = getString(R.string.sub_here);
myIntent.putExtra(Intent.EXTRA_SUBJECT, shareSub);
myIntent.putExtra(Intent.EXTRA_TEXT, shareBody);
startActivity(Intent.createChooser(myIntent, getString(R.string.shareUsing)));
break;

case R.id.nav_rate_this_app:
try {
startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse(getString(R.string.packageDetails) + getPackageName())));

} catch (ActivityNotFoundException e) {
startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse(getString(R.string.packageDetail) + getPackageName())));
}
break;

case R.id.nav_disclaimer:
getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer, new FragmentDisclaimer(), null).addToBackStack(null).commit();
break;

case R.id.nav_privacy_policy:
getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer, new PrivacyPolicy(), null).addToBackStack(null).commit();
break;

case R.id.nav_terms_conditions:
getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer, new TermsConditions(), null).addToBackStack(null).commit();
break;
}

drawerLayout.closeDrawer(GravityCompat.START);
}
}
  • Now, implement code in the Homefragment.java file.
public class HomeFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.home_fragment, container, false);

RecyclerView recyclerView = view.findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
ArrayList<Model> homeHolder = new ArrayList<>();

Model one = new Model("ई-श्रम कार्ड के बारे में जानने के लिए \nक्लिक करें!");
homeHolder.add(one);

Model two = new Model("आपके नाम पर आवास योजना मिला है या \nनहीं क्लिक करके देखें!");
homeHolder.add(two);

Model three = new Model("नरेगा जॉब कार्ड नंबर से मिस्ट्रोल में \nहजारी देखें!");
homeHolder.add(three);

Model four = new Model("भारत के सभी राज्यों के लिए ग्रामीण आवास \nयोजना लिस्ट देखें!");
homeHolder.add(four);

Model five = new Model("रजिस्ट्री नंबर से आपको आवास मिला है \nदेखने के लिए क्लिक करें!");
homeHolder.add(five);

Model six = new Model("शहरी आवास योजना के बारे में जानना है \nयंहा क्लिक करें!");
homeHolder.add(six);

Model seven = new Model("आधार कार्ड से देखें शहरी क्षेत्र के \nलोगों के लिए!");
homeHolder.add(seven);

Model eight = new Model("आवास योजना आवेदन की स्थिति देखें \nशहरी क्षेत्र के लोगों का!");
homeHolder.add(eight);

Model nine = new Model("सभी राज्यों के लिए शौचालय योजना लिस्ट \nयहाँ क्लिक करें!");
homeHolder.add(nine);

Model ten = new Model("उज्ज्वला योजना लिस्ट के बारे में जानना है \nयहाँ क्लिक करें!");
homeHolder.add(ten);

Model eleven = new Model("बी0 पी0 ऐल0 सभी राज्यों का लिस्ट देखें \nयहाँ क्लिक करके!");
homeHolder.add(eleven);

Model twelve = new Model("अपने गांव में मनरेगा जॉब के बारे में \nयहां से देख सकतें हैं!");
homeHolder.add(twelve);

Model thirteen = new Model("किसान का पेंशन सूची देखने के लिए \nयहाँ पर क्लिक करें!");
homeHolder.add(thirteen);

Model fourteen = new Model("अपने गाँव पंचायत का रिपोर्ट देखें \nयहाँ पर क्लिक करें!");
homeHolder.add(fourteen);

Model fifteen = new Model("किसान सम्मान निधि योजना किसको मिला \nयहां से देखें");
homeHolder.add(fifteen);

Model sixteen = new Model("किसान सम्मान निधि योजना से लाभार्थी \nका स्टेटस चेक करें!");
homeHolder.add(sixteen);

Model seventeen = new Model("देखें किसान सम्मान निधि योजना \nलाभार्थी सूची यहाँ से!");
homeHolder.add(seventeen);

Model eighteen = new Model("किसान सम्मान निधि योजना स्वपंजीकृत \nकिसानों की स्थिति देखें!");
homeHolder.add(eighteen);

Model nineteen = new Model("किसान सम्मान निधि योजना आधार ओटीपी \nदेखें KYC किसान!");
homeHolder.add(nineteen);

Model twenty = new Model("स्व-पंजीकृत किसान विवरण संपादित करें देखें!");
homeHolder.add(twenty);

recyclerView.setAdapter(new HomeAdapter(homeHolder));
return view;
}
}
  • Now, we can generate the “CONSTRUCTOR” and “SETTER AND GETTER” codes in the Model.java file.
public class Model {
String title;

// Constructor
public Model(String title) {
this.title = title;
}

// Getter and Setter
public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}
}
  • Also, we can insert code in the HomeAdapter.java file.
public class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.homeViewHolder> {
ArrayList<Model> homeHolder;

// Constructor
public HomeAdapter(ArrayList<Model> homeHolder) {
this.homeHolder = homeHolder;
}

@NonNull
@Override
public homeViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.model_item, parent, false);
return new homeViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull homeViewHolder holder, int position) {
holder.header.setText(homeHolder.get(position).getTitle());
holder.constraintLayout.startAnimation(AnimationUtils.loadAnimation(holder.itemView.getContext(), R.anim.recycler_view_animation));

holder.itemView.setOnClickListener(v -> {
switch (homeHolder.get(position).getTitle()) {

case "ई-श्रम कार्ड के बारे में जानने के लिए \nक्लिक करें!": {
AppCompatActivity activity = (AppCompatActivity) v.getContext();
Fragment01 fragment = new Fragment01();
activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer,
fragment).addToBackStack(null).commit();
break;
}
case "आपके नाम पर आवास योजना मिला है या \nनहीं क्लिक करके देखें!": {
AppCompatActivity activity = (AppCompatActivity) v.getContext();
Fragment02 fragment = new Fragment02();
activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer,
fragment).addToBackStack(null).commit();
break;
}

case "नरेगा जॉब कार्ड नंबर से मिस्ट्रोल में \nहजारी देखें!": {
AppCompatActivity activity = (AppCompatActivity) v.getContext();
Fragment03 fragment = new Fragment03();
activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer,
fragment).addToBackStack(null).commit();
break;
}

case "भारत के सभी राज्यों के लिए ग्रामीण आवास \nयोजना लिस्ट देखें!": {
AppCompatActivity activity = (AppCompatActivity) v.getContext();
Fragment04 fragment = new Fragment04();
activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer,
fragment).addToBackStack(null).commit();
break;
}

case "रजिस्ट्री नंबर से आपको आवास मिला है \nदेखने के लिए क्लिक करें!": {
AppCompatActivity activity = (AppCompatActivity) v.getContext();
Fragment05 fragment = new Fragment05();
activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer,
fragment).addToBackStack(null).commit();
break;
}

case "शहरी आवास योजना के बारे में जानना है \nयंहा क्लिक करें!": {
AppCompatActivity activity = (AppCompatActivity) v.getContext();
Fragment06 fragment = new Fragment06();
activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer,
fragment).addToBackStack(null).commit();
break;
}

case "आधार कार्ड से देखें शहरी क्षेत्र के \nलोगों के लिए!": {
AppCompatActivity activity = (AppCompatActivity) v.getContext();
Fragment07 fragment = new Fragment07();
activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer,
fragment).addToBackStack(null).commit();
break;
}

case "आवास योजना आवेदन की स्थिति देखें \nशहरी क्षेत्र के लोगों का!": {
AppCompatActivity activity = (AppCompatActivity) v.getContext();
Fragment08 fragment = new Fragment08();
activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer,
fragment).addToBackStack(null).commit();
break;
}

case "सभी राज्यों के लिए शौचालय योजना लिस्ट \nयहाँ क्लिक करें!": {
AppCompatActivity activity = (AppCompatActivity) v.getContext();
Fragment09 fragment = new Fragment09();
activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer,
fragment).addToBackStack(null).commit();
break;
}

case "उज्ज्वला योजना लिस्ट के बारे में जानना है \nयहाँ क्लिक करें!": {
AppCompatActivity activity = (AppCompatActivity) v.getContext();
Fragment10 fragment = new Fragment10();
activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer,
fragment).addToBackStack(null).commit();
break;
}

case "बी0 पी0 ऐल0 सभी राज्यों का लिस्ट देखें \nयहाँ क्लिक करके!": {
AppCompatActivity activity = (AppCompatActivity) v.getContext();
Fragment11 fragment = new Fragment11();
activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer,
fragment).addToBackStack(null).commit();
break;
}

case "अपने गांव में मनरेगा जॉब के बारे में \nयहां से देख सकतें हैं!": {
AppCompatActivity activity = (AppCompatActivity) v.getContext();
Fragment12 fragment = new Fragment12();
activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer,
fragment).addToBackStack(null).commit();
break;
}

case "किसान का पेंशन सूची देखने के लिए \nयहाँ पर क्लिक करें!": {
AppCompatActivity activity = (AppCompatActivity) v.getContext();
Fragment13 fragment = new Fragment13();
activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer,
fragment).addToBackStack(null).commit();
break;
}

case "अपने गाँव पंचायत का रिपोर्ट देखें \nयहाँ पर क्लिक करें!": {
AppCompatActivity activity = (AppCompatActivity) v.getContext();
Fragment14 fragment = new Fragment14();
activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer,
fragment).addToBackStack(null).commit();
break;
}

case "किसान सम्मान निधि योजना किसको मिला \nयहां से देखें": {
AppCompatActivity activity = (AppCompatActivity) v.getContext();
Fragment15 fragment = new Fragment15();
activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer,
fragment).addToBackStack(null).commit();
break;
}

case "किसान सम्मान निधि योजना से लाभार्थी \nका स्टेटस चेक करें!": {
AppCompatActivity activity = (AppCompatActivity) v.getContext();
Fragment16 fragment = new Fragment16();
activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer,
fragment).addToBackStack(null).commit();
break;
}

case "देखें किसान सम्मान निधि योजना \nलाभार्थी सूची यहाँ से!": {
AppCompatActivity activity = (AppCompatActivity) v.getContext();
Fragment17 fragment = new Fragment17();
activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer,
fragment).addToBackStack(null).commit();
break;
}

case "किसान सम्मान निधि योजना स्वपंजीकृत \nकिसानों की स्थिति देखें!": {
AppCompatActivity activity = (AppCompatActivity) v.getContext();
Fragment18 fragment = new Fragment18();
activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer,
fragment).addToBackStack(null).commit();
break;
}

case "किसान सम्मान निधि योजना आधार ओटीपी \nदेखें KYC किसान!": {
AppCompatActivity activity = (AppCompatActivity) v.getContext();
Fragment19 fragment = new Fragment19();
activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer,
fragment).addToBackStack(null).commit();
break;
}

case "स्व-पंजीकृत किसान विवरण संपादित करें देखें!": {
AppCompatActivity activity = (AppCompatActivity) v.getContext();
Fragment20 fragment = new Fragment20();
activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer,
fragment).addToBackStack(null).commit();
break;
}

}
});

}

@Override
public int getItemCount() {
return homeHolder.size();
}

public static class homeViewHolder extends RecyclerView.ViewHolder {
TextView header;
ConstraintLayout constraintLayout;

public homeViewHolder(@NonNull View itemView) {
super(itemView);
header = itemView.findViewById(R.id.modelText);
constraintLayout = itemView.findViewById(R.id.recycler_view_item);
}
}
}
  • Implement code in Disclaimer.java files.
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.disclaimer, container, false);

TextView sendMail = view.findViewById(R.id.sendMailID);
sendMail.setOnClickListener(view1 -> {
String email = FragmentDisclaimer.this.getResources().getString(R.string.emailId);
Intent intent = new Intent(Intent.ACTION_SEND);
String[] recipients = {email};
intent.putExtra(Intent.EXTRA_EMAIL, recipients);
intent.setType("text/html");
intent.setPackage("com.google.android.gm");
startActivity(Intent.createChooser(intent, "Send mail"));
});
return view;
}
  • Also, import code in the “PrivacyPolicy”.java file.
public class PrivacyPolicy extends Fragment {
View view;
WebView webView;

@SuppressLint("SetJavaScriptEnabled")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.custom_webview, container, false);

// Lottie Animation ID Implemented Below
LottieAnimationView lottieAnimationView = view.findViewById(R.id.progress_bar);
// WebView Code Implemented Below
webView = view.findViewById(R.id.web_view);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);

webView.getSettings().setSupportZoom(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setDisplayZoomControls(false);

webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webView.setScrollbarFadingEnabled(false);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
lottieAnimationView.setVisibility(View.VISIBLE);
}

@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
lottieAnimationView.setVisibility(View.GONE);
}
});
webView.loadUrl(getString(R.string.privacyLink));
webView.setOnKeyListener((view, i, keyEvent) -> {
if (keyEvent.getAction() == KeyEvent.ACTION_DOWN) {
if (i == KeyEvent.KEYCODE_BACK) {
if (webView.canGoBack()) {
webView.goBack();
} else {
PrivacyPolicy.this.requireActivity().onBackPressed();
}
}
}
return true;
});
return view;
}

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
setHasOptionsMenu(true);
super.onCreate(savedInstanceState);
}

@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
inflater.inflate(R.menu.action_menu, menu);
super.onCreateOptionsMenu(menu, inflater);
}

@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
int id = item.getItemId();
if (id == R.id.refresh) {
webView.reload();
}
return super.onOptionsItemSelected(item);
}
}
  • Import code in the TermsConditions.java file
public class TermsConditions extends Fragment {
View view;
WebView webView;

@SuppressLint("SetJavaScriptEnabled")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.custom_webview, container, false);

// Lottie Animation ID Implemented Below
LottieAnimationView lottieAnimationView = view.findViewById(R.id.progress_bar);
// WebView Code Implemented Below
webView = view.findViewById(R.id.web_view);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);

webView.getSettings().setSupportZoom(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setDisplayZoomControls(false);

webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webView.setScrollbarFadingEnabled(false);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
lottieAnimationView.setVisibility(View.VISIBLE);
}

@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
lottieAnimationView.setVisibility(View.GONE);
}
});
webView.loadUrl(getString(R.string.termsLink));
webView.setOnKeyListener((view, i, keyEvent) -> {
if (keyEvent.getAction() == KeyEvent.ACTION_DOWN) {
if (i == KeyEvent.KEYCODE_BACK) {
if (webView.canGoBack()) {
webView.goBack();
} else {
TermsConditions.this.requireActivity().onBackPressed();
}
}
}
return true;
});
return view;
}

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
setHasOptionsMenu(true);
super.onCreate(savedInstanceState);
}

@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
inflater.inflate(R.menu.action_menu, menu);
super.onCreateOptionsMenu(menu, inflater);
}

@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
int id = item.getItemId();
if (id == R.id.refresh) {
webView.reload();
}
return super.onOptionsItemSelected(item);
}
}
  • Now, we can create a webview fragment that shows all webview layouts in the container layout.
  • All fragment layout named given below:
  1. Fragment01
  2. Fragment02
  3. Fragment03
  4. Fragment04
  5. Fragment05
  6. Fragment06
  7. Fragment07
  8. Fragment08
  9. Fragment09
  10. Fragment10
  11. Fragment11
  12. Fragment12
  13. Fragment13
  14. Fragment14
  15. Fragment15
  16. Fragment16
  17. Fragment17
  18. Fragment18
  19. Fragment19
  20. Fragment20

Now, we can create only one Fragment of code, and such remaining fragments will paste the same code as the first fragment.

View view;
WebView webView;

@SuppressLint("SetJavaScriptEnabled")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.custom_webview, container, false);

// Lottie Animation ID Implemented Below
LottieAnimationView lottieAnimationView = view.findViewById(R.id.progress_bar);
// WebView Code Implemented Below
webView = view.findViewById(R.id.web_view);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);

webView.getSettings().setSupportZoom(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setDisplayZoomControls(false);

webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webView.setScrollbarFadingEnabled(false);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
lottieAnimationView.setVisibility(View.VISIBLE);
}

@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
lottieAnimationView.setVisibility(View.GONE);
}
});
webView.loadUrl(getString(R.string.one_link));
webView.setOnKeyListener((view, i, keyEvent) -> {
if (keyEvent.getAction() == KeyEvent.ACTION_DOWN) {
if (i == KeyEvent.KEYCODE_BACK) {
if (webView.canGoBack()) {
webView.goBack();
} else {
Fragment01.this.requireActivity().onBackPressed();
}
}
}
return true;
});
return view;
}

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
setHasOptionsMenu(true);
super.onCreate(savedInstanceState);
}

@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
inflater.inflate(R.menu.action_menu, menu);
super.onCreateOptionsMenu(menu, inflater);
}

@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
int id = item.getItemId();
if (id == R.id.refresh) {
webView.reload();
}
return super.onOptionsItemSelected(item);
}

————— THANK YOU VERY MUCH —————

Scroll to Top