Всем привет! Подскажите по такому вопросу. Разрабатываю под android на Kotlin. Есть ViewPager, при перелистывании плавно меняется задний фон. Цвета заднего фона беру из colors. Все работает, но мне нужно вместо 3-ех цветов использовать 3 своих градиента, которые храниться в drawable. Кто сталкивался с подобным, подскажите, пожалуйста.
Код главной активности:
class MainActivity : AppCompatActivity() {
private var mPager: ViewPager? = null
private var mPagerAdapter: PagerAdapter? = null
private var colors: Array<Int>? = null
private val argbEvaluator = ArgbEvaluator()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
mPager = findViewById(R.id.pager)
mPagerAdapter = ScreenSlidePagerAdapter(supportFragmentManager)
mPager!!.adapter = mPagerAdapter
mPager!!.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
if (position < mPagerAdapter!!.count - 1 && position < (colors?.size ?: 0) - 1) {
mPager!!.setBackgroundColor(
argbEvaluator.evaluate(
positionOffset,
colors?.get(position),
colors?.get(position + 1)
) as Int
)
} else {
colors?.get(colors!!.size - 1)?.let { mPager!!.setBackgroundColor(it) }
}
}
override fun onPageSelected(position: Int) {
}
override fun onPageScrollStateChanged(state: Int) {
}
})
setUpColors()
}
private fun setUpColors() {
val page1Bg = ContextCompat.getColor(applicationContext, R.color.Page1Bg)
val page2Bg = ContextCompat.getColor(applicationContext, R.color.Page2Bg)
val page3Bg = ContextCompat.getColor(applicationContext, R.color.Page3Bg)
colors = arrayOf(page1Bg, page2Bg, page3Bg)
}
private inner class ScreenSlidePagerAdapter(fm: FragmentManager) : FragmentStatePagerAdapter(fm) {
override fun getItem(position: Int): Fragment {
return ScreenSlidePageFragment()
}
override fun instantiateItem(container: ViewGroup, position: Int): Any {
return super.instantiateItem(container, position)
}
override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
super.destroyItem(container, position, `object`)
}
override fun getCount(): Int {
return NUM_PAGES
}
}
companion object {
private val TAG = MainActivity::class.java.name
private val NUM_PAGES = 3
}
}
Сам фрагмент - ScreenSlidePageFragment:
class ScreenSlidePageFragment : Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_screen_slide_page, container, false)
}
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей