WindowManager.addView()是Android中的一个方法,用于在屏幕上添加一个窗口。它允许你在应用程序的上下文之外创建一个窗口,并将其显示在其他应用程序或系统界面上。
-
新建一个自定义View用于显示
class MyView @JvmOverloads constructor(context: Context?,attrs: AttributeSet? = null, defStyleAttr: Int = 0) : View(context, attrs, defStyleAttr) { var myImage:Bitmap?=null var pX = 0f var pY = 0f init { myImage = BitmapFactory.decodeResource(resources,R.mipmap.image) } fun setPos(x:Float,y:Float){ this.pX = x; this.pY = y invalidate() } override fun onDraw(canvas: Canvas?) { super.onDraw(canvas) if (pX != 0f||pY != 0f){ myImage?.let { canvas?.drawBitmap(it,pX,pY,null) } } } }
-
使用windowManager.addView()显示文章来源:https://www.toymoban.com/news/detail-801904.html
var myView :MyView?=null var randomCount = 0 private fun show() { myView = MyView(mConext) val layoutParams = WindowManager.LayoutParams( WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,// 设置窗口类型为悬浮窗口,需要悬浮窗权限 WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE or WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,// 窗口不需要获取焦点 PixelFormat.TRANSLUCENT // 设置窗口背景为透明 ) val windowManager = getSystemService(Context.WINDOW_SERVICE) as WindowManager windowManager.addView(myView , layoutParams) CoroutineScope(Dispatchers.IO).launch { while (randomCount < 20){ delay(1000) withContext(Dispatchers.Main){ myView?.let { it.setPos((0 until 500).random().toFloat(), (0 until 500).random().toFloat()) } } randomCount ++ } withContext(Dispatchers.Main){ windowManager.removeView(myView) } } }
首先创建了一个WindowManager对象,在这个对象上进行操作。然后创建了一个自定义的MyView对象,作为要添加的窗口的内容。接下来,创建了WindowManager.LayoutParams对象,用于指定窗口的各种属性,比如宽度、高度、位置等。最后,通过windowManager.addView()方法将自定义的View添加到WindowManager中,从而将其显示在屏幕上。文章来源地址https://www.toymoban.com/news/detail-801904.html
到了这里,关于Android在系统界面上添加窗口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!