首页 > 解决方案 > 如何在 Kotlin 的 viewPager 中添加动画?

问题描述

**这是我的活动寻呼机**

private const val TAG = "CarpagerActivity"
var carList: ArrayList<Car>? = null
var mSerializer : JsonSerializer? = null
class CarPagerActivity : AppCompatActivity(){
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_car_pager)

    mSerializer = JsonSerializer("CarTrinkApp.json",
        applicationContext)

    try {
        carList = mSerializer!!.load()
    } catch (e: Exception) {
        carList = ArrayList()
        Log.e("Error loading cars: ", "", e)
    }

    // create list of fragments, one fragment for each car
    var carFragmentList = java.util.ArrayList<Fragment>()
    for (car in carList!!) {
        carFragmentList.add(ShowCarFragment.newInstance(car))
    }


    val pageAdapter = CarPagerAdapter(supportFragmentManager, carFragmentList)
    findViewById<ViewPager>(R.id.pager_cars).adapter = pageAdapter
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    val myPost = data?.getIntExtra("adapterPosition", 123)
    println(myPost)
    println("adadadada")
}
class CarPagerAdapter(fm: FragmentManager, private val carFragmentList: ArrayList<Fragment>) : FragmentPagerAdapter(fm, FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {
    override fun getCount() = carFragmentList.size
    override fun getItem(position: Int) = carFragmentList[position]

}

}

[![我想给这个过渡添加动画][1]][1]

**以及片段布局中的此页面** [1]:https ://i.stack.imgur.com/qFB3b.png

标签: javaandroidkotlin

解决方案


褪色动画,请参见参考这里

viewPager.setPageTransformer(false) { page, position ->
        // do transformation here
        page.alpha = 0f
        page.visibility = View.VISIBLE

        // Start Animation for a short period of time
        page.animate()
            .alpha(1f).duration =
            page.resources.getInteger(android.R.integer.config_longAnimTime)
                .toLong()

    }

或者

viewPager.setPageTransformer(false) { page, position ->
        // do transformation here
        page.rotationY = position * -70

    }

推荐阅读