PPB membuat Image Scrolling

 Nama: Hafiz Kurniawan

NRP: 5025201032

Kelas: PPB F



activity_main.xml
`<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black"
xmlns:app="http://schemas.android.com/apk/res-auto">


<com.google.android.material.tabs.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="2dp"
app:tabIndicatorFullWidth="true"
app:tabBackground="@color/white"
app:tabIndicatorHeight="2dp"
android:fitsSystemWindows="true"
app:tabMode="fixed"
app:tabIndicatorColor="@color/secondary"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/viewPager">

</com.google.android.material.tabs.TabLayout>

<androidx.viewpager.widget.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintTop_toBottomOf="@+id/tabLayout"
app:layout_constraintBottom_toTopOf="@id/btnSignIn"/>


<Button
android:id="@+id/btnSignIn"
android:layout_width="match_parent"
android:layout_height="60dp"
android:text="I have an account"
app:backgroundTint="@color/gray"
android:textSize="16sp"
android:textColor="@color/white"
android:layout_marginHorizontal="30dp"
android:layout_marginBottom="10dp"
app:layout_constraintBottom_toTopOf="@id/btn_signup"/>


<Button
android:id="@+id/btn_signup"
android:layout_width="match_parent"
android:layout_height="60dp"
android:text="Get started"
app:backgroundTint="@color/white"
android:textSize="16sp"
android:textColor="@color/black"
android:layout_marginHorizontal="30dp"
android:layout_marginBottom="40dp"
app:layout_constraintBottom_toBottomOf="parent"/>


</androidx.constraintlayout.widget.ConstraintLayout>`

image_slider_item.xml
`<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black"
xmlns:app="http://schemas.android.com/apk/res-auto">

<TextView
android:id="@+id/tvHeading"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:textSize="22sp"
android:textColor="@color/white"
android:layout_marginTop="16dp"
app:layout_constraintTop_toTopOf="parent"
/>


<TextView
android:id="@+id/tvSubHeading"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:textColor="@color/white"
android:textSize="14sp"
app:layout_constraintTop_toBottomOf="@+id/tvHeading"
/>


<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:padding="20dp"
android:scaleType="fitXY"
app:layout_constraintTop_toBottomOf="@id/tvSubHeading"
app:layout_constraintBottom_toBottomOf="parent"
android:contentDescription="sliderImage" />


</androidx.constraintlayout.widget.ConstraintLayout>`

data class ItemImageSlider(val heading: String, val subheading: String, val image: Int)

`data class ItemImageSlider(val heading: String, val subheading: String, val image: Int)`

autoimageslidet.kt

`package com.autoimageslider


import android.content.Context
import android.os.Handler
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 androidx.viewpager.widget.ViewPager

class AutoImageSliderAdapter(private val context: Context, private var imageList: List<ItemImageSlider>) : PagerAdapter() {

override fun getCount() =imageList.size

override fun isViewFromObject(view: View, `object`: Any): Boolean {
return view === `object`
}

override fun instantiateItem(container: ViewGroup, position: Int): Any {
val view: View = (context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)
as LayoutInflater).inflate(R.layout.image_slider_item, null)
val ivImages = view.findViewById<ImageView>(R.id.imageView)
val heading=view.findViewById<TextView>(R.id.tvHeading)
val subHeading=view.findViewById<TextView>(R.id.tvSubHeading)

ivImages.setImageResource(imageList[position].image)
heading.text=imageList[position].heading
subHeading.text= imageList[position].subheading

val vp = container as ViewPager
vp.addView(view, 0)
return view
}
}   `

fun autoslide(viewPager: ViewPager){
handler= Handler()
runnable = object : Runnable {
override fun run() {
if (currentPage == viewPager.adapter?.count?.minus(1)) {
currentPage = 0
} else {
currentPage++
}
viewPager.setCurrentItem(currentPage, true)
handler.postDelayed(this, 2000)
}
}
Handler().postDelayed(runnable,1000)
}

`package com.autoimageslider

import android.content.Context
import android.os.Handler
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 androidx.viewpager.widget.ViewPager

class AutoImageSliderAdapter(private val context: Context, private var imageList: List<ItemImageSlider>) : PagerAdapter() {

private var currentPage = 0
private lateinit var handler: Handler
private lateinit var runnable: Runnable
override fun getCount() = imageList.size

fun autoslide(viewPager: ViewPager){
handler= Handler()
runnable = object : Runnable {
override fun run() {
if (currentPage == viewPager.adapter?.count?.minus(1)) {
currentPage = 0
} else {
currentPage++
}
viewPager.setCurrentItem(currentPage, true)
handler.postDelayed(this, 2000)
}
}
Handler().postDelayed(runnable,1000)
}

override fun isViewFromObject(view: View, `object`: Any): Boolean {
return view === `object`
}

override fun instantiateItem(container: ViewGroup, position: Int): Any {
val view: View = (context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)
as LayoutInflater).inflate(R.layout.image_slider_item, null)
val ivImages = view.findViewById<ImageView>(R.id.imageView)
val heading=view.findViewById<TextView>(R.id.tvHeading)
val subHeading=view.findViewById<TextView>(R.id.tvSubHeading)
ivImages.setImageResource(imageList[position].image)
heading.text=imageList[position].heading
subHeading.text= imageList[position].subheading


val vp = container as ViewPager
vp.addView(view, 0)
return view
}

override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
val vp = container as ViewPager
val view = `object` as View
vp.removeView(view)
}
}`


Comments

Popular posts from this blog

PPB membuat Simple Login

EPL KUIS AKHIR