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

10
我希望在Android操作系统上,能够实现一个按钮被点击时的倾斜效果。
倾斜效果:并非整个按钮都看起来像被按下了,只有触摸事件发生的部分才应该看起来被按下了。
在Android上是否容易实现这个效果? 进入图像描述
2个回答

7
一种简单的方法是使用canvas绘制四边形来绘制图形。
考虑每个四角。 "未触摸"矩形将是全尺寸,而“触摸”矩形将会更小。
您只需使用为矩形的每个部分计算的点来绘制四边形的形状。 您可以获取触摸位置,然后确定给每个点赋予多少“权重”。
要计算每个角,您需要确定要赋予触摸坐标多少“权重”,以及要赋予未触摸坐标多少“权重”。 如果您触摸了左上角,则该角将使用触摸坐标的100%,其他三个角都将使用未触摸坐标。
如果您触摸了顶部中间,则会得到以下形状:
我们可以通过计算您的触摸距离角落有多远来计算任何触摸点的角落。
(内容已保留html标记)
    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个角落进行类似的操作。


我无法将此应用到ViewGroup中。你有任何想法吗? - frankish
在这个问题中:http://stackoverflow.com/questions/7734228/android-accessing-buttons-from-surfaceview 其中一个答案展示了基础知识: - HalR

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接