在android中发送消息的透明窗口

时间:2013-03-20 05:38:52

标签: android android-intent message transparent onclicklistener

我有一个活动,它有一个webview和一组按钮。我正在使用计时器来请求对这些按钮进行聚焦。但是为了点击它们,我希望应该有一个透明的窗口,除了布局点击它之外什么都没有通知活动窗口注册了点击并调用了getCurrentFocus()。执行点击()我希望这种情况一次又一次地发生意味着必须通过透明窗口进行所有点击。所以在我的主要活动中,我已经做了这个来调用透明活动

Intent trans = new Intent("web.browser.gk.TransparentActivity");
        startActivityForResult(trans,REQUEST_TRANSPARENT);

并且在onActivity结果中我已经完成了这个

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK){ 
            switch(requestCode) {

            case REQUEST_TRANSPARENT:
                Toast.makeText(this, "TRANSPARENT Acitivity clicked ",Toast.LENGTH_SHORT).show();
                if(flag)
                {
                    numpad.getCurrentFocus().performClick();
                }
                else
                {
                getCurrentFocus().performClick();
                }
                        break;

            case REQUEST_CODE:

            if (data.hasExtra("websearch")) {
                Toast.makeText(this, data.getExtras().getString("websearch"),Toast.LENGTH_SHORT).show();
                String i =  data.getExtras().getString("websearch");
                webview.loadUrl(i);

            }
            break;
        }
        }

        Intent trans = new Intent("web.browser.gk.TransparentActivity");
        startActivityForResult(trans,REQUEST_TRANSPARENT);


    }

现在问题是在我的代码中我调用webview.loadUrl(i)但它没有加载当前url。它只在点击透明窗口后加载该url。任何建议如何处理这个。是否有任何其他方式来实现此透明窗口功能

1 个答案:

答案 0 :(得分:0)

一次只能运行一个活动,因此如果您设置透明活动,则其后面的活动将暂停。你可以使用View或Fragment,但实际上如果你想要做的只是检测点击,那么处理这个问题的最好办法就是简单地覆盖dispatchTouchEvent。

@Override public boolean dispatchTouchEvent(MotionEvent me)
{
    if(me.getActionMasked() == MotionEvent.ACTION_DOWN) // user touched the screen
        doSomething();
    // pass the event on to the view that's supposed to get it
    return super.dispatchTouchEvent(me);
}