package com.example.windowmnagerexcercise; import android.os.Bundle; import android.app.Activity; import android.content.Context; import android.graphics.PixelFormat; import android.view.Gravity; import android.view.LayoutInflater; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.view.WindowManager; import android.webkit.WebView.FindListener; import android.widget.Button; import android.widget.ImageView; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button=(Button) findViewById(R.id.button1); final LayoutInflater inflater=getLayoutInflater(); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub WindowManager windowManager=(WindowManager) getSystemService(Context.WINDOW_SERVICE); WindowManager.LayoutParams wmParams=new WindowManager.LayoutParams(); wmParams.type =WindowManager.LayoutParams.TYPE_PHONE; // 設置window type wmParams.format =PixelFormat.RGBA_8888;// 設置圖片格式,效果爲背景透明 /* * 下面的flags屬性的效果形同「鎖定」。 懸浮窗不可觸摸,不接受任何事件,同時不影響後面的事件響應。 */ wmParams.flags=WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE; wmParams.gravity = Gravity.RIGHT| Gravity. CENTER_VERTICAL; // 調整懸浮窗口至右側中間 // 以屏幕左上角爲原點,設置x、y初始值 wmParams.x = 0; wmParams.y = 0; // 設置懸浮窗口長寬數據 wmParams.width = WindowManager.LayoutParams.WRAP_CONTENT; wmParams.height =WindowManager.LayoutParams.WRAP_CONTENT; //注意此處的imageview必須不屬於某個父控件,不然報錯。 ImageView imageView=new ImageView(getApplicationContext()); imageView.setImageResource(R.drawable.e); windowManager.addView(imageView, wmParams); } }); } }