如何在Android上实现这样的按钮(3D-ish)?

时间:2015-08-26 11:22:35

标签: android button

我想实现一个类似于" Big Web Quiz App" (Link to Play Store)

]

对我来说,它似乎没有使用某种OpenGL,我找不到任何关于这些分解代码的引用。也许是一个形象?

提前致谢

更新:我上传了一段视频,清楚地说明有转换,它不是按下的按下按钮。 LINK

2 个答案:

答案 0 :(得分:2)

你可以通过使用帧动画来实现这一点,就像从少量图像构建短视频一样。

animation-list是一个选项,请详细了解here

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
                android:oneshot="true">

    <item
        android:duration="500"
        android:drawable="@drawable/ic_heart_0"/>

    <item
        android:duration="500"
        android:drawable="@drawable/ic_heart_25"/>

    <item
        android:duration="500"
        android:drawable="@drawable/ic_heart_50"/>

    <item
        android:duration="500"
        android:drawable="@drawable/ic_heart_75"/>

    <item
        android:duration="500"
        android:drawable="@drawable/ic_heart_100"/>

</animation-list>

自2015年至2016年8月的新闻lol

今天有更多选项可以解决此问题,您可以使用AnimatedVectorDrawableObjectAnimator或使用在AnimatedVectorDrawable之上开发的android-pathview库,它可以让您的生活更轻松。但无论如何,你必须付出一些努力来达到预期的效果。

答案 1 :(得分:0)

关闭袖口,这似乎需要一个自定义小部件。

小部件本身会占用整个空间,从前景的左上角到3D背景的右下角。小部件的自定义onDraw()将呈现前景,可能是TextView的形式,左侧是复合可绘制的。 onDraw()还会渲染形成3D效果的阴影平行四边形,以消耗窗口小部件前景和右下角之间的其余空间。

在点击事件中,您将使用动画制作器框架更改窗口小部件的大小,将其锚定在右下角。动画会将大小更改为最小位置,然后将其反转回原始大小(假设此按钮的行为类似于Button,而不是某种CompoundButton)。 onDraw()逻辑应该能够处理这个问题,将前景呈现在正确的位置并相应地减小平行四边形的大小。

这是一个有根据的猜测,因为我从来没有尝试过这样的事情。如果你想通过反转3D效果来支持RTL(前景向下移动到左边而不是向下移动),它也会变得复杂。