国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android在系統(tǒng)界面上添加窗口

這篇具有很好參考價(jià)值的文章主要介紹了Android在系統(tǒng)界面上添加窗口。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

WindowManager.addView()是Android中的一個(gè)方法,用于在屏幕上添加一個(gè)窗口。它允許你在應(yīng)用程序的上下文之外創(chuàng)建一個(gè)窗口,并將其顯示在其他應(yīng)用程序或系統(tǒng)界面上。

  1. 新建一個(gè)自定義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)
                }
            }
        }
    }
    
  2. 使用windowManager.addView()顯示

      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,// 設(shè)置窗口類型為懸浮窗口,需要懸浮窗權(quán)限
                 WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE or WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,// 窗口不需要獲取焦點(diǎn)
                 PixelFormat.TRANSLUCENT // 設(shè)置窗口背景為透明
             )
             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)
                 }
             }
         }
    

首先創(chuàng)建了一個(gè)WindowManager對(duì)象,在這個(gè)對(duì)象上進(jìn)行操作。然后創(chuàng)建了一個(gè)自定義的MyView對(duì)象,作為要添加的窗口的內(nèi)容。接下來(lái),創(chuàng)建了WindowManager.LayoutParams對(duì)象,用于指定窗口的各種屬性,比如寬度、高度、位置等。最后,通過(guò)windowManager.addView()方法將自定義的View添加到WindowManager中,從而將其顯示在屏幕上。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-801904.html

