作者loser0120 (失败者)
看板AndroidDev
标题Re: [问题] 不规则元件的点击
时间Wed Nov 18 07:03:13 2015
※ 引述《lovelycateye (我还想要更多力量)》之铭言:
: 可以参考看看
: http://stackoverflow.com/questions/7778279/android-creating-shaped-button
: 如果是我做的话,跟上面连结会满类似的
: 我会做成每个图片按钮是一个 View
: 1.在 onTouch ACTION_DOWN 的地方判断这个点的 pixel 的 alpha channel 是否为透明。
: 如果不是透明 return true,不继续往下个 View 判断。
^^^^^^^^^^^能否请教这里的关键字,因为监听return false後
似乎只有往上一层的layout传递,不知如何传递给同层的View
: 2.侦测是否有移动的距离,有移动超过某个距离视为拖移,而非 Click。
: 3.接着在 onTouch ACTION_UP 的地方,看起来的点和时间,是否为限制的位置和时间内
: 若不是也不当做是 Click。
: 4.如果通过以上判断是 Click 则触发 performClick();
: 至於外面的 layout 一点也不重要,你必须要让你的按钮可以独立运作才对。
我照着把那层layout拿掉算是做出来了,没被View覆盖的View也判断orz
而且其他地方变得蛮不好写的,方法如下:
public boolean onTouch(View v, MotionEvent event) {
boolean isTransparent, isOutOfRange;
...... //我取event.getRawX()和getRawY()来判断
if (isTransparent || isOutOfRange) {
ViewGroup vg = (ViewGroup)v.getParent();
int index = vg.indexOfChild(v);
if (index > 0)
this.onTouch(vg.getChildAt(index-1), event);
}
return true;
}
终於解决了很开心,谢谢大家!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 175.182.2.79
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1447801397.A.9C3.html
※ 编辑: loser0120 (175.182.2.79), 11/18/2015 09:34:00