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

桌面太單調(diào)?一起用Python做個自定義動態(tài)壁紙,竟然還可以放視頻!

這篇具有很好參考價值的文章主要介紹了桌面太單調(diào)?一起用Python做個自定義動態(tài)壁紙,竟然還可以放視頻!。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

前段時間,用PyQt5寫了幾篇文章,關(guān)于Python自制一款炫酷音樂播放器、自定義桌面動畫掛件、車牌自動識別系統(tǒng)。今天就繼續(xù)給大家分享一個實戰(zhàn)案例,帶大家一起用Python的PyQt5開發(fā)一個自定義動態(tài)桌面壁紙,好玩又有趣!

首先一起來看看最終實現(xiàn)的自定義動態(tài)壁紙效果:
桌面太單調(diào)?一起用Python做個自定義動態(tài)壁紙,竟然還可以放視頻!
下面,我們開始介紹這個自定義動態(tài)桌面的制作過程。

直接跳到文末獲取粉絲專屬福利。

一、核心功能設(shè)計

總體來說,我們需要實現(xiàn)將自己喜歡的視頻轉(zhuǎn)成一個動態(tài)桌面,知識點主要包含了對視頻提取解析,視頻輪播,PyQt5窗體設(shè)置桌面句柄獲取,自定義動態(tài)桌面壁紙實現(xiàn)等。

拆解需求,大致可以整理出我們需要分為以下幾步完成:

  1. UI排版布局設(shè)計,確認(rèn)動態(tài)壁紙功能設(shè)計
  2. 加載視頻,對視頻進(jìn)行預(yù)覽讀取,保存視頻路徑等
  3. 動態(tài)壁紙功能實現(xiàn)應(yīng)用,獲取桌面句柄,輪播加載視頻
  4. 關(guān)閉動態(tài)壁紙,在線壁紙資源獲取等

二、實現(xiàn)步驟

之前有粉絲反饋說,想自己跟著文章自己敲敲代碼,但是不知道具體需要哪些模塊、包文件,后面我就把所有用到模塊先放出來。

import os
import sys
from subprocess import call
from threading import Thread
from time import sleep

import cv2
from PyQt5 import QtCore,  QtWidgets
from PyQt5.QtCore import Qt,  QTimer
from PyQt5.QtGui import QImage, QPixmap, QIcon

from PyQt5.QtWidgets import QGridLayout, QPushButton, QMainWindow, QFileDialog, QLabel, QSystemTrayIcon, \
    QAction, QMenu, QMessageBox
from os import path as pathq
1. UI排版布局設(shè)計

根據(jù)動態(tài)壁紙所需要的功能,首先進(jìn)行UI布局設(shè)計,我們這次還是使用的pyqt5。主要包含了加載讀取本地視頻、視頻加載預(yù)覽、動態(tài)壁紙應(yīng)用、動態(tài)壁紙關(guān)閉等。核心設(shè)計代碼如下:

