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

如何在类似Android的Windows Phone上实现倾斜效果?,android,android-button,Android,Android Button,我想在安卓操作系统上,当点击按钮时实现倾斜效果 倾斜效果:并非整个按钮都被按下。只有发生触摸事件的部分才应被按下 这在Android上容易实现吗 一种简单的方法是使用画布绘制来绘制四边形 考虑每4个角。“未接触”的矩形将是全尺寸,而接触的矩形将更小 您只需要使用为矩形的每个部分计算的点来绘制四边形。你可以得到触摸位置,然后计算出每个点的“重量” 要计算每个角点,您需要计算出多少“权重”来给出接触的坐标,以及多少“权重”来给出未接触的坐标。如果触摸左上角,该角将使用100%的触摸坐标,其他三个角

我想在安卓操作系统上,当点击按钮时实现倾斜效果

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

这在Android上容易实现吗


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

考虑每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个角点进行类似操作。

我在这里创建了一个初稿:

在第二步中,我将使用按钮等使其可用


不幸的是,我没有使用HalR的很好(但对我来说太数学化了)答案,我无法将其应用于视图组。你对此有什么想法吗?在这个问题中:其中一个答案展示了基本知识: