日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

开发自己的安卓APP——悬浮备忘录(使用FloatingWindow)

發(fā)布時間:2023/12/20 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 开发自己的安卓APP——悬浮备忘录(使用FloatingWindow) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

開發(fā)背景

一、搭建環(huán)境

二、功能實現(xiàn)

1、思路簡單分析:

2、主要問題

三、展示

開發(fā)背景

? ? ? ?好久沒有碰安卓了,由于自己一直記性不好,經(jīng)常需要把壁紙改成將要完成的任務(wù)來提醒自己。(不選擇手機的備忘錄,是因為它不能一直顯示,對我來說不太滿意)于是,打算動手寫一個簡單APP,來滿足自己。

功能:可以輸入文字,可以定位在屏幕最上層。

這是最初功能。

一、搭建環(huán)境

今天是2021年12月31,編輯器選擇AndroidStudio3.0(官網(wǎng)最新)安裝很順暢,模擬器使用夜神。在安裝路徑下,執(zhí)行cmd在

輸入

nox_adb.exe connect 127.0.0.1:62001

?測試成功

?連接成功!

二、功能實現(xiàn)

在網(wǎng)上查詢資料,好像FloatingWindow可以實現(xiàn)類似的功能。

Floating view:可以懸浮在應(yīng)用的各個頁面。floating view是放在一個單獨的window中。 對于每個app而言,它所在的window在floating view所在的window之下,這樣,就可以懸浮在其至上。window可以設(shè)置相應(yīng)的層級。比如,通知欄,就是在一個級別很高的window中。

1、思路簡單分析:

1)用 EditText接收文本,點擊Button提交,觸發(fā)點擊事件

2)在點擊事件內(nèi)獲取文本,通過Intent,傳入Service

3)在Service里取到對應(yīng)的文本,送給FloatingWindow

4)撒花?????

2、主要問題

1)權(quán)限與請求的設(shè)置

Manefest.xml文件中聲明權(quán)限SYSTEM_ALERT_WINDOW

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

2)設(shè)置里面對本應(yīng)用進(jìn)行設(shè)置懸浮窗權(quán)限。該權(quán)限在應(yīng)用中需要啟動Settings.ACTION_MANAGE_OVERLAY_PERMISSION來讓用戶手動設(shè)置權(quán)限。

startActivityForResult(new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName())), REQUEST_CODE);

3)LayoutParam設(shè)置

LayoutParam里的type變量,指定窗口類型的。

Android 8.0之前,懸浮窗口設(shè)置可以為TYPE_PHONE,提供用戶交互操作的非應(yīng)用窗口。
Android 8.0之后,如果需要實現(xiàn)在其他應(yīng)用和窗口上方顯示提醒窗口,那么必須該為TYPE_APPLICATION_OVERLAY的新類型。

4)在Servie里獲取EditText內(nèi)容

為了這里在showFloatingWindow()?函數(shù)里接收到輸入的文本,再給 showFloatingWindow()

借助了靜態(tài)變量Text傳遞。不太規(guī)范,但此應(yīng)用自用,且體積尚小,后期再做優(yōu)化。

public static String Text;@RequiresApi(api = Build.VERSION_CODES.M)@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {showFloatingWindow();String string = intent.getStringExtra("string1");Log.v("MainActivity",string);Text = string;Log.v("MainActivity",string);return super.onStartCommand(intent, flags, startId);}@RequiresApi(api = Build.VERSION_CODES.M)private void showFloatingWindow() { // String string = Text; // Log.v("MainActivity",string);if (Settings.canDrawOverlays(this)) {// editText=new EditText(getApplicationContext());//Log.v("MainActivity",string);button = new Button(getApplicationContext());button.setText(Text);button.setBackgroundColor(Color.WHITE);windowManager.addView(button, layoutParams);button.setOnTouchListener(new FloatingOnTouchListener());}}

5)顯示的不太對

?經(jīng)過一番測試,發(fā)現(xiàn)

?showFloatingWindow函數(shù)比onStartCommand函數(shù)先執(zhí)行

查看onStartCommand()函數(shù),發(fā)現(xiàn)先調(diào)用了函數(shù),其次才取值,修改位置

完美

三、展示

暫更到這,2021年12月31日


?需要源碼,請關(guān)注公眾號“大魚海無糖”,回復(fù):懸浮備忘錄

參考博文:

Android懸浮窗的實現(xiàn)_董小蟲的專欄-CSDN博客_android 懸浮窗

android中activity向service中傳值_illdvm_新浪博客

總結(jié)

以上是生活随笔為你收集整理的开发自己的安卓APP——悬浮备忘录(使用FloatingWindow)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。