碎片滑下动画 [英] Fragment Slide Down Animation

查看:98
本文介绍了碎片滑下动画的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在显示片段的应用程序。一旦用户点击该片段的按钮时,片断将下滑80%,显示低于另一片段。我遇到的问题是,当我按一下按钮碎片滑下80%,但是屏幕后只是重新只有第二个片段显示绘制。任何帮助吗?

我已经提供了单击按钮时运行code。和动画文件

 公共无效的onClick(视图v){
    // TODO自动生成方法存根    开关(v.getId())
    {
        案例R.id.button1:            ProfileFragment亲=新ProfileFragment();
    ((MainActivity)getActivity())TRA =((MainActivity)())fragmentManager.beginTransaction()。;             ((MainActivity)getActivity())mFragmentStack.add(pro.toString());
   。getActivity())tra.setCustomAnimations(R.anim.slide_in_top,R.anim.slide_out_bottom);
             ((MainActivity)getActivity())tra.replace(R.id.fragment_swap,亲)。             ((MainActivity)getActivity())tra.addToBackStack(pro.toString())。
             ((MainActivity)getActivity())tra.commit();            打破;    }}

Slide_out_bottom:

 <?XML版本=1.0编码=UTF-8&GT?;
         <设置的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android>            <翻译
               机器人:时间=900
               机器人:fromYDelta =0%
               机器人:toYDelta =80%
            />
      < /集>

slide_in_top:

 <?XML版本=1.0编码=UTF-8&GT?;
<设置的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android><翻译
    机器人:时间=900
    机器人:fromYDelta =0%
    机器人:toYDelta =0%/>
< /集>


解决方案

在我看来像你的 slide_in_top 动画文件有错误。你会从0%到0%。或者,换句话说,不动的。如果你不希望一个动画,你可以上指定0 setCustomAnimations()调用像这样:

setCustomAnimations(0,R.anim.slide_out_bottom);

此外,理智的爱,请不要让铸造getActivity到MainActivity。相反,像这样做:

  ProfileFragment亲=新ProfileFragment();MainActivity主要=(MainActivity)getActivity();main.mFragmentStack.add(pro.toString());main.fragmentManager.beginTransaction()
    .setCustomAnimations(R.anim.slide_in_top,R.anim.slide_out_bottom)
    .replace(R.id.fragment_swap,PRO)
    .addToBackStack(pro.toString())
    。承诺();

您可能也想用就在MainActivity公共字段变量存储事务重新考虑。这是不好的封装,在这种情况下,它看起来像它的不必要的。当然,mFragmentStack不应该是公职直接访问。在preFIX的一个含义 M 是,它是私有的。

i'm working on a app that displays a fragment. Once the user clicks a button on the fragment, that fragment will slide down 80% showing another fragment below. The problem i'm having is that when i click the button the fragment slides down 80% but after the screen is just re drawn with only the second fragment showing. Any help?

I have provided the code that runs when the button is clicked. and the animation files

 public void onClick(View v) {
    // TODO Auto-generated method stub

    switch(v.getId())
    {
        case R.id.button1:

            ProfileFragment pro = new ProfileFragment();


    ((MainActivity) getActivity()).tra =((MainActivity)     ()).fragmentManager.beginTransaction();                         

             ((MainActivity) getActivity()).mFragmentStack.add(pro.toString());
   getActivity()).tra.setCustomAnimations(R.anim.slide_in_top, R.anim.slide_out_bottom);
             ((MainActivity) getActivity()).tra.replace(R.id.fragment_swap,pro);

             ((MainActivity) getActivity()).tra.addToBackStack(pro.toString());
             ((MainActivity) getActivity()).tra.commit();

            break;

    }

}

Slide_out_bottom:

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

            <translate
               android:duration="900"
               android:fromYDelta="0%"
               android:toYDelta="80%"
            />


      </set>

slide_in_top:

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

<translate
    android:duration="900"
    android:fromYDelta="0%"
    android:toYDelta="0%" />
</set>

解决方案

It looks to me like your slide_in_top animation file has an error. You're going from 0% to 0%. Or, in other words, don't move at all. If you don't want an animation, you can just specify 0 on the setCustomAnimations() call like so:

setCustomAnimations(0, R.anim.slide_out_bottom);

Also, for the love of sanity, please don't keep casting the getActivity to MainActivity. Instead do it like this:

ProfileFragment pro = new ProfileFragment();

MainActivity main = (MainActivity) getActivity();

main.mFragmentStack.add(pro.toString());

main.fragmentManager.beginTransaction()
    .setCustomAnimations(R.anim.slide_in_top, R.anim.slide_out_bottom)
    .replace(R.id.fragment_swap,pro)
    .addToBackStack(pro.toString())
    .commit();

You might also want to reconsider using a public field variable on the MainActivity for storing the transaction. It isn't good encapsulation and in this case it looks like it's unnecessary. Certainly, mFragmentStack should not be directly accessible by being public. One meaning of the prefix m is that it's private.

这篇关于碎片滑下动画的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