【问题标题】:floating action button animation works only on first click浮动动作按钮动画仅在第一次单击时起作用
【发布时间】:2021-07-30 19:37:00
【问题描述】:

fab antimation 仅在我第一次点击时起作用。之后,当我单击按钮时,单击侦听器可以正常工作并显示工厂但没有动画。我正在片段上创建它。 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;
        }
    }

【问题讨论】:

    标签: android animation floating-action-button


    【解决方案1】:

    我找到了解决方案。问题在于我用来制作动画的函数是setAnimation(),我已经用startAnimation()对其进行了更改。这两个函数之间的主要区别是-

    SetAnimation-

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

    开始动画-

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-14
      • 2015-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多