9433cfb9创建于 2025年12月31日历史提交
<template>
  <scroll-view class="content" direction="vertical">
    <view id="fullscreen" class="view1" @click="fullscreen" @fullscreenchange="fullscreenchange" @fullscreenerror="fullscreenerror">
      <text style="color: white;">{{ text }}</text>
    </view>
    <enum-data :items="orientation_enum" title="orientation" @change="radio_change_orientation"></enum-data>
    <enum-data :items="navigationUI_enum" title="navigationUI" @change="radio_change_ui"></enum-data>
  </scroll-view>
</template>

<script>
  import { ItemType } from '@/components/enum-data/enum-data-types';
  export default {
    data() {
      return {
        orientation_enum: [{ "value": 0, "name": "auto" }, { "value": 1, "name": "landscape" }, { "value": 2, "name": "landscape-primary" }, { "value": 3, "name": "landscape-secondary" }, { "value": 4, "name": "portrait" }] as ItemType[],
        navigationUI_enum: [{ "value": 0, "name": "auto" }, { "value": 1, "name": "hide" }, { "value": 2, "name": "show" }] as ItemType[],
        text: "点击进入全屏",
        fullscreenElement: null as UniElement | null,
        isFullscreen: false,
        orientation: "landscape",
        navigationUI: "hide",
        fullscreenchangeCount: 0
      }
    },
    onReady() {
      this.fullscreenElement = uni.getElementById('fullscreen') as UniElement
    },
    methods: {
      getCurrentPage() : UniPage {
        const pages = getCurrentPages()
        return pages[pages.length - 1]
      },
      fullscreen() {
        if (this.isFullscreen) {
          const page = this.getCurrentPage()
          page.exitFullscreen({
            success: () => {
              this.text = "点击进入全屏"
            },
            fail: (err) => {
              console.log('fail', err)
            },
            complete: () => {
              console.log('complete')
            }
          })
        } else {
          this.fullscreenElement?.requestFullscreen({
            navigationUI: this.navigationUI,
            orientation: this.orientation,
            success: () => {
              this.text = "点击退出全屏"
            },
            fail: (err) => {
              console.log('fail', err)
            },
            complete: () => {
              console.log('complete')
            }
          })
        }

        this.isFullscreen = !this.isFullscreen
      },
      fullscreenchange(e : UniEvent) {
        console.log(e.type)
        this.fullscreenchangeCount++
        console.log(this.fullscreenchangeCount)
      },
      fullscreenerror(e : UniEvent) {
        console.log(e.type)
      },
      radio_change_orientation(checked : number) {
        console.log(checked)
        this.orientation = this.orientation_enum[checked]['name'] as string
      },
      radio_change_ui(checked : number) {
        console.log(checked)
        this.navigationUI = this.navigationUI_enum[checked]['name'] as string
      }
    }
  }
</script>

<style>
  .content {
    flex: 1;
    background-color: #f0f0f0;
  }

  .view1 {
    width: 100%;
    height: 150px;
    align-items: center;
    justify-content: center;
    background-color: black;
  }
</style>