创建透明的传递活动

时间:2013-01-15 16:39:38

标签: android layout-inflater

我找到了this。所以,没有运气。我使用了他的代码,但我无法克服这个错误。我对inflaters不熟悉。那么有人可以解释这段代码吗?

final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
            WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
            WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
            PixelFormat.TRANSLUCENT);

    WindowManager wm = (WindowManager) getApplicationContext()
            .getSystemService(Context.WINDOW_SERVICE);
    LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    ViewGroup mTopView = (ViewGroup) getApplicationContext()
            .getLayoutInflater().inflate(R.layout.activity_invisible, null);
    getWindow().setAttributes(params);
    wm.addView(mTopView, params);

这部分代码:

ViewGroup mTopView = (ViewGroup) getApplicationContext()
            .getLayoutInflater().inflate(R.layout.activity_invisible, null);

给我这个错误The method getLayoutInflater() is undefined for the type Context

有人可以解释我做错了吗?

2 个答案:

答案 0 :(得分:1)

getLayoutInflater()Activity中的一种方法,而不是Context

您必须使用Activity的实例来调用它,否则它将无效。

但是,您可以使用在创建错误的行之前创建的LayoutInflater inflater。类似的东西:

ViewGroup mTopView = (ViewGroup) inflater.inflate(R.layout.activity_invisible, null);

答案 1 :(得分:0)

如果您尝试在onCreate()内执行此代码,而不是

ViewGroup mTopView = (ViewGroup) getApplicationContext().getLayoutInflater().inflate(R.layout.activity_invisible, null);

尝试

ViewGroup mTopView = (ViewGroup) getLayoutInflater().inflate(R.layout.activity_invisible, null);

您的活动采用getLayoutInflater()方法,因此无需明确获取上下文。