# author:CSDN-Dragon少年
def setupUi(self, MainWindow):
    MainWindow.setObjectName("MainWindow")
    MainWindow.resize(505, 615)
    MainWindow.setToolButtonStyle(QtCore.Qt.ToolButtonIconOnly)
    self.centralwidget = QtWidgets.QWidget(MainWindow)
    self.centralwidget.setObjectName("centralwidget")
    self.pushButton = QtWidgets.QPushButton(self.centralwidget)
    self.pushButton.setGeometry(QtCore.QRect(22, 10, 89, 31))
    self.pushButton.setObjectName("pushButton")
    self.pushButton.clicked.connect(self.openmp4)
    self.pushButton.setStyleSheet(
        '''QPushButton{background:#F7D674;border-radius:5px;}QPushButton:hover{background:yellow;}''')
    self.groupBox = QtWidgets.QGroupBox(self.centralwidget)
    self.groupBox.setGeometry(QtCore.QRect(22, 50, 452, 351))
    self.groupBox.setObjectName("groupBox")
    self.widget = QtWidgets.QWidget(self.groupBox)
    self.widget.setGeometry(QtCore.QRect(11, 20, 430, 291))
    self.widget.setObjectName("widget")
    self.gridLayout_3 = QtWidgets.QGridLayout(self.widget)
    self.gridLayout_3.setObjectName("gridLayout_3")
    self.label = QLabel(self)
    self.label.resize(400, 300)
    self.label.setText("Waiting for video...")
    self.gridLayout_3.addWidget(self.label)
    self.close_widget = QtWidgets.QWidget(self.centralwidget)
    self.close_widget.setGeometry(QtCore.QRect(420, 0, 93, 41))
    self.close_widget.setObjectName("close_widget")
    self.close_layout = QGridLayout()  # 創(chuàng)建左側(cè)部件的網(wǎng)格布局層
    self.close_widget.setLayout(self.close_layout)  # 設(shè)置左側(cè)部件布局為網(wǎng)格
    self.left_close = QPushButton("")  # 關(guān)閉按鈕
    self.left_close.clicked.connect(self.close)
    self.left_visit = QPushButton("")  # 空白按鈕
    #self.left_visit.clicked.connect(MainWindow.big)
    self.left_mini = QPushButton("")  # 最小化按鈕
    self.left_mini.clicked.connect(MainWindow.mini)
    self.close_layout.addWidget(self.left_mini, 0, 0, 1, 1)
    self.close_layout.addWidget(self.left_close, 0, 2, 1, 1)
    self.close_layout.addWidget(self.left_visit, 0, 1, 1, 1)
    self.left_close.setFixedSize(15, 15)  # 設(shè)置關(guān)閉按鈕的大小
    self.left_visit.setFixedSize(15, 15)  # 設(shè)置按鈕大小
    self.left_mini.setFixedSize(15, 15)  # 設(shè)置最小化按鈕大小
    self.left_close.setStyleSheet(
        '''QPushButton{background:#F76677;border-radius:5px;}QPushButton:hover{background:red;}''')
    self.left_visit.setStyleSheet(
        '''QPushButton{background:#F7D674;border-radius:5px;}QPushButton:hover{background:yellow;}''')
    self.left_mini.setStyleSheet(
        '''QPushButton{background:#6DDF6D;border-radius:5px;}QPushButton:hover{background:green;}''')
    self.horizontalLayout = QtWidgets.QHBoxLayout(self.close_widget)
    self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
    self.horizontalLayout.setObjectName("horizontalLayout")
    self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
    self.pushButton_2.setGeometry(QtCore.QRect(77, 440, 133, 41))
    self.pushButton_2.setObjectName("pushButton_2")
    self.pushButton_2.clicked.connect(self.play)
    self.pushButton_2.setStyleSheet(
        '''QPushButton{background:#6DDF6D;border-radius:5px;}QPushButton:hover{background:green;}''')
    self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
    self.pushButton_3.setGeometry(QtCore.QRect(308, 440, 111, 41))
    self.pushButton_3.setObjectName("pushButton_3")
    self.pushButton_3.clicked.connect(self.close_wall)
    self.pushButton_3.setStyleSheet(
        '''QPushButton{background:#F76677;border-radius:5px;}QPushButton:hover{background:red;}''')
    self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget)
    self.pushButton_4.setGeometry(QtCore.QRect(187, 540, 133, 21))
    self.pushButton_4.setObjectName("pushButton_4")
    self.pushButton_4.clicked.connect(self.openurl)
    self.pushButton_4.setStyleSheet(
        '''QPushButton{background:#222225;color:white;border-radius:5px;}QPushButton:hover{background:#222225;color:skyblue}''')
    MainWindow.setCentralWidget(self.centralwidget)
    self.menubar = QtWidgets.QMenuBar(MainWindow)
    self.menubar.setGeometry(QtCore.QRect(0, 0, 505, 23))
    self.menubar.setObjectName("menubar")
    MainWindow.setMenuBar(self.menubar)
    self.statusbar = QtWidgets.QStatusBar(MainWindow)
    self.statusbar.setObjectName("statusbar")
    MainWindow.setStatusBar(self.statusbar)
    self.retranslateUi(MainWindow)
    QtCore.QMetaObject.connectSlotsByName(MainWindow)
    self.groupBox.setStyleSheet('''
    color:white
    ''')
    MainWindow.setWindowOpacity(0.95)  # 設(shè)置窗口透明度
    MainWindow.setAttribute(Qt.WA_TranslucentBackground)
    MainWindow.setWindowFlag(Qt.FramelessWindowHint)  # 隱藏邊框
