diff options
author | Chet Haase <chet@google.com> | 2013-06-17 16:50:50 -0700 |
---|---|---|
committer | Chet Haase <chet@google.com> | 2013-06-20 15:35:04 -0700 |
commit | 6ebe3de331efd00ba23bc4191d4a82cfa4c39160 (patch) | |
tree | 8899ae2504fddbfbdaba69f85bc37f11e65ab022 /tests/TransitionTests/src/com | |
parent | cb64e3e6d33228221a3730e03292b2c1b2b8649b (diff) | |
download | frameworks_base-6ebe3de331efd00ba23bc4191d4a82cfa4c39160.zip frameworks_base-6ebe3de331efd00ba23bc4191d4a82cfa4c39160.tar.gz frameworks_base-6ebe3de331efd00ba23bc4191d4a82cfa4c39160.tar.bz2 |
Fix transitions on disappearing view hiearchies
Previously, Fade transitions did not work correctly on hirearchies; they
only handled individual views. in particular, they would side-effect all
fading views by removing them from their parent to fade them out in the
overlay of the scene root. This worked for the fade-out transition itself,
but caused problems when those same hierarchies were added back in and
another Fade was run on the hierarchy, because now all of the views inside
that parent node had been removed, so they didn't fade in at all.
The fix was to add logic in Visibility to detect when a disappearing
view was inside a hierarchy that was also disappearing, and to skip the
fade on the views inside that hierarchy, leaving only the top-most
disappearing view to be faded out, thus preserving the hierarchy under
that faded-out group.
Along the way, there were various cleanups, fixes, and refactorings in the
transition code, and slight API modifications.
Issue #9406371 Transitions: Removing view hierarchy not working correctly
Issue #9470255 Transitions: Separate different transitions by Scene Root
Change-Id: I42e80dac6097fee740f651dcc0535f2c57c11ebb
Diffstat (limited to 'tests/TransitionTests/src/com')
-rw-r--r-- | tests/TransitionTests/src/com/android/transitiontests/FadingHierarchy.java | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/TransitionTests/src/com/android/transitiontests/FadingHierarchy.java b/tests/TransitionTests/src/com/android/transitiontests/FadingHierarchy.java new file mode 100644 index 0000000..e0fe379 --- /dev/null +++ b/tests/TransitionTests/src/com/android/transitiontests/FadingHierarchy.java @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.transitiontests; + +import android.app.Activity; +import android.os.Bundle; +import android.view.View; +import android.view.ViewGroup; +import android.view.transition.Scene; +import android.view.transition.TransitionManager; +import android.widget.Button; + +public class FadingHierarchy extends Activity { + + ViewGroup mRemovingContainer, mContainer; + Button mRemovingButton; + boolean mVisible = true; + ViewGroup mInnerContainerParent; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.fading_hierarchy); + + mContainer = (ViewGroup) findViewById(R.id.container); + mRemovingContainer = (ViewGroup) findViewById(R.id.removingContainer); + mInnerContainerParent = (ViewGroup) mRemovingContainer.getParent(); + + mRemovingButton = (Button) findViewById(R.id.removingButton); + } + + public void sendMessage(View view) { + TransitionManager.beginDelayedTransition(mContainer, null); + if (mVisible) { + mInnerContainerParent.removeView(mRemovingContainer); + } else { + mInnerContainerParent.addView(mRemovingContainer); + } + mVisible = !mVisible; + } +} |