如何使用支持库 23 修复缩放的 FloatingActionButton 上的阴影

Posted

技术标签:

【中文标题】如何使用支持库 23 修复缩放的 FloatingActionButton 上的阴影【英文标题】:How to fix shadow on scaled FloatingActionButton using support library 23 【发布时间】:2016-03-23 19:16:42 【问题描述】:

我在 KitKat 设备上使用支持库 23 有一个 FAB。我正在缩放按钮以获得过渡效果(通过将其包含在调整大小视图中)。这基本上与阴影不同,阴影以一种奇怪的形式出现(参见屏幕截图中缩放的红色按钮,蓝色按钮为全尺寸)。

实际发生的情况是阴影位于 4 个“角”位图中,这些位图重叠以产生奇怪的效果。

有谁知道如何解决这个问题?

【问题讨论】:

可能是,缩放时尝试增加fab的高度。 【参考方案1】:

这看起来很有趣!

不幸的是,我没有成功尝试重现该问题 - 如果您能提供您运行的代码,那就太好了 - 但这是我为动画和缩放浮动操作按钮编写的代码,如下所示:

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.animate().scaleX(0.1f).scaleY(0.1f).setDuration(100).setListener(
    new Animator.AnimatorListener() 
        @Override
        public void onAnimationStart(Animator animator) 

        @Override
        public void onAnimationEnd(Animator animator) 
            fab.setBackgroundTintList(getResources().getColorStateList(R.color.colorPrimary, getTheme()));
            fab.setImageDrawable(getResources().getDrawable(R.drawable.common_full_open_on_phone, getTheme()));

            fab.animate().scaleX(2).scaleY(2).setListener(null).setDuration(200).start();
        

        @Override
        public void onAnimationCancel(Animator animator) 

        @Override
        public void onAnimationRepeat(Animator animator) 
    ).start();

当然,可以调整和改进特定的动画速度和效果。 我希望,它会有所帮助。

【讨论】:

感谢您的回答。我通过调整包含视图的大小以不同的方式为按钮设置动画 - 不确定这是否会产生任何影响。最后,由于时间限制,我最终使用反射来破解动画期间阴影的去除。不是很好,但我唯一能做的就是让它看起来好一半!【参考方案2】:

使用缩放属性来调整浮动按钮的大小。阴影会很好

<android.support.design.widget.FloatingActionButton
    android:layout_
    android:layout_
    android:scaleType="center"
    android:scaleX="0.75"
    android:scaleY="0.75"/>

【讨论】:

以上是关于如何使用支持库 23 修复缩放的 FloatingActionButton 上的阴影的主要内容,如果未能解决你的问题,请参考以下文章

如何固定floatingactionbutton位置

MySQL主备库数据一致性校验及修复

如何修复 iPhone 横向放大/缩小图像的大小? [关闭]

如何在 balkangraph orgchart 中“修复缩放功能”错误?

如何修复 FabricJS 中 Inkscape SVG 的缩放和旋转?

如何使用通用 Django 代码库托管 50 个域/站点