반응형
ViewPager
설명
- 좌우로 스와이프 하며 View를 전환하는 AdapterView
- PagerAdapter를 구현하여 사용한다.
코드
activity_main.xml<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<androidx.viewpager.widget.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
undefinedcopy
view1.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="view1" />
</LinearLayout>
undefinedcopy
view2.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="view2" />
</LinearLayout>
undefinedcopy
view3.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="view3" />
</LinearLayout>
undefinedcopy
MainActivity
class MainActivity : AppCompatActivity() {
var viewPager: ViewPager? = null
val viewList = ArrayList<View>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
viewList.addAll(arrayOf(
layoutInflater.inflate(R.layout.view1, null),
layoutInflater.inflate(R.layout.view2, null),
layoutInflater.inflate(R.layout.view3, null)
))
viewPager = findViewById(R.id.viewPager)
viewPager?.adapter = CustomPagerAdapter()
viewPager?.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
override fun onPageScrollStateChanged(state: Int) {
Toast.makeText(baseContext, "onPageScrollStateChanged - $state", Toast.LENGTH_SHORT).show()
}
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
Toast.makeText(baseContext, "onPageScrolled - $position", Toast.LENGTH_SHORT).show()
}
override fun onPageSelected(position: Int) {
Toast.makeText(baseContext, "onPageSelected - $position", Toast.LENGTH_SHORT).show()
}
})
}
inner class CustomPagerAdapter : PagerAdapter() {
override fun isViewFromObject(view: View, obj: Any): Boolean {
return view == obj
}
override fun getCount(): Int {
return viewList.size
}
override fun instantiateItem(container: ViewGroup, position: Int): Any {
viewPager?.addView(viewList[position])
return viewList[position]
}
override fun destroyItem(container: ViewGroup, position: Int, obj: Any) {
viewPager?.removeView(obj as View)
}
}
}
undefinedcopy
참고
반응형
'Development > Android' 카테고리의 다른 글
[Android] Activity (0) | 2021.02.09 |
---|---|
[Android] RecyclerView (0) | 2021.02.09 |
[Android] Spinner (0) | 2021.02.09 |
[Android] ListView (0) | 2021.02.09 |
[Android] Layout (0) | 2021.02.09 |