10

我想在 Android 操作系统上单击按钮时实现倾斜效果。

倾斜效果:并非整个按钮都被视为按下。只有发生触摸事件的部分似乎被按下。

这在Android上很容易吗?

在此处输入图像描述

4

2 回答 2

7

一种简单的方法是使用画布绘制来绘制 4 边形状。

考虑每个 4 个角。“未触及”的矩形将是全尺寸,触摸的矩形会更小。

触摸和未触摸的盒子

您只需要使用为矩形的每个部分计算的点来绘制四边形。您可以获取触摸位置,然后计算出每个点的“权重”。

要计算每个角,您需要计算出多少“权重”赋予触摸坐标,以及多少“权重”赋予未触摸坐标。如果您触摸左上角,该角将使用 100% 的触摸坐标,而其他三个角都将使用未触摸的坐标。

触摸左上角

如果你触摸顶部中间,你会得到这样的形状:

触及顶部中间

我们可以通过计算您的触摸距离角点的距离来计算任何触摸点的角点

触及左下角

    float untouchedXWeight1 = Math.abs(xt - x1)/width;
    //maximum of 1, minimum of 0

    float untouchedYWeight1 = Math.abs(yt - y1)/height;

    float untouchedWeight1 = (untouchedXWeight1 + untouchedYWeight1)/2;
    //also maximum of 1, minimum of 0

    float touchedWeight1 = 1 - untouchedWeight1;

因此,使用这些权重,您可以计算该角的 x 和 y 位置:

x1 = xUntouched1 * untouchedWeight + xTouched1 * touchedWeight1;
y1 = yUntouched1 * untouchedWeight + yTouched1 * touchedWeight1;

然后对其他 3 个角进行类似操作。

于 2013-03-20T06:02:03.867 回答
3

我在这里创建了初稿:https ://github.com/flavienlaurent/TiltEffect

在第二步中,我将使它与 Button 等一起使用。

不幸的是,我没有使用 HalR 的非常好的(但对我来说太数学了)答案

于 2013-07-18T16:26:51.007 回答