前言本文主要给大家介绍了关于Android如何实现移动小球和CircularReveal页面切换动画的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。效果图如下是在fragment中跳转activity实现的效果,
前言
本文主要给大家介绍了关于Android如何实现移动小球和CircularReveal页面切换动画的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
效果图如下
是在fragment中跳转activity实现的效果,fragment跳fragment,activity跳activity类似~~
实现过程
重写Fab的onTouchListener()
floatingActionButton.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: downX = ev.getX(); downY = ev.getY(); isClick = true; break; case MotionEvent.ACTION_MOVE: isClick = false; moveX = ev.getX(); moveY = ev.getY(); int offsetX = (int) (moveX - downX); int offsetY = (int) (moveY - downY); //这里使用了setTranslation来移动view。。。尝试过layout。不知道为什么fragment切换回来的时候会恢复原位 floatingActionButton.setTranslationX(floatingActionButton.getTranslationX() + offsetX); floatingActionButton.setTranslationY(floatingActionButton.getTranslationY() + offsetY); break; case MotionEvent.ACTION_UP: //用来触发点击事件 if (isClick) { startAct(); return false; } //用来判断移动边界 if (floatingActionButton.getX() < 0) { floatingActionButton.setX(0); } if (floatingActionButton.getX() + floatingActionButton.getWidth() > ScreenUtil.getScreenWidth(getContext())) { floatingActionButton.setX(ScreenUtil.getScreenWidth(getContext()) - floatingActionButton.getWidth()); } if (floatingActionButton.getY() < titleHeight) { floatingActionButton.setY(0); } if (floatingActionButton.getY() + floatingActionButton.getHeight() + titleHeight > getActivity().findViewById(R.id.activity_main_mainLl).getHeight() - getActivity().findViewById(R.id.fc_rg).getHeight()) { floatingActionButton.setY(getBottomY()); } break; } return true; } private void startAct() { //跳转Activity,传递动画参数 Intent intent = new Intent(getActivity(), CheckWorkActivity.class); intent.putExtra("x", (int) floatingActionButton.getX() + floatingActionButton.getWidth() / 2); intent.putExtra("y", (int) floatingActionButton.getY() + floatingActionButton.getHeight() / 2); intent.putExtra("start_radius", floatingActionButton.getWidth() / 2); intent.putExtra("end_radius", DialogFragment.this.view.getHeight()); startActivity(intent); } });
--结束END--
本文标题: Android实现移动小球和CircularReveal页面切换动画实例代码
本文链接: https://lsjlt.com/news/221100.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0