# author:Dragon少年
def retranslateUi(self, MainWindow):
    _translate = QtCore.QCoreApplication.translate
    MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
    self.pushButton.setText(_translate("MainWindow", "從本地選擇"))
    self.groupBox.setTitle(_translate("MainWindow", "預(yù)覽"))
    self.pushButton_2.setText(_translate("MainWindow", "應(yīng)用"))
    self.pushButton_3.setText(_translate("MainWindow", "關(guān)閉壁紙"))
    self.pushButton_4.setText(_translate("MainWindow", "在線資源"))

UI實現(xiàn)效果如下:
桌面太單調(diào)?一起用Python做個自定義動態(tài)壁紙,竟然還可以放視頻!
UI布局設(shè)計完成,下面我們開始進(jìn)行視頻讀取加載、預(yù)覽功能實現(xiàn)。

2. 視頻加載預(yù)覽

接來下我們可以根據(jù)自己喜歡的視頻,從本地讀取視頻,并且將視頻預(yù)覽播放顯示。這里視頻演示,博主還是用之前的那篇紫顏小姐姐的跳舞視頻進(jìn)行演示。

讀取視頻:

讀取視頻我們可以通過打開文件對話框,選擇視頻資源,開啟一個子線程用來進(jìn)行視頻開啟停止播放。核心代碼如下:

# author: CSDN-Dragon少年
def openmp4(self):
    try:
        global path
        path, filetype = QFileDialog.getOpenFileName(None, "選擇文件", '.',
                                                     "視頻文件(*.AVI;*.mov;*.rmvb;*.rm;*.FLV;*.mp4;*.3GP)")  # ;;All Files (*)
        if path == "":  # 未選擇文件
            return

        self.slotStart()
        t = Thread(target=self.Stop)
        t.start()  # 啟動線程,即讓線程開始執(zhí)行
    except Exception as e:
        print (e)

視頻流讀取播放:

接下來,我們需要對視頻文件進(jìn)行按幀讀取加載顯示,并通過計時器實現(xiàn)動畫效果。核心代碼如下:

# author:CSDN-Dragon少年
def slotStart(self):
    videoName = path
    if videoName != "":  # “”為用戶取消
        self.cap = cv2.VideoCapture(videoName)
        self.timer_camera.start(50)
        self.timer_camera.timeout.connect(self.openFrame)
# author:CSDN-Dragon少年
def openFrame(self):
    if (self.cap.isOpened()):
        ret, self.frame = self.cap.read()
        if ret:
            frame = cv2.cvtColor(self.frame, cv2.COLOR_BGR2RGB)
            if self.detectFlag == True:
                # 檢測代碼self.frame
                self.label_num.setText("There are " + str(5) + " people.")
            height, width, bytesPerComponent = frame.shape
            bytesPerLine = bytesPerComponent * width
            q_image = QImage(frame.data, width, height, bytesPerLine,
                             QImage.Format_RGB888).scaled(self.label.width(), self.label.height())
            self.label.setPixmap(QPixmap.fromImage(q_image))
        else:
            self.cap.release()
            self.timer_camera.stop()  # 停止計時器

至此,我們已經(jīng)可以實現(xiàn)視頻讀取加載,并且進(jìn)行視頻預(yù)覽了,效果如下:

桌面太單調(diào)?一起用Python做個自定義動態(tài)壁紙,竟然還可以放視頻!

3. 動態(tài)壁紙功能實現(xiàn)

實現(xiàn)桌面壁紙?zhí)鎿Q,我們首先需要獲取桌面句柄找到桌面窗體,覆寫桌面窗體、調(diào)用加載的視頻流,播放動態(tài)壁紙。

獲取桌面句柄:

