android - 浮动动作按钮动画仅在第一次单击时起作用
问题描述
fab antimation 仅在我第一次单击时起作用。之后,当我单击按钮时,单击侦听器可以正常工作并显示工厂但没有动画。我正在片段上创建它。mAddFab
是显示其他工厂的主要按钮mRequestFab
,mDonateFab
是在单击按钮后显示的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;
}
}
解决方案
我找到了解决方案。问题出在我用来制作动画的功能上,我用 .setAnimation()
更改了它startAnimation()
。这两个功能之间的主要区别是 -
设置动画-
当视图被添加到 viewGroup 时,动画将被调用,当视图被添加时,动画将不会被调用
开始动画-
即使添加了视图,动画也会一直被调用。
推荐阅读
- django - 在 Django 框架中,我的函数 Register 捕获了更多错误
- android - Samsung / Android 8.0 Oreo 更新导致应用程序崩溃?(Xamarin.Forms 应用程序)
- php - Unicode 符号变成“????????????” 在 PHP 端,但数据是 NVARCHAR 并且 SELECT 显示正确的数据
- cordova - 你调用的对象是空的。科尔多瓦窗户 10
- oracle-sqldeveloper - 根据动态日期过滤数据
- javascript - onChange 没有在反应 js 中触发
- php - 每微秒发送一次推送通知
- javascript - 无法理解我从教程网站获得的 JavaScript 代码
- spring - Spring boot:我收到 whitelabel 错误 pae 而不是 view
- c# - dispaly image from remote server on the page ASP.Net MVC