android - 如何在Android上实现像在Windows Phone上一样的倾斜效果?

标签 android android-button

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

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

这在 Android 上容易实现吗?

enter image description here

最佳答案

一个简单的方法是使用 canvas draws 来绘制 4 个边形。

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

关于android - 如何在Android上实现像在Windows Phone上一样的倾斜效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15450722/

相关文章:

没有显示拨号 UI 的 android 通话?

java - 更改选定状态下的按钮形状?

java - 如何使按钮方形和可调整大小

android - 我想把图片放在按钮上

java - 按下/实现按钮时执行操作的替代方案,android

c# - 如果此构建错误不断重复,我该怎么办

android - 如何在 SherlockMapActivity 中实现 google maps api v2

root 设备上的 Android 屏幕截图

Java RunTimeException 和 ClassNotFoundException 错误

java - 如何创建中间带有单个边框的相邻 Material 按钮