diff --git a/README.md b/README.md
new file mode 100644
index 0000000..e7561bf
--- /dev/null
+++ b/README.md
@@ -0,0 +1,4 @@
+
+
+https://github.com/user-attachments/assets/206a1a3f-1aa2-48ed-b031-9762c067982a
+
diff --git a/Slider_Project/.gitignore b/Slider_Project/.gitignore
deleted file mode 100644
index aa724b7..0000000
--- a/Slider_Project/.gitignore
+++ /dev/null
@@ -1,15 +0,0 @@
-*.iml
-.gradle
-/local.properties
-/.idea/caches
-/.idea/libraries
-/.idea/modules.xml
-/.idea/workspace.xml
-/.idea/navEditor.xml
-/.idea/assetWizardSettings.xml
-.DS_Store
-/build
-/captures
-.externalNativeBuild
-.cxx
-local.properties
diff --git a/Slider_Project/app/build.gradle.kts b/Slider_Project/app/build.gradle.kts
deleted file mode 100644
index 0a5e792..0000000
--- a/Slider_Project/app/build.gradle.kts
+++ /dev/null
@@ -1,44 +0,0 @@
-plugins {
- alias(libs.plugins.android.application)
-}
-
-android {
- namespace = "org.geeksforgeeks.myapplication"
- compileSdk = 34
-
- defaultConfig {
- applicationId = "org.geeksforgeeks.myapplication"
- minSdk = 24
- targetSdk = 34
- versionCode = 1
- versionName = "1.0"
-
- testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
- }
-
- buildTypes {
- release {
- isMinifyEnabled = false
- proguardFiles(
- getDefaultProguardFile("proguard-android-optimize.txt"),
- "proguard-rules.pro"
- )
- }
- }
- compileOptions {
- sourceCompatibility = JavaVersion.VERSION_1_8
- targetCompatibility = JavaVersion.VERSION_1_8
- }
-}
-
-dependencies {
-
- implementation(libs.appcompat)
- implementation(libs.material)
- implementation(libs.activity)
- implementation(libs.constraintlayout)
- testImplementation(libs.junit)
- androidTestImplementation(libs.ext.junit)
- androidTestImplementation(libs.espresso.core)
- implementation("com.squareup.picasso:picasso:2.71828")
-}
\ No newline at end of file
diff --git a/Slider_Project/app/src/androidTest/java/org/geeksforgeeks/myapplication/ExampleInstrumentedTest.java b/Slider_Project/app/src/androidTest/java/org/geeksforgeeks/myapplication/ExampleInstrumentedTest.java
deleted file mode 100644
index b115613..0000000
--- a/Slider_Project/app/src/androidTest/java/org/geeksforgeeks/myapplication/ExampleInstrumentedTest.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.geeksforgeeks.myapplication;
-
-import android.content.Context;
-
-import androidx.test.platform.app.InstrumentationRegistry;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import static org.junit.Assert.*;
-
-/**
- * Instrumented test, which will execute on an Android device.
- *
- * @see Testing documentation
- */
-@RunWith(AndroidJUnit4.class)
-public class ExampleInstrumentedTest {
- @Test
- public void useAppContext() {
- // Context of the app under test.
- Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
- assertEquals("org.geeksforgeeks.myapplication", appContext.getPackageName());
- }
-}
\ No newline at end of file
diff --git a/Slider_Project/app/src/main/java/org/geeksforgeeks/myapplication/MainActivity.java b/Slider_Project/app/src/main/java/org/geeksforgeeks/myapplication/MainActivity.java
deleted file mode 100644
index bfa13cd..0000000
--- a/Slider_Project/app/src/main/java/org/geeksforgeeks/myapplication/MainActivity.java
+++ /dev/null
@@ -1,111 +0,0 @@
-package org.geeksforgeeks.myapplication;
-
-import android.os.Bundle;
-import android.text.Html;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import androidx.activity.EdgeToEdge;
-import androidx.appcompat.app.AppCompatActivity;
-import androidx.core.graphics.Insets;
-import androidx.core.view.ViewCompat;
-import androidx.core.view.WindowInsetsCompat;
-import androidx.viewpager.widget.ViewPager;
-import java.util.*;
-
-public class MainActivity extends AppCompatActivity {
-
- // creating variables for view pager,
- // liner layout, adapter and our array list.
- private ViewPager viewPager;
- private LinearLayout dotsLL;
- SliderAdapter adapter;
- private ArrayList sliderModalArrayList;
- private TextView[] dots;
- int size;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- // initializing all our views.
- viewPager = findViewById(R.id.idViewPager);
- dotsLL = findViewById(R.id.idLLDots);
-
- // in below line we are creating a new array list.
- sliderModalArrayList = new ArrayList<>();
-
- // on below 3 lines we are adding data to our array list.
- sliderModalArrayList.add(new SliderModal("Slide 1 ", "Slide 1 heading", "https://images.unsplash.com/photo-1610842546881-b282c580b51d?ixid=MXwxMjA3fDB8MHxlZGl0b3JpYWwtZmVlZHw5fHx8ZW58MHx8fA%3D%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=500&q=60", R.drawable.gradient));
- sliderModalArrayList.add(new SliderModal("Slide 2 ", "Slide 2 heading", "https://images.unsplash.com/photo-1610783131813-475d08664ef6?ixid=MXwxMjA3fDB8MHxlZGl0b3JpYWwtZmVlZHwxMnx8fGVufDB8fHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=500&q=60", R.drawable.gradient_two));
- sliderModalArrayList.add(new SliderModal("Slide 3 ", "Slide 3 heading", "https://images.unsplash.com/photo-1610832958506-aa56368176cf?ixid=MXwxMjA3fDB8MHxlZGl0b3JpYWwtZmVlZHwxN3x8fGVufDB8fHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=500&q=60", R.drawable.gradient_three));
-
- // below line is use to add our array list to adapter class.
- adapter = new SliderAdapter(MainActivity.this, sliderModalArrayList);
-
- // below line is use to set our
- // adapter to our view pager.
- viewPager.setAdapter(adapter);
-
- // we are storing the size of our
- // array list in a variable.
- size = sliderModalArrayList.size();
-
- // calling method to add dots indicator
- addDots(size, 0);
-
- // below line is use to call on
- // page change listener method.
- viewPager.addOnPageChangeListener(viewListener);
- }
-
- private void addDots(int size, int pos) {
- // inside this method we are
- // creating a new text view.
- dots = new TextView[size];
-
- // below line is use to remove all
- // the views from the linear layout.
- dotsLL.removeAllViews();
-
- // running a for loop to add
- // number of dots to our slider.
- for (int i = 0; i < size; i++) {
- // below line is use to add the
- // dots and modify its color.
- dots[i] = new TextView(this);
- dots[i].setText(Html.fromHtml("•"));
- dots[i].setTextSize(35);
-
- // below line is called when the dots are not selected.
- dots[i].setTextColor(getResources().getColor(R.color.black));
- dotsLL.addView(dots[i]);
- }
- if (dots.length > 0) {
- // this line is called when the dots
- // inside linear layout are selected
- dots[pos].setTextColor(getResources().getColor(R.color.purple_200));
- }
- }
-
- // creating a method for view pager for on page change listener.
- ViewPager.OnPageChangeListener viewListener = new ViewPager.OnPageChangeListener() {
- @Override
- public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
-
- }
-
- @Override
- public void onPageSelected(int position) {
- // we are calling our dots method to
- // change the position of selected dots.
- addDots(size, position);
- }
-
- @Override
- public void onPageScrollStateChanged(int state) {
-
- }
- };
-}
diff --git a/Slider_Project/app/src/main/java/org/geeksforgeeks/myapplication/SliderAdapter.java b/Slider_Project/app/src/main/java/org/geeksforgeeks/myapplication/SliderAdapter.java
deleted file mode 100644
index 384f557..0000000
--- a/Slider_Project/app/src/main/java/org/geeksforgeeks/myapplication/SliderAdapter.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package org.geeksforgeeks.myapplication;
-
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.viewpager.widget.PagerAdapter;
-
-import com.squareup.picasso.Picasso;
-
-import java.util.ArrayList;
-
-public class SliderAdapter extends PagerAdapter {
-
- // creating variables for layout
- // inflater, context and array list.
- LayoutInflater layoutInflater;
- Context context;
- ArrayList sliderModalArrayList;
-
- // creating constructor.
- public SliderAdapter(Context context, ArrayList sliderModalArrayList) {
- this.context = context;
- this.sliderModalArrayList = sliderModalArrayList;
- }
-
- @Override
- public int getCount() {
- // inside get count method returning
- // the size of our array list.
- return sliderModalArrayList.size();
- }
-
- @Override
- public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
- // inside isViewFromobject method we are
- // returning our Relative layout object.
- return view == (RelativeLayout) object;
- }
-
- @NonNull
- @Override
- public Object instantiateItem(@NonNull ViewGroup container, int position) {
-
- // in this method we will initialize all our layout
- // items and inflate our layout file as well.
- layoutInflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
-
- // below line is use to inflate the
- // layout file which we created.
- View view = layoutInflater.inflate(R.layout.slider_layout, container, false);
-
- // initializing our views.
- ImageView imageView = view.findViewById(R.id.idIV);
- TextView titleTV = view.findViewById(R.id.idTVtitle);
- TextView headingTV = view.findViewById(R.id.idTVheading);
- RelativeLayout sliderRL = view.findViewById(R.id.idRLSlider);
-
- // setting data to our views.
- SliderModal modal = sliderModalArrayList.get(position);
- titleTV.setText(modal.getTitle());
- headingTV.setText(modal.getHeading());
- Picasso.get().load(modal.getImgUrl()).into(imageView);
-
- // below line is to set background
- // drawable to our each item
- sliderRL.setBackground(context.getResources().getDrawable(modal.getBackgroundDrawable()));
-
- // after setting the data to our views we
- // are adding the view to our container.
- container.addView(view);
-
- // at last we are
- // returning the view.
- return view;
- }
-
- @Override
- public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
- // this is a destroy view method
- // which is use to remove a view.
- container.removeView((RelativeLayout) object);
- }
-}
diff --git a/Slider_Project/app/src/main/java/org/geeksforgeeks/myapplication/SliderModal.java b/Slider_Project/app/src/main/java/org/geeksforgeeks/myapplication/SliderModal.java
deleted file mode 100644
index bcc99a1..0000000
--- a/Slider_Project/app/src/main/java/org/geeksforgeeks/myapplication/SliderModal.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package org.geeksforgeeks.myapplication;
-
-public class SliderModal {
-
- // string variable for storing
- // title, image url and description.
- private String title;
- private String heading;
- private String imgUrl;
- private int backgroundDrawable;
-
- public SliderModal() {
- // empty constructor is required
- // when using firebase
- }
-
- // creating getter methods.
- public String getTitle() {
- return title;
- }
-
- public void setTitle(String title) {
- this.title = title;
- }
-
- public String getHeading() {
- return heading;
- }
-
- // creating setter methods
- public void setHeading(String heading) {
- this.heading = heading;
- }
-
- public String getImgUrl() {
- return imgUrl;
- }
-
- public void setImgUrl(String imgUrl) {
- this.imgUrl = imgUrl;
- }
-
- // constructor for our modal class
- public SliderModal(String title, String heading, String imgUrl, int backgroundDrawable) {
- this.title = title;
- this.heading = heading;
- this.imgUrl = imgUrl;
- this.backgroundDrawable = backgroundDrawable;
- }
-
- public int getBackgroundDrawable() {
- return backgroundDrawable;
- }
-
- public void setBackgroundDrawable(int backgroundDrawable) {
- this.backgroundDrawable = backgroundDrawable;
- }
-}
diff --git a/Slider_Project/app/src/main/res/drawable/gradient.xml b/Slider_Project/app/src/main/res/drawable/gradient.xml
deleted file mode 100644
index f014709..0000000
--- a/Slider_Project/app/src/main/res/drawable/gradient.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/Slider_Project/app/src/main/res/drawable/gradient_three.xml b/Slider_Project/app/src/main/res/drawable/gradient_three.xml
deleted file mode 100644
index b48b791..0000000
--- a/Slider_Project/app/src/main/res/drawable/gradient_three.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
diff --git a/Slider_Project/app/src/main/res/drawable/gradient_two.xml b/Slider_Project/app/src/main/res/drawable/gradient_two.xml
deleted file mode 100644
index ede5e9c..0000000
--- a/Slider_Project/app/src/main/res/drawable/gradient_two.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
diff --git a/Slider_Project/app/src/main/res/layout/activity_main.xml b/Slider_Project/app/src/main/res/layout/activity_main.xml
deleted file mode 100644
index ad35790..0000000
--- a/Slider_Project/app/src/main/res/layout/activity_main.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Slider_Project/app/src/main/res/layout/slider_layout.xml b/Slider_Project/app/src/main/res/layout/slider_layout.xml
deleted file mode 100644
index ff37947..0000000
--- a/Slider_Project/app/src/main/res/layout/slider_layout.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Slider_Project/app/src/main/res/values-night/themes.xml b/Slider_Project/app/src/main/res/values-night/themes.xml
deleted file mode 100644
index d25b0f2..0000000
--- a/Slider_Project/app/src/main/res/values-night/themes.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/Slider_Project/app/src/main/res/values/colors.xml b/Slider_Project/app/src/main/res/values/colors.xml
deleted file mode 100644
index 29bb71d..0000000
--- a/Slider_Project/app/src/main/res/values/colors.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
- #FF000000
- #FFFFFFFF
- #DC0083
- #508D4E
-
\ No newline at end of file
diff --git a/Slider_Project/app/src/main/res/values/strings.xml b/Slider_Project/app/src/main/res/values/strings.xml
deleted file mode 100644
index 3de1a39..0000000
--- a/Slider_Project/app/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
- My Application
-
\ No newline at end of file
diff --git a/Slider_Project/app/src/main/res/values/themes.xml b/Slider_Project/app/src/main/res/values/themes.xml
deleted file mode 100644
index 5e44c69..0000000
--- a/Slider_Project/app/src/main/res/values/themes.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Slider_Project/app/src/test/java/org/geeksforgeeks/myapplication/ExampleUnitTest.java b/Slider_Project/app/src/test/java/org/geeksforgeeks/myapplication/ExampleUnitTest.java
deleted file mode 100644
index d2cd4a7..0000000
--- a/Slider_Project/app/src/test/java/org/geeksforgeeks/myapplication/ExampleUnitTest.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package org.geeksforgeeks.myapplication;
-
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-
-/**
- * Example local unit test, which will execute on the development machine (host).
- *
- * @see Testing documentation
- */
-public class ExampleUnitTest {
- @Test
- public void addition_isCorrect() {
- assertEquals(4, 2 + 2);
- }
-}
\ No newline at end of file
diff --git a/Slider_Project/gradle/libs.versions.toml b/Slider_Project/gradle/libs.versions.toml
deleted file mode 100644
index 16d6c35..0000000
--- a/Slider_Project/gradle/libs.versions.toml
+++ /dev/null
@@ -1,22 +0,0 @@
-[versions]
-agp = "8.4.0"
-junit = "4.13.2"
-junitVersion = "1.2.1"
-espressoCore = "3.6.1"
-appcompat = "1.7.0"
-material = "1.12.0"
-activity = "1.9.0"
-constraintlayout = "2.1.4"
-
-[libraries]
-junit = { group = "junit", name = "junit", version.ref = "junit" }
-ext-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }
-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }
-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" }
-material = { group = "com.google.android.material", name = "material", version.ref = "material" }
-activity = { group = "androidx.activity", name = "activity", version.ref = "activity" }
-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "constraintlayout" }
-
-[plugins]
-android-application = { id = "com.android.application", version.ref = "agp" }
-
diff --git a/Slider_Project/app/.gitignore b/app/.gitignore
similarity index 100%
rename from Slider_Project/app/.gitignore
rename to app/.gitignore
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
new file mode 100644
index 0000000..b453c60
--- /dev/null
+++ b/app/build.gradle.kts
@@ -0,0 +1,60 @@
+plugins {
+ alias(libs.plugins.android.application)
+ alias(libs.plugins.kotlin.android)
+ id("kotlin-kapt")
+ id("com.google.gms.google-services")
+}
+
+android {
+ namespace = "org.geeksforgeeks.demo"
+ compileSdk = 35
+
+ defaultConfig {
+ applicationId = "org.geeksforgeeks.demo"
+ minSdk = 26
+ targetSdk = 35
+ versionCode = 1
+ versionName = "1.0"
+
+ testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ buildFeatures {
+ viewBinding = true
+ }
+
+ buildTypes {
+ release {
+ isMinifyEnabled = false
+ proguardFiles(
+ getDefaultProguardFile("proguard-android-optimize.txt"),
+ "proguard-rules.pro"
+ )
+ }
+ }
+ compileOptions {
+ sourceCompatibility = JavaVersion.VERSION_11
+ targetCompatibility = JavaVersion.VERSION_11
+ }
+ kotlinOptions {
+ jvmTarget = "11"
+ }
+}
+dependencies {
+ implementation(libs.androidx.core.ktx)
+ implementation(libs.androidx.appcompat)
+ implementation(libs.material)
+ implementation(libs.androidx.activity)
+ implementation(libs.androidx.constraintlayout)
+ implementation(libs.androidx.navigation.fragment.ktx)
+ implementation(libs.androidx.navigation.ui.ktx)
+ testImplementation(libs.junit)
+ androidTestImplementation(libs.androidx.junit)
+ androidTestImplementation(libs.androidx.espresso.core)
+
+ implementation("com.google.firebase:firebase-auth:23.2.0")
+ implementation("com.google.firebase:firebase-storage-ktx:21.0.1")
+ implementation("com.google.android.gms:play-services-auth:21.3.0")
+
+ implementation("com.github.bumptech.glide:glide:4.16.0")
+}
\ No newline at end of file
diff --git a/Slider_Project/app/proguard-rules.pro b/app/proguard-rules.pro
similarity index 100%
rename from Slider_Project/app/proguard-rules.pro
rename to app/proguard-rules.pro
diff --git a/app/src/androidTest/java/org/geeksforgeeks/demo/ExampleInstrumentedTest.kt b/app/src/androidTest/java/org/geeksforgeeks/demo/ExampleInstrumentedTest.kt
new file mode 100644
index 0000000..e749173
--- /dev/null
+++ b/app/src/androidTest/java/org/geeksforgeeks/demo/ExampleInstrumentedTest.kt
@@ -0,0 +1,24 @@
+package org.geeksforgeeks.demo
+
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.ext.junit.runners.AndroidJUnit4
+
+import org.junit.Test
+import org.junit.runner.RunWith
+
+import org.junit.Assert.*
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * See [testing documentation](http://d.android.com/tools/testing).
+ */
+@RunWith(AndroidJUnit4::class)
+class ExampleInstrumentedTest {
+ @Test
+ fun useAppContext() {
+ // Context of the app under test.
+ val appContext = InstrumentationRegistry.getInstrumentation().targetContext
+ assertEquals("org.geeksforgeeks.demo", appContext.packageName)
+ }
+}
\ No newline at end of file
diff --git a/Slider_Project/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
similarity index 88%
rename from Slider_Project/app/src/main/AndroidManifest.xml
rename to app/src/main/AndroidManifest.xml
index 1ab0d26..e3490d5 100644
--- a/Slider_Project/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,7 +1,8 @@
-
+
+
-
-
diff --git a/app/src/main/java/org/geeksforgeeks/demo/MainActivity.kt b/app/src/main/java/org/geeksforgeeks/demo/MainActivity.kt
new file mode 100644
index 0000000..cf6bd9c
--- /dev/null
+++ b/app/src/main/java/org/geeksforgeeks/demo/MainActivity.kt
@@ -0,0 +1,84 @@
+package org.geeksforgeeks.demo
+
+import android.os.Bundle
+import android.text.Html
+import android.widget.LinearLayout
+import android.widget.TextView
+import androidx.activity.enableEdgeToEdge
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import androidx.viewpager.widget.ViewPager
+import androidx.viewpager.widget.ViewPager.OnPageChangeListener
+
+class MainActivity : AppCompatActivity() {
+
+ private lateinit var viewPager: ViewPager
+ private lateinit var dotsLL: LinearLayout
+ private lateinit var adapter: SliderAdapter
+ private lateinit var sliderModalArrayList: ArrayList
+ private lateinit var dots: Array
+ private var size: Int = 0
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ enableEdgeToEdge()
+ setContentView(R.layout.activity_main)
+
+ // Initialize views
+ viewPager = findViewById(R.id.idViewPager)
+ dotsLL = findViewById(R.id.dotsLayout)
+
+ // Create and populate slider items
+ sliderModalArrayList = ArrayList()
+ sliderModalArrayList.add(SliderModal("Slide 1", "Slide 1 heading", R.drawable.sample1))
+ sliderModalArrayList.add(SliderModal("Slide 2", "Slide 2 heading", R.drawable.sample2))
+ sliderModalArrayList.add(SliderModal("Slide 3", "Slide 3 heading", R.drawable.sample3))
+
+ // Set up adapter with slider items
+ adapter = SliderAdapter(this@MainActivity, sliderModalArrayList)
+ viewPager.adapter = adapter
+
+ // Get the total number of slides
+ size = sliderModalArrayList.size
+
+ // Add initial dot indicators
+ addDots(size, 0)
+
+ // Set page change listener
+ viewPager.addOnPageChangeListener(viewListener)
+ }
+
+ // Method to add and update dot indicators
+ private fun addDots(size: Int, pos: Int) {
+ dots = arrayOfNulls(size)
+ dotsLL.removeAllViews()
+
+ for (i in 0 until size) {
+ dots[i] = TextView(this).apply {
+ text = Html.fromHtml("•")
+ textSize = 35f
+ setTextColor(ContextCompat.getColor(this@MainActivity, R.color.black))
+ }
+ dotsLL.addView(dots[i])
+ }
+
+ // Highlight selected dot
+ if (dots.isNotEmpty()) {
+ dots[pos]?.apply {
+ setTextColor(ContextCompat.getColor(this@MainActivity, R.color.colorPrimary))
+ textSize = 45f
+ }
+ }
+ }
+
+ // Page change listener to update dots on slide change
+ private var viewListener: OnPageChangeListener = object : OnPageChangeListener {
+ override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {}
+
+ override fun onPageSelected(position: Int) {
+ addDots(size, position)
+ }
+
+ override fun onPageScrollStateChanged(state: Int) {}
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/geeksforgeeks/demo/SliderAdapter.kt b/app/src/main/java/org/geeksforgeeks/demo/SliderAdapter.kt
new file mode 100644
index 0000000..8aa350d
--- /dev/null
+++ b/app/src/main/java/org/geeksforgeeks/demo/SliderAdapter.kt
@@ -0,0 +1,55 @@
+package org.geeksforgeeks.demo
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.viewpager.widget.PagerAdapter
+import com.bumptech.glide.Glide
+
+class SliderAdapter(
+ private var context: Context,
+ private var sliderModalArrayList: ArrayList
+) : PagerAdapter() {
+
+ // LayoutInflater to inflate custom layout
+ private lateinit var layoutInflater: LayoutInflater
+
+ // Returns the total number of items
+ override fun getCount(): Int {
+ return sliderModalArrayList.size
+ }
+
+ // Checks whether a page View is associated with a specific key object
+ override fun isViewFromObject(view: View, `object`: Any): Boolean {
+ return view === `object`
+ }
+
+ // Instantiates and returns a page View object
+ override fun instantiateItem(container: ViewGroup, position: Int): Any {
+ layoutInflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
+ val view: View = layoutInflater.inflate(R.layout.slider_layout, container, false)
+
+ // Initialize views
+ val imageView = view.findViewById(R.id.imageView)
+ val titleTV = view.findViewById(R.id.titleTextView)
+ val headingTV = view.findViewById(R.id.descriptionTextView)
+
+ // Set data to views
+ val modal: SliderModal = sliderModalArrayList[position]
+ titleTV.text = modal.title
+ headingTV.text = modal.heading
+ Glide.with(context).load(modal.imgUrl).into(imageView)
+
+ // Add the view to container
+ container.addView(view)
+ return view
+ }
+
+ // Removes a page View from the container
+ override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
+ container.removeView(`object` as View)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/geeksforgeeks/demo/SliderModal.kt b/app/src/main/java/org/geeksforgeeks/demo/SliderModal.kt
new file mode 100644
index 0000000..97df4f7
--- /dev/null
+++ b/app/src/main/java/org/geeksforgeeks/demo/SliderModal.kt
@@ -0,0 +1,7 @@
+package org.geeksforgeeks.demo
+
+data class SliderModal(
+ val title: String,
+ val heading: String,
+ val imgUrl: Int
+)
\ No newline at end of file
diff --git a/app/src/main/res/drawable/gfg_logo.webp b/app/src/main/res/drawable/gfg_logo.webp
new file mode 100644
index 0000000..8ba40a7
Binary files /dev/null and b/app/src/main/res/drawable/gfg_logo.webp differ
diff --git a/Slider_Project/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml
similarity index 100%
rename from Slider_Project/app/src/main/res/drawable/ic_launcher_background.xml
rename to app/src/main/res/drawable/ic_launcher_background.xml
diff --git a/Slider_Project/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml
similarity index 100%
rename from Slider_Project/app/src/main/res/drawable/ic_launcher_foreground.xml
rename to app/src/main/res/drawable/ic_launcher_foreground.xml
diff --git a/app/src/main/res/drawable/sample1.jpg b/app/src/main/res/drawable/sample1.jpg
new file mode 100644
index 0000000..75bc870
Binary files /dev/null and b/app/src/main/res/drawable/sample1.jpg differ
diff --git a/app/src/main/res/drawable/sample2.jpg b/app/src/main/res/drawable/sample2.jpg
new file mode 100644
index 0000000..ddbd4e2
Binary files /dev/null and b/app/src/main/res/drawable/sample2.jpg differ
diff --git a/app/src/main/res/drawable/sample3.jpg b/app/src/main/res/drawable/sample3.jpg
new file mode 100644
index 0000000..6a8aee3
Binary files /dev/null and b/app/src/main/res/drawable/sample3.jpg differ
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 0000000..11a0c5a
--- /dev/null
+++ b/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/slider_layout.xml b/app/src/main/res/layout/slider_layout.xml
new file mode 100644
index 0000000..bece240
--- /dev/null
+++ b/app/src/main/res/layout/slider_layout.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Slider_Project/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
similarity index 100%
rename from Slider_Project/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
rename to app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
diff --git a/Slider_Project/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
similarity index 100%
rename from Slider_Project/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
rename to app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
diff --git a/Slider_Project/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp
similarity index 100%
rename from Slider_Project/app/src/main/res/mipmap-hdpi/ic_launcher.webp
rename to app/src/main/res/mipmap-hdpi/ic_launcher.webp
diff --git a/Slider_Project/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
similarity index 100%
rename from Slider_Project/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
rename to app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
diff --git a/Slider_Project/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp
similarity index 100%
rename from Slider_Project/app/src/main/res/mipmap-mdpi/ic_launcher.webp
rename to app/src/main/res/mipmap-mdpi/ic_launcher.webp
diff --git a/Slider_Project/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
similarity index 100%
rename from Slider_Project/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
rename to app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
diff --git a/Slider_Project/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
similarity index 100%
rename from Slider_Project/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
rename to app/src/main/res/mipmap-xhdpi/ic_launcher.webp
diff --git a/Slider_Project/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
similarity index 100%
rename from Slider_Project/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
rename to app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
diff --git a/Slider_Project/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
similarity index 100%
rename from Slider_Project/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
rename to app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
diff --git a/Slider_Project/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
similarity index 100%
rename from Slider_Project/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
rename to app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
diff --git a/Slider_Project/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
similarity index 100%
rename from Slider_Project/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
rename to app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
diff --git a/Slider_Project/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
similarity index 100%
rename from Slider_Project/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
rename to app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
diff --git a/app/src/main/res/raw/sound.mp3 b/app/src/main/res/raw/sound.mp3
new file mode 100644
index 0000000..57fc9b9
Binary files /dev/null and b/app/src/main/res/raw/sound.mp3 differ
diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml
new file mode 100644
index 0000000..8f5e685
--- /dev/null
+++ b/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,10 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml
new file mode 100644
index 0000000..7781ac8
--- /dev/null
+++ b/app/src/main/res/values/attrs.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
new file mode 100644
index 0000000..d23d562
--- /dev/null
+++ b/app/src/main/res/values/colors.xml
@@ -0,0 +1,11 @@
+
+
+ #FF000000
+ #FFFFFFFF
+ #0f9d58
+ #006d2d
+ #AACF55
+ #BDBDBD
+ #808080
+ #20D761
+
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
new file mode 100644
index 0000000..4db8c59
--- /dev/null
+++ b/app/src/main/res/values/dimens.xml
@@ -0,0 +1,10 @@
+
+
+
+
+ 0dp
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
new file mode 100644
index 0000000..3fdcfbb
--- /dev/null
+++ b/app/src/main/res/values/strings.xml
@@ -0,0 +1,11 @@
+
+
+ Demo
+ EXAMPLE
+ Add widget
+ This is an app widget description
+
+ Hello blank fragment
+
+
+
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
new file mode 100644
index 0000000..3eaf683
--- /dev/null
+++ b/app/src/main/res/values/styles.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
new file mode 100644
index 0000000..81f6285
--- /dev/null
+++ b/app/src/main/res/values/themes.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Slider_Project/app/src/main/res/xml/backup_rules.xml b/app/src/main/res/xml/backup_rules.xml
similarity index 100%
rename from Slider_Project/app/src/main/res/xml/backup_rules.xml
rename to app/src/main/res/xml/backup_rules.xml
diff --git a/Slider_Project/app/src/main/res/xml/data_extraction_rules.xml b/app/src/main/res/xml/data_extraction_rules.xml
similarity index 100%
rename from Slider_Project/app/src/main/res/xml/data_extraction_rules.xml
rename to app/src/main/res/xml/data_extraction_rules.xml
diff --git a/app/src/test/java/org/geeksforgeeks/demo/ExampleUnitTest.kt b/app/src/test/java/org/geeksforgeeks/demo/ExampleUnitTest.kt
new file mode 100644
index 0000000..b481b63
--- /dev/null
+++ b/app/src/test/java/org/geeksforgeeks/demo/ExampleUnitTest.kt
@@ -0,0 +1,17 @@
+package org.geeksforgeeks.demo
+
+import org.junit.Test
+
+import org.junit.Assert.*
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * See [testing documentation](http://d.android.com/tools/testing).
+ */
+class ExampleUnitTest {
+ @Test
+ fun addition_isCorrect() {
+ assertEquals(4, 2 + 2)
+ }
+}
\ No newline at end of file
diff --git a/Slider_Project/build.gradle.kts b/build.gradle.kts
similarity index 57%
rename from Slider_Project/build.gradle.kts
rename to build.gradle.kts
index 3756278..ddd4350 100644
--- a/Slider_Project/build.gradle.kts
+++ b/build.gradle.kts
@@ -1,4 +1,6 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
alias(libs.plugins.android.application) apply false
-}
\ No newline at end of file
+ alias(libs.plugins.kotlin.android) apply false
+ id("com.google.gms.google-services") version "4.4.2" apply false
+}
diff --git a/Slider_Project/gradle.properties b/gradle.properties
similarity index 90%
rename from Slider_Project/gradle.properties
rename to gradle.properties
index 4387edc..132244e 100644
--- a/Slider_Project/gradle.properties
+++ b/gradle.properties
@@ -15,7 +15,9 @@ org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
# Android operating system, and which are packaged with your app's APK
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true
+# Kotlin code style for this project: "official" or "obsolete":
+kotlin.code.style=official
# Enables namespacing of each library's R class so that its R class includes only the
# resources declared in the library itself and none from the library's dependencies,
# thereby reducing the size of the R class for that library
-android.nonTransitiveRClass=true
\ No newline at end of file
+android.nonTransitiveRClass=true
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
new file mode 100644
index 0000000..37b5d8d
--- /dev/null
+++ b/gradle/libs.versions.toml
@@ -0,0 +1,30 @@
+[versions]
+agp = "8.8.0"
+kotlin = "2.1.0"
+coreKtx = "1.10.1"
+junit = "4.13.2"
+junitVersion = "1.1.5"
+espressoCore = "3.5.1"
+appcompat = "1.6.1"
+material = "1.10.0"
+activity = "1.8.0"
+constraintlayout = "2.1.4"
+navigationFragmentKtx = "2.8.9"
+navigationUiKtx = "2.8.9"
+
+[libraries]
+androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
+junit = { group = "junit", name = "junit", version.ref = "junit" }
+androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }
+androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }
+androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" }
+material = { group = "com.google.android.material", name = "material", version.ref = "material" }
+androidx-activity = { group = "androidx.activity", name = "activity", version.ref = "activity" }
+androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "constraintlayout" }
+androidx-navigation-fragment-ktx = { group = "androidx.navigation", name = "navigation-fragment-ktx", version.ref = "navigationFragmentKtx" }
+androidx-navigation-ui-ktx = { group = "androidx.navigation", name = "navigation-ui-ktx", version.ref = "navigationUiKtx" }
+
+[plugins]
+android-application = { id = "com.android.application", version.ref = "agp" }
+kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
+
diff --git a/Slider_Project/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
similarity index 100%
rename from Slider_Project/gradle/wrapper/gradle-wrapper.jar
rename to gradle/wrapper/gradle-wrapper.jar
diff --git a/Slider_Project/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
similarity index 79%
rename from Slider_Project/gradle/wrapper/gradle-wrapper.properties
rename to gradle/wrapper/gradle-wrapper.properties
index 335ace8..b6f49a2 100644
--- a/Slider_Project/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Tue Jul 09 15:45:04 IST 2024
+#Tue Feb 04 14:09:14 IST 2025
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/Slider_Project/gradlew b/gradlew
similarity index 100%
rename from Slider_Project/gradlew
rename to gradlew
diff --git a/Slider_Project/gradlew.bat b/gradlew.bat
similarity index 100%
rename from Slider_Project/gradlew.bat
rename to gradlew.bat
diff --git a/Slider_Project/settings.gradle.kts b/settings.gradle.kts
similarity index 84%
rename from Slider_Project/settings.gradle.kts
rename to settings.gradle.kts
index 7e67774..5c02770 100644
--- a/Slider_Project/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -16,9 +16,9 @@ dependencyResolutionManagement {
repositories {
google()
mavenCentral()
+ maven { setUrl("https://jitpack.io") }
}
}
-rootProject.name = "My Application"
-include(":app")
-
\ No newline at end of file
+rootProject.name = "Demo"
+include(":app")
\ No newline at end of file