Почему при переходе между сценами изображения обрезаются? - PullRequest
0 голосов
/ 05 июня 2019

У меня есть переход сцены, определенный для анимации одного макета в другой.Анимация входа работает просто отлично, в то время как выход из нее выглядит так, как будто представления обрезаются по границам конечного макета.Как мне это исправить?

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val sceneRoot = findViewById<ViewGroup>(R.id.scene_root)

    val fabCompactViewGroup = layoutInflater.inflate(R.layout.fab_menu_compact, sceneRoot, false) as ViewGroup
    val fabExpandedViewGroup = layoutInflater.inflate(R.layout.fab_menu_expanded, sceneRoot, false) as ViewGroup

    fabCompactScene = Scene(sceneRoot, fabCompactViewGroup)
    fabExpandedScene = Scene(sceneRoot, fabExpandedViewGroup)

    revealManager = TransitionInflater.from(this).inflateTransition(R.transition.fab_reveal_transition)
    dismissManager = TransitionInflater.from(this).inflateTransition(R.transition.fab_dismiss_transition)

    currentScene = fabCompactScene

    fabCompactScene?.let { TransitionManager.go(it, dismissManager) }

    fabCompactViewGroup.findViewById<FloatingActionButton?>(R.id.fab_compact)?.setOnClickListener(this)
    fabExpandedViewGroup.findViewById<FloatingActionButton?>(R.id.fab_compact)?.setOnClickListener(this)
    fabExpandedViewGroup.findViewById<FloatingActionButton?>(R.id.fab_expanded1)?.setOnClickListener {
        Toast.makeText(this, "Expanded 1 Clicked", Toast.LENGTH_SHORT).show()
    }
}

override fun onClick(v: View?) {
    if(currentScene == fabCompactScene) {
        currentScene = fabExpandedScene
        fabExpandedScene?.let { TransitionManager.go(it, revealManager) }
    } else {
        currentScene = fabCompactScene
        fabCompactScene?.let { TransitionManager.go(it, dismissManager) }
    }
}

FAB Transition GIF

1 Ответ

1 голос
/ 06 июня 2019

Это происходит из-за родительской ViewGroup анимации просмотров.ViewGroup по умолчанию не рисует части потомков, которые находятся за пределами родительских границ.Чтобы исправить это, добавьте эти строки в родительские ViewGroup анимационных представлений

android:clipChildren="false"
android:clipToPadding="false"

или программно

viewGroup.setClipChildren(false);
viewGroup.setClipToPadding(false);
...