# author:CSDN-Dragon少年
def pretreatmentHandle():
    hwnd = win32gui.FindWindow("Progman", "Program Manager")
    win32gui.SendMessageTimeout(hwnd, 0x052C, 0, None, 0, 0x03E8)
    hwnd_WorkW = None
    while 1:
        hwnd_WorkW = win32gui.FindWindowEx(None, hwnd_WorkW, "WorkerW", None)
        if not hwnd_WorkW:
            continue
        hView = win32gui.FindWindowEx(hwnd_WorkW, None, "SHELLDLL_DefView", None)
        # print('hwmd_hView: ', hView)
        if not hView:
            continue
        h = win32gui.FindWindowEx(None, hwnd_WorkW, "WorkerW", None)
        while h:
            win32gui.SendMessage(h, 0x0010, 0, 0)  # WM_CLOSE
            h = win32gui.FindWindowEx(None, hwnd_WorkW, "WorkerW", None)
        break
    return hwnd

桌面覆寫:

我們可以創(chuàng)建一個類,對窗體進(jìn)行繼承,進(jìn)行視頻流加載讀取播放。核心代碼如下:

# author: CSDN-Dragon少年
class MyMainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super(MyMainWindow, self).__init__(parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.player = QMediaPlayer()
        self.player.setNotifyInterval(10000)
        self.player.setVideoOutput(self.ui.videowidget)
        self.player.setMuted(bool(1 - self.player.isMuted()))
        self.setWindowFlags(Qt.FramelessWindowHint)
        self.setupUi(self)
        self.go()


	# author: CSDN-Dragon少年
    def go(self):
        self.ui.videowidget.setFullScreen(True)

        with open("./filename.txt", 'r', encoding='utf-8') as f:
            file_name = f.read()
            if file_name =='':
                file_name = 'lkf.mp4'
        print (file_name)
        if not os.path.exists(file_name):
            sys.exit()
        media = QMediaContent(QUrl(file_name))
        self.player.setMedia(media)
        self.mplayList = QMediaPlaylist()
        self.mplayList.addMedia(QMediaContent(QUrl.fromLocalFile(file_name)))
        self.player.setPlaylist(self.mplayList)
        self.mplayList.setPlaybackMode(QMediaPlaylist.CurrentItemInLoop)
        win_hwnd = int(self.winId())
        video_h = int(self.ui.videowidget.winId())
        win32gui.SetParent(win_hwnd, h)
        win32gui.SetParent(video_h, h)
        win32gui.SetParent(video_h, win_hwnd)
        self.player.play()

這里我們把上面的py文件直接打包成exe文件,接下來我們在“應(yīng)用”控件上進(jìn)行事件綁定,直接調(diào)用exe執(zhí)行,實現(xiàn)動態(tài)壁紙播放應(yīng)用功能。核心代碼如下:

# author: CSDN-Dragon少年
def play(self):
     if path == '':
         reply = QtWidgets.QMessageBox.question(self, '提示',
                                                "未加載選擇視頻",
                                                QtWidgets.QMessageBox.Yes)
         return
     with open("./filename.txt", 'w', encoding='utf-8') as f:
         f.truncate(0)
         print(f.write(str(path)))
     try:
         try:
             call('taskkill /F /IM play.exe')
         except:
             pass
         os.system('start play.exe')
     except:
         pass
     try:
         if self.cap != []:
             self.cap.release()
             self.timer_camera.stop()  # 停止計時器
         else:
             Warming = QMessageBox.warning(self, "Warming", "Push the left upper corner button to Quit.",
                                           QMessageBox.Yes)
     except:
         pass

這樣,我們就完成了動態(tài)壁紙加載應(yīng)用功能了,效果如下:
桌面太單調(diào)?一起用Python做個自定義動態(tài)壁紙,竟然還可以放視頻!

4. 關(guān)閉動態(tài)壁紙

最后我們再實現(xiàn)下當(dāng)前動態(tài)壁紙播放關(guān)閉功能,我們需要對當(dāng)前桌面視頻播放進(jìn)行釋放取消。代碼如下:

# author:CSDN-Dragon少年
 def close_wall(self):
     try:
         call('taskkill /F /IM play.exe')
     except:
         pass

效果如下:
桌面太單調(diào)?一起用Python做個自定義動態(tài)壁紙,竟然還可以放視頻!

至此,整個自定義動態(tài)桌面壁紙功能就全部完成了,下面我們一起運行下看看動態(tài)壁紙效果。

源碼及數(shù)據(jù)已上傳,關(guān)注文末公眾號回復(fù)【源碼】即可獲取完整源碼

Python往期精彩:

  • 見過仙女蹦迪嗎?一起用python做個小仙女代碼蹦迪視頻

  • python自制一款炫酷音樂播放器,想聽啥隨便搜!

  • 斗地主老是輸?一起用Python做個AI出牌器,豆子蹭蹭漲!

  • 桌面太單調(diào)?一起用Python做個自定義動畫掛件,好玩又有趣!

  • 一起用Python做個車牌自動識別系統(tǒng),好玩又實用!

  • 桌面太單調(diào)?一起用Python做個自定義動態(tài)壁紙,竟然還可以放視頻!

  • 一起用Python做個自動化彈鋼琴腳本,我竟然彈出了《天空之城》!
    往期精彩源碼均可通過下方公眾號獲取
    文章來源地址http://www.zghlxwxcb.cn/news/detail-425059.html

到了這里,關(guān)于桌面太單調(diào)?一起用Python做個自定義動態(tài)壁紙,竟然還可以放視頻!的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • SV-8004VP 網(wǎng)絡(luò)對講求助話筒,4個自定義按鍵

    SV-8004VP 網(wǎng)絡(luò)對講求助話筒,4個自定義按鍵

    SV-8004VP網(wǎng)絡(luò)對講求助話筒 , 4個自定義按鍵 SV-8004VP是一款4按鍵求助對講話筒,具有10/100M以太網(wǎng)接口,支持G.711音頻編解碼,其接收SIP網(wǎng)絡(luò)的音頻數(shù)據(jù),實時解碼播放,還配置了麥克風(fēng)輸入和揚聲器輸出。 SV-8004VP可以通過麥克風(fēng)或者本地線路輸入對SIP終端進(jìn)行點對點的SIP對講

    2024年01月16日
    瀏覽(23)
  • uniapp/H5 獲取手機桌面壁紙 (靜態(tài)壁紙)

    找半天沒找到相關(guān)的內(nèi)容,自己搗鼓出來的,記錄一下。 (比較可惜的是只能獲取靜態(tài)圖片,動態(tài)壁紙就不知道了咋弄了) uniapp的話還可以參考一下如何用NJS獲取手機桌面壁紙? - DCloud問答下面DCloud_heavensoft?大佬的一個回答 : “Native.js很多類型沒有。用uts可以?https://uni

    2024年02月19日
    瀏覽(21)
  • 電腦桌面壁紙不清晰?壁紙模糊怎么修復(fù)高清?

    電腦桌面壁紙不清晰?壁紙模糊怎么修復(fù)高清?

    我們在入手新電腦之后,首先就是會想要設(shè)置一個好看的壁紙,雖然系統(tǒng)會自帶一些壁紙,但大多數(shù)用戶都不喜歡這樣一成不變的壁紙。于是在網(wǎng)上找了很好好看的壁紙換上,結(jié)果發(fā)現(xiàn)在更換電腦壁紙之后卻發(fā)現(xiàn)壁紙顯示非常的模糊不清。為什么桌面壁紙模糊不清呢?又要如

    2024年02月08日
    瀏覽(25)
  • 紅隊版goby-poc,包含447個自定義goby-poc

    紅隊版goby-poc,包含447個自定義goby-poc

    下載地址:https://github.com/MY0723/goby-poc 下載有用的話給GitHub點個關(guān)注?star謝謝嘍??!! 包含447個自定義goby-poc,可能會有個別重復(fù)自行判斷,來源于網(wǎng)絡(luò)收集的GobyPOC,實時更新。 如果無紅隊版,可直接poc管理處導(dǎo)入自定義poc即可,共計745個。 本程序僅供于學(xué)習(xí)交流,請使用者遵

    2024年02月11日
    瀏覽(14)
  • 【二】一起算法---隊列:STL queue、手寫循環(huán)隊列、雙端隊列和單調(diào)隊列、優(yōu)先隊列

    【二】一起算法---隊列:STL queue、手寫循環(huán)隊列、雙端隊列和單調(diào)隊列、優(yōu)先隊列

    紙上得來終覺淺,絕知此事要躬行。大家好!我是霜淮子,歡迎訂閱我的專欄《算法系列》。 學(xué)習(xí)經(jīng)典算法和經(jīng)典代碼,建立算法思維;大量編碼讓代碼成為我們大腦的一部分。 ??已更系列 ?1、基礎(chǔ)數(shù)據(jù)結(jié)構(gòu) ???????1.1、鏈表?傳送門 ? ? ? ?1.2、隊列?本章 專欄直達(dá)

    2023年04月08日
    瀏覽(17)
  • Android 12中系統(tǒng)Wallpaper詳解1--鎖屏透看壁紙和桌面透看壁紙的切換

    Android 12中系統(tǒng)Wallpaper詳解1--鎖屏透看壁紙和桌面透看壁紙的切換

    先看桌面情況下壁紙,這個情況應(yīng)該屬于我們最為熟悉的,那么就不用多說,大概就是因為桌面Activity的配置主題xml設(shè)置一個類似showallpaper的屬性既可以,就可以讓桌面后面顯示壁紙了 2 aosp編譯后版本鎖屏后點亮屏幕也可以看到桌面壁紙(注意這里還不是專門鎖屏壁紙) 大家

    2023年04月19日
    瀏覽(21)
  • 電腦怎么設(shè)置動態(tài)壁紙?關(guān)于Windows和Mac壁紙的設(shè)置方法

    電腦怎么設(shè)置動態(tài)壁紙?關(guān)于Windows和Mac壁紙的設(shè)置方法

    為了讓電腦桌面更加美觀舒適,很多人都會給電腦的桌面設(shè)置自己喜歡的壁紙。 圖片壁紙很多人都會設(shè)置,但是電腦怎么設(shè)置動態(tài)壁紙? 這是很多人的困擾。其實方法同樣很簡單,下面有關(guān)于Windows和Mac動態(tài)壁紙的設(shè)置方法,一起來看看! 操作環(huán)境: 演示機型:聯(lián)想小新A

    2024年02月09日
    瀏覽(21)
  • QT開發(fā)實戰(zhàn)-動態(tài)壁紙軟件

    QT開發(fā)實戰(zhàn)-動態(tài)壁紙軟件

    項目源代碼在下面鏈接獲取: ----------------------------- 開發(fā)者:CodeSharkSJ 希望此項目能加強你對Qt的應(yīng)用 文章目錄 項目圖與開發(fā)環(huán)境 核心技術(shù)原理 自定義窗口程序 UI布局 背景繪制 樣式表 基本實現(xiàn) QWebEngine QMedia使用 系統(tǒng)托盤隱藏 記憶功能 應(yīng)用程序打包 開發(fā)環(huán)境: visual studio 2

    2024年02月05日
    瀏覽(24)
  • 壁紙小程序Vue3(自定義頭部組件)

    壁紙小程序Vue3(自定義頭部組件)

    ?coustom-nav ?1)狀態(tài)欄 ? ? view class=\\\"statusBar\\\" :style=\\\"{height: statusBarHeight +\\\'px\\\'}\\\"/view H5中為0 ? ? view class=\\\"titleBar\\\" :style=\\\"{height:titleBarHeight+\\\'px\\\'}\\\" 獲取膠囊位置 ??view class=\\\"fill\\\" :style=\\\"{height:statusBarHeight+titleBarHeight+\\\'px\\\'}\\\" ? ? /view 填充區(qū)域,讓輪播圖展示全 script setup import { ref } from \\\'vue

    2024年04月11日
    瀏覽(22)
  • Android 12 內(nèi)置系統(tǒng)默認(rèn)動態(tài)壁紙(視頻資源)實現(xiàn)

    新建APP 項目 實現(xiàn) WallpaperService 實現(xiàn)視頻播放的引擎 AndroidManifest.xml 里注冊服務(wù) 其中的 intent-filter 、action 、meta-data 都是固定寫法,用于系統(tǒng)識別,我們需要配置的是 后面的 android:resource=“@xml/magic” 資源配置 @xml/magic 在 res 目錄下,新建 xml 文件夾 然后新建 xxxx.xml(如本例:

    2023年04月26日
    瀏覽(37)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包