如何在Windows Phone上实现Android上的倾斜效果?

时间:2013-03-16 14:54:30

标签: android android-button

我希望在Android操作系统上点击按钮时实现倾斜效果。

倾斜效果:不会将整个按钮视为按下。只有触摸事件发生的部分才会被按下。

这在Android上很容易实现吗?

enter image description here

2 个答案:

答案 0 :(得分:7)

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

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

Touched and untouched boxes

您只需使用为矩形的每个部分计算的点绘制四边形状。您可以获得触摸位置,然后计算出给每个点多少“重量”。

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

touched top left corner

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

touched top middle

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

touched bottom left

    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个角进行类似的操作。

答案 1 :(得分:3)

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

在第二步中,我将使用Button等。

不幸的是,我没有使用HalR的非常好(但对我而言太过数学)的答案