到了這里,關(guān)于Android在系統(tǒng)界面上添加窗口的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Android 多任務(wù)窗口中的界面高斯模糊處理問(wèn)題

    Android 多任務(wù)窗口中的界面高斯模糊處理問(wèn)題

    應(yīng)用開(kāi)發(fā)過(guò)程中安全問(wèn)題的確需要系統(tǒng)考慮也要開(kāi)發(fā)者自己多考慮,一個(gè)小的細(xì)節(jié)可能會(huì)讓你的應(yīng)用變的更安全,最近在用招商銀行App的時(shí)候無(wú)意中發(fā)現(xiàn)了 iPhone上多任務(wù)窗口 ,看到招商銀行的應(yīng)用有一個(gè)特別的地方就是當(dāng)應(yīng)用出現(xiàn)在多任務(wù)中的時(shí)候界面被高斯模糊處理了,

    2024年02月11日
    瀏覽(21)
  • Xamarin.Android實(shí)現(xiàn)界面自動(dòng)添加控件

    Xamarin.Android實(shí)現(xiàn)界面自動(dòng)添加控件

    有時(shí)需要在APP中動(dòng)態(tài)的添加控件,因此記錄下在Xamarin中的實(shí)現(xiàn)步驟。 VS2022社區(qū)版 UI的代碼如何 活動(dòng)中的代碼如下: 工程代碼 界面中添加控件,就是通過(guò) AddView 方法實(shí)現(xiàn)的,方法有如下的重載版本: 參數(shù) child 就是要添加的控件元素; LayoutParams 代表待添加元素的樣式。但也

    2024年02月15日
    瀏覽(30)
  • android 12后WindowManager事件穿透類型懸浮窗無(wú)效問(wèn)題

    android 12后WindowManager事件穿透類型懸浮窗無(wú)效問(wèn)題

    筆記: 項(xiàng)目需要將一個(gè)懸浮窗WindowManager僅顯示view給用戶看,不可操作,將觸摸事件穿透到后面的窗口。WindowManager.LayoutParams代碼如下 在android12以下的機(jī)型中測(cè)試都沒(méi)問(wèn)題,觸摸事件可以穿透懸浮窗。但在android 12機(jī)型測(cè)試時(shí),觸摸事件無(wú)法穿透懸浮窗了。 查了android開(kāi)發(fā)者官

    2024年02月13日
    瀏覽(77)
  • Android使用Jetpack WindowManager來(lái)開(kāi)發(fā)可折疊設(shè)備的探索

    Android使用Jetpack WindowManager來(lái)開(kāi)發(fā)可折疊設(shè)備的探索

    我們?cè)贕oogle開(kāi)發(fā)者大會(huì)上,看到Jetpack WindowManager和WindowSizeClass這些技術(shù),如下圖。 那這里不得不說(shuō)折疊屏手機(jī)了 在其中一個(gè)顯示區(qū)域中運(yùn)行一個(gè)應(yīng)用。 同時(shí)運(yùn)行兩個(gè)應(yīng)用,各位于一個(gè)顯示區(qū)域中(在 multi-window 模式下)。 可折疊設(shè)備還支持不同的折疊狀態(tài)。折疊狀態(tài)可用來(lái)

    2024年02月08日
    瀏覽(25)
  • WindowManager Flag對(duì)View觸摸事件的影響

    WindowManager Flag對(duì)View觸摸事件的影響

    FLAG_NOT_FOCUSABLE:使當(dāng)前View不會(huì)獲得焦點(diǎn),此View會(huì)將焦點(diǎn)傳遞到下層可獲取焦點(diǎn)的View FLAG_NOT_TOUCH_MODAL:允許當(dāng)前View獲取焦點(diǎn),也允許View范圍外的點(diǎn)擊事件傳遞給下層的View FLAG_NOT_TOUCHABLE:使View無(wú)法獲取焦點(diǎn) FLAG_WATCH_OUTSIDE:當(dāng)View范圍外的點(diǎn)擊事件發(fā)生時(shí),View將收到MotionEven

    2024年02月03日
    瀏覽(21)
  • QT界面中再添加界面窗口

    QT界面中再添加界面窗口

    目錄 使用場(chǎng)景: 教程: 1.首先創(chuàng)建一個(gè)qt設(shè)計(jì)師界面類 2.現(xiàn)在你有界面了,但是沒(méi)有創(chuàng)建 3.創(chuàng)建了界面,但是沒(méi)有容納該界面的地方,這個(gè)時(shí)候就要選擇容納的界面, 4.創(chuàng)建完成控件以后開(kāi)始添加界面,大體的方法基本都是這個(gè) 首先說(shuō)一下使用場(chǎng)景,很多時(shí)候一個(gè)界面會(huì)包含很多不

    2024年02月16日
    瀏覽(25)
  • Android 12系統(tǒng)源碼_窗口管理(五)DisplayContent簡(jiǎn)介

    DisplayContent 用于管理屏幕,一塊DisplayContent 對(duì)象實(shí)例代表一個(gè)屏幕設(shè)備,這樣有多個(gè)屏幕的設(shè)備就可以創(chuàng)建多個(gè)DisplayContent 對(duì)象,雖然多數(shù)設(shè)備只有一個(gè)顯示屏,但它們同樣可以創(chuàng)建多個(gè) DisplayContent 對(duì)象,如投屏的時(shí)候,可以創(chuàng)建一個(gè)虛擬的DisplayContent。 1、DisplayContent對(duì)象實(shí)

    2024年02月07日
    瀏覽(19)
  • Android 11 添加系統(tǒng)屬性

    在初識(shí)Android 屬性一文中提到,系統(tǒng)會(huì)默認(rèn)加載以下文件 要弄清楚我們應(yīng)該在哪里添加系統(tǒng)屬性,就要知道這些文件是怎么生成的。以/system/build.prop文件為例,來(lái)分析下其生成過(guò)程 屬性文件的生成邏輯集中在buildmakecoreMakefile文件中 注釋1處,將ADDITIONAL_BUILD_PROPERTIES定義的屬

    2024年04月08日
    瀏覽(20)
  • 添加系統(tǒng)級(jí)權(quán)限 android:sharedUserId=“android.uid.system“

    添加系統(tǒng)級(jí)權(quán)限 android:sharedUserId=“android.uid.system“

    當(dāng)我們?cè)陧?xiàng)目中添加系統(tǒng)級(jí)權(quán)限時(shí),運(yùn)行時(shí)會(huì)有錯(cuò)誤提示如下: Installation did not succeed. The application could not be installed: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE 之所以報(bào)錯(cuò),是添加系統(tǒng)級(jí)權(quán)限之后還需要在目標(biāo)系統(tǒng)的platform密鑰來(lái)重新給apk文件簽名。我這里用的簽名文件是從目標(biāo)系統(tǒng)中

    2024年02月13日
    瀏覽(21)
  • Android 12系統(tǒng)源碼_窗口管理(一)WindowManagerService的啟動(dòng)流程

    Android 12系統(tǒng)源碼_窗口管理(一)WindowManagerService的啟動(dòng)流程

    WindowManagerService是Android系統(tǒng)中重要的服務(wù),它是WindowManager的管理者,WindowManagerService無(wú)論對(duì)于應(yīng)用開(kāi)發(fā)還是Framework開(kāi)發(fā)都是重要的知識(shí)點(diǎn),究其原因是因?yàn)閃indowManagerService有很多職責(zé),每個(gè)職責(zé)都會(huì)涉及重要且復(fù)雜的系統(tǒng),這使得WindowManagerService就像一個(gè)十字路口的交通燈一樣

    2024年02月11日
    瀏覽(24)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包