Ryo*_*Ryo 4 android android-layout android-view android-windowmanager
我正在尝试删除添加到WindowManager的图层.但是当我调用removeView()时没有任何反应.有人知道如何删除它吗?我的代码看起来像这样.
public class MainActivity extends Activity implements View.OnClickListener{
private WindowManager wm;
private WindowManager.LayoutParams orientationLayout;
private LinearLayout orientationChanger;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// init landscape things
wm = (WindowManager) getApplicationContext().getSystemService(Service.WINDOW_SERVICE);
orientationChanger = new LinearLayout(getApplicationContext());
orientationChanger.setClickable(false);
orientationChanger.setFocusable(false);
orientationChanger.setFocusableInTouchMode(false);
orientationChanger.setLongClickable(false);
orientationLayout = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_SYSTEM_ERROR,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.RGBA_8888);
orientationLayout.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
// set view
setContentView(R.layout.calibrate);
findViewById(android.R.id.button).setOnClickListener(this);
lockLandScape();
}
public void lockLandScape(){
wm.addView(orientationChanger, orientationLayout);
orientationChanger.setVisibility(View.GONE);
orientationLayout.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
wm.updateViewLayout(orientationChanger, orientationLayout);
orientationChanger.setVisibility(View.VISIBLE);
}
public void releaseLandScape(){
wm.removeView(orientationChanger);
// This doesn't work as well
//wm.removeViewImmediate(orientationChanger);
}
@Overrride
public void onClick(View view){
Log.i("myapp", "clicked")
releaseLandScape();
}
}
Run Code Online (Sandbox Code Playgroud)
phy*_*lis 12
您可以尝试使用,而不是使用像wm这样的属性
(WindowManager) getApplicationContext().getSystemService(Service.WINDOW_SERVICE)
Run Code Online (Sandbox Code Playgroud)
每次 ?
喜欢 :
((WindowManager) getApplicationContext().getSystemService(Service.WINDOW_SERVICE)).removeView(orientationChanger);
Run Code Online (Sandbox Code Playgroud)