你的思路不应该放在A监听单击事件上面,你应该考虑俩个activities如何通信的问题.
1.可能存在API直接关闭别的Activity.
2.使用AIDL技术.

解决方案 »

  1.   

    回LS的大哥,两个activity之间通信没有问题,这个可以做到,但不知道一个单击事件的发生位置并不在当前的焦点activity上时怎么去捕获,至于第二点,小弟不怎么懂,能否讲详细些?谢谢!
      

  2.   

    感觉你这个像弹出画面,如果是弹出的话,其实没必要新建一个activity,可以用setContentView()就可以在一个activity做这种操作了。
      

  3.   

    3#的兄弟,感觉你可能没有理解我的问题,关键点是我单击的位置不是当前焦点activity所在区域,而下面那个处在pause状态的activityA的区域,但由于A是处在pause状态,不是焦点activity,它又没有办法捕获这个单击事件...
    4#的兄弟,B这个不是一个简单的view,有一系列复杂操作,确实得用activity。
      

  4.   

    我现在做的的一个项目就是所有的画面用的一个activity,不管多复杂的操作都一个以事件监听的方式实现,如果用两个activity的话,你好像很难扑捉到已经停止的那个的事件,activity的生命周期决定了不可能两个activity同事运行吧!
      

  5.   

    LS的兄弟,我理解你的意思,但在我们这个项目里面是真的不行的,A和B不可能在一个activity里面去实现,B必须以一个新的activity启动,出于一些原因,我不能把具体的界面情况贴出来,还请各位高手再帮忙想想办法!
      

  6.   


    public boolean onTouchEvent(MotionEvent event) {
    // TODO Auto-generated method stub
    float x = event.getX();
    float y = event.getY();

    PointF p = new PointF(x, y);
                    if(p is in ActivityB)
                        donothing;
                    else
                        this.finish();

    return super.onTouchEvent(event);
    }PS.非全屏的Activity也可以捕捉到全屏的按键事件.
      

  7.   

     public boolean onTouchEvent(MotionEvent event) 
    你试试这个方法里面event的getEdgeFlags()方法行不行 看看它的返回值
      

  8.   

    FLAG_WATCH_OUTSIDE_TOUCH Window flag: if you have set FLAG_NOT_TOUCH_MODAL, you can set this flag to receive a single special MotionEvent with the action MotionEvent.ACTION_OUTSIDE for touches that occur outside of your window. 这个参数貌似可以,试试看吧,成功了别忘了发出来。
      

  9.   

    好了,8#兄弟的方式是可以的,非全屏的Activity确实可以捕捉到全屏的按键事件,没有试之前一直认为是不行的...剩下的只需判断坐标这些就可以了float x = event.getX();
            float y = event.getY();
            Log.i(TAG, "onTouchEvent, x= "+x+", and y = "+y);
            if(y < 220)
             this.finish();
    9#和10#兄弟的方式,我不是很明白,能否说清楚些...
    谢谢各位兄弟了!
    PS:另外发现一个新问题,期待各位大大解惑,这个非全屏的activityB我设置了android:theme="@android:style/Theme.Translucent"的半透主题(因为不设置的话即使不是全屏的activity,它没有的部分也会以黑色填充从而充满全屏),但是我发现设置了这个主题的activity生命周期和普通的activity不一样了:点击模拟器返回按键时,activityB确实消失了,但没有执行onStop和onDestroy方法!下次重新启动activityB时,activityB执行onCreate方法后出现,但接着确执行了上一次消失时的onStop和onDestroy方法!这点小弟百思不得其解,网上查了许久也不得要领....
    有哪位大大知道这一原理吗?
    PS:大家可以试试,给某个activity加上android:theme="@android:style/Theme.Translucent"属性,再看看log就清楚流程了。
      

  10.   

    Window flag是窗口管理服务的参数,即WindowManager.LayoutParams,如FLAG_NOT_FOCUSABLE 、FLAG_NOT_TOUCH_MODAL、FLAG_NOT_TOUCHABLE等控制鼠标消息分发,FLAG_ALT_FOCUSABLE_IM等控制跟输入法间的关系。不同主题会设置不同参数,如透明就是通过format控制的,对话框则通过FLAG_DIM_BEHIND将底层窗口变暗。我的CSDN博客里有GUI系统的大致介绍,有兴趣的可以看看。