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.ConstraintLayoutxmlns: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
<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)
}
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)
}
}`
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
Post a Comment