如何在Android中实现悬浮Activity

2025-01-19 08:00:00
推荐回答(2个)
回答1:

如果对ABS的源码很熟悉或者曾对原生ActionBar的构架有了解,就会发现:如果改变Activity的大小,那在调用setContentView方法的时候,功能没有实现:ActionBar的大小和位置都没有变化。这时要做的就是在更高的级别里操作,在系统绘制ActionBar的时候——ABS或者原生的ActionBar,这时候还没有任何窗口的数据,这样我们就可以按照需要调整了。

最显而易见的方式就是改变Window的尺寸,所以这里需要以下这段代码:

回答2:

WindowManager wm;
WindowManager.LayoutParams wmlp;
LinearLayout linear;
EditText t;

wm = (WindowManager) getSystemService(WINDOW_SERVICE);
wmlp = new WindowManager.LayoutParams();
wmlp.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
wmlp.gravity = Gravity.TOP|Gravity.LEFT;
wmlp.format = PixelFormat.RGBA_8888;
wmlp.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE|WindowManager.LayoutParams.FLAG_FULLSCREEN|WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
wmlp.x = 0;//悬浮窗左上角的x坐标
wmlp.y = 0;//悬浮窗左上角的坐标
wmlp.width = 50;//宽
wmlp.height = 30;//高

linear = new LinearLayout(getApplicationContext());//悬浮窗显示的布局
linear.setGravity(Gravity.BOTTOM|Gravity.LEFT);
//组件
t = new TextView(getApplicationContext()); //文本
t.setTextColor(Color.RED);//文本颜色
t.setText("哈哈");
linear.addView(t);//将textview添加进布局
wm.addView(linear,wmlp); // 窗口管理器添加这个部件