개발/안드로이드(Android-Kotlin)

Viewpager (이미지 슬라이드)

----___<<<<< 2019. 9. 25. 14:49

손라가락으로 휙휙 넘기는 슬라이드 기능을 만들어보겠습니다.

 

아래의 이미지 부분을 넘기면, 이미지가 넘어가는 형태의 기능입니다.

 

앱을 사용하다가 많이 보셨을 것 같습니다.

 

 

 

Viewpager라고하는데 코딩을 시작해보죠.

 

자, xml에서 ViewPager 부분을 만들어줍니다.

 

다른 레이아웃 부분은 지우고, ViewPager부분만 추출한 코드입니다.

 

<androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/viewpager_area"
        app:layout_constraintTop_toBottomOf="@id/header_area"
        android:layout_width="match_parent"
        android:layout_marginTop="10dp"
        android:layout_height="wrap_content">

        <androidx.viewpager.widget.ViewPager
            android:id="@+id/viewpager"
            android:layout_width="436dp"
            android:layout_height="220dp"
            app:layout_constraintStart_toStartOf="parent"
            android:layout_marginStart="8dp"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            android:layout_marginEnd="8dp">

        </androidx.viewpager.widget.ViewPager>

    </androidx.constraintlayout.widget.ConstraintLayout>

 

그다음 ViewPagerAdapter를 만들어주구요

 

 

class ViewPagerAdapter(private val context : Context) : PagerAdapter() {

    private var layoutInflater : LayoutInflater? = null
    val Image = arrayOf(
        R.drawable.ai,
        R.drawable.css,
        R.drawable.html
    )


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

    override fun getCount(): Int {
        return Image.size
    }


    override fun instantiateItem(container: ViewGroup, position: Int): Any {
        layoutInflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
        val v = layoutInflater!!.inflate(R.layout.viewpager_activity, null)
        val image = v.findViewById<View>(R.id.imageview) as ImageView

        image.setImageResource(Image[position])
        val vp = container as ViewPager
        vp.addView(v , 0)


        return v

    }


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

 

나머지는 Activity에서 연결만 해주면 됩니다.

 

class MainActivity : AppCompatActivity() {

    internal lateinit var viewpager : ViewPager

    override fun onCreate(savedInstanceState: Bundle?) {

        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        viewpager = findViewById(R.id.viewpager) as ViewPager

        val adapter = ViewPagerAdapter(this)
        viewpager.adapter = adapter
        

        
    }
}

 

이렇게 하면 Imager Slider의 기능이 완료되었습니다!

'개발 > 안드로이드(Android-Kotlin)' 카테고리의 다른 글

ViewPager Tablayout  (0) 2019.09.26
ViewPager (Fragment Slider)  (0) 2019.09.26
안드로이드 xml 한방에 적용하기  (0) 2019.09.24
ConstraintLayout same width  (0) 2019.09.24
Android:name = ""  (0) 2019.08.28