我希望在Android操作系统上点击按钮时实现倾斜效果。
倾斜效果:不会将整个按钮视为按下。只有触摸事件发生的部分才会被按下。
这在Android上很容易实现吗?
答案 0 :(得分:7)
一种简单的方法是使用画布绘制来绘制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个角进行类似的操作。
答案 1 :(得分:3)
我在这里创建了初稿:https://github.com/flavienlaurent/TiltEffect
在第二步中,我将使用Button等。
不幸的是,我没有使用HalR的非常好(但对我而言太过数学)的答案