android - Android圆圈显示动画不流畅
问题描述
我正在使用圆形显示动画在同一页面中创建登录和注册,使用浮动操作按钮切换视图,将一个视图切换到另一个视图时非常滞后,
登录页面包含两个相对布局和一个浮动操作按钮,一个用于登录,另一个用于注册,当浮动操作按钮单击视图将切换到另一个,即登录到注册,反之亦然..我实现了,但它太滞后了我怎么能做到光滑的
在标签(大屏幕)中它工作得非常顺利(我正在为移动设备创建两个布局,另一个为标签创建)任何人都可以帮助我..这是我的代码..
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private void viewMenu() {
if (!isOpen) {
// int x = layoutContent.getRight();
// int y = layoutContent.getBottom();
int x = Math.round(fab.getX() + fab.getWidth() / 2);
int y = Math.round(fab.getY() - fab.getHeight());
int startRadius = 0;
int endRadius = (int) Math.hypot(layoutMain.getWidth(), layoutMain.getHeight());
fab.setBackgroundTintList(ColorStateList.valueOf(ResourcesCompat.getColor(getResources(),android.R.color.white,null)));
fab.setImageResource(R.drawable.ic_cross);
Animator anim = ViewAnimationUtils.createCircularReveal(layoutButtons, x, y, startRadius, endRadius);
anim.setInterpolator(new AccelerateDecelerateInterpolator());
layoutButtons.setVisibility(View.VISIBLE);
anim.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
// fst_view.setVisibility(View.GONE);
}
@Override
public void onAnimationEnd(Animator animator) {
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
});
anim.start();
isOpen = true;
} else {
// int x = layoutButtons.getRight();
// int y = layoutButtons.getBottom();
int x = Math.round(fab.getX() + fab.getWidth() / 2);
int y = Math.round(fab.getY() + fab.getHeight()/2) - toolbar.getHeight();
int startRadius = Math.max(layoutContent.getWidth(), layoutContent.getHeight());
int endRadius = 0;
fab.setBackgroundTintList(ColorStateList.valueOf(ResourcesCompat.getColor(getResources(),R.color.colorAccent,null)));
fab.setImageResource(R.drawable.ic_menu_camera);
// fst_view.setVisibility(View.VISIBLE);
Animator anim = ViewAnimationUtils.createCircularReveal(layoutButtons, x, y, startRadius, endRadius);
anim.setInterpolator(new AccelerateDecelerateInterpolator());
anim.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
}
@Override
public void onAnimationEnd(Animator animator) {
layoutButtons.setVisibility(View.GONE);
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
});
anim.start();
isOpen = false;
}
}
解决方案
推荐阅读
- sql - SQL:使用 Partion By 替代 Group By 方法
- arduino-c++ - 正面和负面的变化没有声明,它在之前的情况下非常高兴,同样的声明
- c++ - 神秘的 nullptr 添加到 std::unordered_map
- c++ - std::ofstream 是否保证在打开新文件时将关闭旧打开的文件?
- javascript - 在模态中自动完成其他字段
- javascript - HighCharts / HighStock 新增系列有共享工具提示和鼠标悬停效果问题
- rust - 如何将闭包与 Rust 宏中的参数匹配
- java - RSA 签名 Java 到 C#
- sockets - 如何通过我创建的套接字路由所有 OS X 流量?
- javascript - 每 n 小时在非活动浏览器选项卡上运行 Javascript 代码