自5月以来,Google已在其网站上更新了其Material Design指南。我在其中一个名为Feature discovery的新部分中看到了一个有趣且酷炫的设计模式。
我想实施the animation for 'discovering' the Navigation Drawer button。导航抽屉和浮动操作按钮的最后一次Google Fit更新中有类似的动画。
与往常一样,对于Android动画,Google提供了一个很棒且非常棒的UI指南,但我们没有任何进一步的信息可以为我们自己的应用程序开发它。
您知道是否有Android库的原生解决方案来实现这些动画?如果是,它是否适用于Android 5.0以下(API 21) - 它可以高于Android 4.1 +?
编辑:我制作了一个Github项目来实现相同的动画。您可以在此处找到它:https://github.com/Guimareshh/Feature-discovery-animations
谢谢!
答案 0 :(得分:8)
您需要制作自定义动画,否则您可以使用Ripple Effect + Reveal并将其设置为导航抽屉图标,
void enterReveal() {
// previously invisible view
final View myView = findViewById(R.id.my_view);
// get the center for the clipping circle
int cx = myView.getMeasuredWidth() / 2;
int cy = myView.getMeasuredHeight() / 2;
// get the final radius for the clipping circle
int finalRadius = Math.max(myView.getWidth(), myView.getHeight()) / 2;
// create the animator for this view (the start radius is zero)
Animator anim =
ViewAnimationUtils.createCircularReveal(myView, cx, cy, 0, finalRadius);
// make the view visible and start the animation
myView.setVisibility(View.VISIBLE);
anim.start();
}
答案 1 :(得分:4)
回答您的问题,Google总是会提供有趣的Widget组件的新示例。其中大部分内容仅会添加到新版Android中。这有不同的原因。例如,因为新的小部件使用资源并且仅在新版本的Android上工作,因此具有更新的UI引擎。还有其他......
这就是为什么没有Google官方的Reveal动画,它仅适用于Android 5.0&gt ;.
但是有很多反向运动:
查看所有可用的内容,而不是针对Android Awesome Android UI的官方后退。
当谷歌推出Android Material时 - 没有任何库可用于所有这些元素。但在短时间内,由不同的开发人员编写了许多有用的库。但在这种流行之后,Google会为这些小部件引入所有库。
因此,没有向后移动,很可能谷歌不会引入这些小部件。但是听你的问题,我认为你可以做到这一点,而不是使用上面链接的官方后端。
答案 2 :(得分:4)
我还在自定义视图中创建了此DesignPattern。你可以找到它here。请注意,这是我第一次发布的自定义视图,它仍在开发中(因此它们可能存在一些错误,并且缺少一些文档)但它应该足以满足日常使用。
要使用它,请将库添加到依赖项中:
compile 'com.cilenco.libraries:featurediscovery:1.0.2' or
compile 'com.cilenco.libraries:featurediscovery:+' always newest version
之后,您可以像这样创建DiscoveryView。检查所有其他功能,以调整外观和对视图的控制。
DiscoveryView discoveryView = new DiscoveryView.Builder(context, view)
.setPrimaryText(R.string.header)
.setSecondaryText(R.string.description)
.setOnClickListener(this)
.build();
discoveryView.show();
为了使这个视图更好,如果您发现任何错误或有任何新想法,请随时报告问题并向存储库发出拉取请求。