浮动动作按钮动画仅在第一次点击时有效

时间:2021-05-08 22:50:00

标签: android animation floating-action-button

fab 动画仅在我第一次点击时有效。之后,当我单击按钮时,单击侦听器工作并且工厂显示但没有动画。我正在片段上创建它。 mAddFab 是显示其他晶圆厂的主要按钮,mRequestFabmDonateFab 是点击 mAddFab 按钮后显示的按钮。告诉我是否需要动画文件

 public class NameFragment extends Fragment {
    
        private FloatingActionButton mAddFab, mRequestFab, mDonateFab;
    
        private Animation mFabOpenAnim, mFabCloseAnim, rotateOpen, rotateClose;
    
        private boolean isOpen;
        private Context context;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            context = getContext();
    
            super.onCreate(savedInstanceState);
    
    
            mFabOpenAnim = AnimationUtils.loadAnimation(context, R.anim.fab_open_anim);
            mFabCloseAnim = AnimationUtils.loadAnimation(context, R.anim.fab_close_anim);
            rotateOpen = AnimationUtils.loadAnimation(context, R.anim.rotate_open_anim);
            rotateClose = AnimationUtils.loadAnimation(context, R.anim.rotate_close_anim);
    
            isOpen = false;
    
        }
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            final View view = inflater.inflate(R.layout.fragment_plasma, container, false);
            RecyclerView recyclerView = view.findViewById(R.id.recycler_view);
            RecyclerViewAdapter adapter = new RecyclerViewAdapter();
            recyclerView.setAdapter(adapter);
            recyclerView.setLayoutManager(new LinearLayoutManager(context));
    
            mAddFab = view.findViewById(R.id.addbtn);
            mRequestFab = view.findViewById(R.id.requestbtn);
            mDonateFab = view.findViewById(R.id.donatebtn);
    
            mAddFab.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                    if(isOpen){
                        mAddFab.setAnimation(rotateClose);
                        mRequestFab.setAnimation(mFabCloseAnim);
                        mDonateFab.setAnimation(mFabCloseAnim);
    
    
                        mRequestFab.setVisibility(View.INVISIBLE);
                        mDonateFab.setVisibility(View.INVISIBLE);
    
                        isOpen = false;
                    } else {
                        mAddFab.setAnimation(rotateOpen);
                        mDonateFab.setAnimation(mFabOpenAnim);
                        mRequestFab.setAnimation(mFabOpenAnim);
    
                        mDonateFab.setVisibility(View.VISIBLE);
                        mRequestFab.setVisibility(View.VISIBLE);
    
                        isOpen = true;
                    }
    
                }
            });
            return view;
        }
    }

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。问题在于我用来做动画的函数是 bq-results-YYYYMMDD-HHMMSS-<something>,我已经用 setAnimation() 改变了它。这两个函数之间的主要区别是 -

设置动画-

当视图被添加到viewGroup时,动画会被调用,当视图被添加时,动画不会被调用

开始动画-

即使添加了视图,动画也会一直被调用。

相关问题