Всем привет! Подскажите по такому вопросу. Разрабатываю под 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)
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть ли библиотеки с конкурентными коллекциями, которые работают быстрее стандартного пакета javautil
У нас из обработки 1С раньше все работала, пару недель назад перестала отображать точки на карте
Выполняю тестовые задания в книге по Java и не могу разобраться: если интерфейс объявлен в одном файле с классом компилятор пытается найти...
Есть игра на JavaFXИ я уже несколько дней пытаюсь бороться с это проблемой