※ 引述《loser0120 (失败者)》之铭言:
: 我自创RelativeLayout的子类别,内有多个ImageView是各种不规则图片
: public class Myrlyt extends RelativeLayout {
: public ImageView iv1, iv2;
: .....
: }
: 在Activity中实体化了多个Myrlyt类别,里面的ImageView都设了监听
: public class Main extends Activity {
: private RelativeLayout rlyt_main;
: private Myrlyt rlyt1, rlyt2;
:
: protected void setupViewComponent() {
: rlyt1.iv1.setOnTouchListener(touchListener);
: rlyt1.iv2.setOnTouchListener(touchListener);
: rlyt_main.addView(rlyt1);
: rlyt2.iv1.setOnTouchListener(touchListener);
: rlyt2.iv2.setOnTouchListener(touchListener);
: rlyt_main.addView(rlyt2);
: }
: ....
: }
: 想请教的是如何在rlyt1和rlyt2重叠时正确判定使用者点击了哪张图片
: 如下图,rlyt2蓝色,rlyt1红色,当点击重叠处就无法正确判定是rlyt1的ImageView
: ▁▁▁
: ▕ ●▕
: ▕ ▂▁▁▁
: ▕▅▕ ▲▏
: ▕▄▂█▏
: ▕ ∩█▏
: 目前尝试先判断是不是点击到rlyt2的ImageView图片透明处,
: 我希望可以继续判断此点击在rlyt1是不是透明,这里实在不知道怎么写
: 无论如何谢谢你看到最后
可以参考看看
http://stackoverflow.com/questions/7778279/android-creating-shaped-button
如果是我做的话,跟上面连结会满类似的
我会做成每个图片按钮是一个 View
1.在 onTouch ACTION_DOWN 的地方判断这个点的 pixel 的 alpha channel 是否为透明。
如果不是透明 return true,不继续往下个 View 判断。
2.侦测是否有移动的距离,有移动超过某个距离视为拖移,而非 Click。
3.接着在 onTouch ACTION_UP 的地方,看起来的点和时间,是否为限制的位置和时间内
若不是也不当做是 Click。
4.如果通过以上判断是 Click 则触发 performClick();
至于外面的 layout 一点也不重要,你必须要让你的按钮可以独立运作才对。