2016-07-06 31 views
2

简短的问题:动画效果片段导致其他以“跳”

在使用上FragmentTransactions动画,我怎么能动画与动漫其他意见?

长的问题:

嗨,

我是新来的片段等等,我想它们的动画保险业监督单一的活动,所以我创建了下面的XML文件的活动:

<LinearLayout 
    android:id="@+id/run_select_fragment_container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:keepScreenOn="true" 
    android:orientation="vertical"> 


    <FrameLayout 
     android:id="@+id/activity_run_search_fragmentHeaderPlaceholder" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

    <FrameLayout 
     android:id="@+id/activity_run_search_fragmentPlaceholder" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1"/> 

</LinearLayout> 

然后我definded的RES /动画文件,我想使用的动画:

fade_in_from_t op.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shareInterpolator="false"> 

    <alpha android:fromAlpha="0.0" android:toAlpha="1.0" 
     android:duration="@android:integer/config_longAnimTime" /> 

    <translate 
     android:fromXDelta="0%" android:toXDelta="0%" 
     android:fromYDelta="-100%" android:toYDelta="0%" 
     android:duration="1000" /> 
</set> 

fade_in_from_bottom.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shareInterpolator="false"> 

    <alpha android:fromAlpha="0.0" android:toAlpha="1.0" 
     android:duration="@android:integer/config_longAnimTime" /> 

    <translate 
     android:fromXDelta="0%" android:toXDelta="0%" 
     android:fromYDelta="100%" android:toYDelta="0%" 
     android:duration="1000"/> 
</set> 

fade_out_to_bottom.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shareInterpolator="false"> 
    <alpha 
     android:duration="@android:integer/config_longAnimTime" 
     android:fromAlpha="1.0" 
     android:toAlpha="0.0" /> 

    <translate 
     android:duration="700" 
     android:fromXDelta="0%" 
     android:fromYDelta="0%" 
     android:toXDelta="0%" 
     android:toYDelta="100%" /> 
</set> 

fade_out_to_top.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shareInterpolator="false"> 

    <alpha 
     android:duration="@android:integer/config_longAnimTime" 
     android:fromAlpha="1.0" 
     android:toAlpha="0.0" /> 

    <translate 
     android:duration="700" 
     android:fromXDelta="0%" 
     android:fromYDelta="0%" 
     android:toXDelta="0%" 
     android:toYDelta="-100%" /> 
</set> 

详细地: 下部片段C通常会列出几个项目。我根据切换按钮搜索的内容来更改片段。那没问题。在加载数据

首先显示装载片段:当在特定的一个ListEntry的headerFragment用户点击将在动画中填充有附加的数据并显示使用褪色等

final RSBaseFragment headerFragment = (RSBaseFragment) getSupportFragmentManager().findFragmentById(R.id.activity_run_search_fragmentHeaderPlaceholder); 

FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
LoadingFragment fragment = new LoadingFragment(); 

if (headerFragment != null) { 
    ft.setCustomAnimations(R.anim.fade_in_from_bottom, R.anim.fade_out_to_top, R.anim.fade_in_from_top, R.anim.fade_out_to_bottom); 
    ft.replace(R.id.activity_run_search_fragmentHeaderPlaceholder, fragment, HEADER_FRAGMENT_TAG); 
} else { 
    ft.setCustomAnimations(R.anim.fade_in_from_top, R.anim.fade_out_to_bottom, R.anim.fade_in_from_bottom, R.anim.fade_out_to_top); 
    ft.add(R.id.activity_run_search_fragmentHeaderPlaceholder, fragment, HEADER_FRAGMENT_TAG); 
} 
ft.commit(); 

后数据加载显示在一个新的片段的数据代替加载片段

HeaderFragment fragment = new HeaderFragment(); 
ft.setCustomAnimations(R.anim.fade_in_from_top, R.anim.fade_out_to_bottom, R.anim.fade_in_from_bottom, R.anim.fade_out_to_top); 
ft.replace(R.id.activity_run_search_fragmentHeaderPlaceholder, fragment, HEADER_FRAGMENT_TAG); 

问题IST该headerfragment是衰落和从顶部或底部方向滑动,而该片段保持列表视图IST“跳跃”到的下Y Ť他甚至在那里之前就是头片碎片。我如何动画下面的片段与标题片段一起滑动以创建流畅的用户体验?

对不起,长期以来的问题。如果搜索了3天,并没有发现任何帮助我的问题。

回答

0

我几乎被添加到的LinearLayout(run_select_fragment_container)

android:animateLayoutChanges="true" 

而且在活动的OnCreate我已经这样做了

LinearLayout mainLayout = (LinearLayout) findViewById(R.id.run_select_fragment_container); 
LayoutTransition layoutTransition = mainLayout.getLayoutTransition(); 
layoutTransition.enableTransitionType(LayoutTransition.CHANGING); 
解决它
相关问题