Как повернуть ImageView вместе с каруселью - PullRequest
0 голосов
/ 25 апреля 2019

Я использую библиотеку gtomato / carouselview для создания карусели.Сама карусель сделана и работает.Но у меня есть ImageView рядом с каруселью, и я бы хотел, чтобы он вращался / трансформировался вместе с каруселью;скорее он вращается по часовой стрелке, против часовой стрелки или останавливается, он должен следовать за каруселью.

Карусель выглядит так:

enter image description here

Поскольку это вращается, изображение должно вращаться вместе с ним.

Я попробовал следующее без удачи.Изображение поворачивается по часовой стрелке примерно на 25 градусов, и все.Даже если я вращаю карусель против часовой стрелки, изображение поворачивается по часовой стрелке примерно на 25 градусов.Также делает то же самое, когда я «подбрасываю» карусель для непрерывного вращения.

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        // Inflate the layout for this fragment
        var v = inflater.inflate(R.layout.fragment_carousel, container, false)

        carousel = v.findViewById(R.id.carousel)
        cylinder = v.findViewById(R.id.cylinder)

        carousel?.transformer = WheelViewTransformer()
        carousel?.adapter = CarouselAdapter()
        carousel?.isInfinite = true
        carousel?.gravity = Gravity.CENTER_HORIZONTAL

        carousel?.setOnScrollListener(object: CarouselView.OnScrollListener() {
            override fun onScrollBegin(carouselView: CarouselView?) {

                super.onScrollBegin(carouselView)

                var scroll = carouselView?.currentOffset
                var rotPercentage = scroll!! / carouselView?.adapter!!.itemCount

                var r = cylinder?.rotation

                cylinder?.animate()!!.rotationBy(((2 * Math.PI -rotPercentage)).toFloat())
            }
        })

        return v
}

С iOS и iCarousel я могу сделать следующее, и она работает соответственно:

func carouselDidScroll(_ carousel: iCarousel) {
    let scroll: CGFloat = carousel.scrollOffset
    let rotPercentage = scroll / CGFloat(carousel.numberOfVisibleItems)
    _cylinderImage.transform = CGAffineTransform(rotationAngle: 2 * .pi * -rotPercentage) 
}

1 Ответ

0 голосов
/ 23 мая 2019

Следующая библиотека ниже работает лучше.Поставляется с возможностью добавить фоновое изображение в карусель.

https://github.com/LukeDeighton/WheelView

...