【uni-app】【Android studio】手把手教你运行uniapp项目到Android App

news2024/12/22 1:27:49

最开始想写一个自定义背景的弹窗,因为要用到项目的好几个地方,不希望每个地方都需要引入。而且只需要放张图片,加个关闭按钮和功能按钮就行,类似这种效果:
在这里插入图片描述
开始写的时候找了一篇博客,写的很详细,但是这个是Vue2的,uniapp实现自定义弹窗组件,可以在app全局任意地方使用,很多地方都需要改造。

改造完发现其实完全不需要这么复杂,在uniapp项目里面,很简单的代码就能实现。
先说一下写代码的逻辑,写这个组件,实际上只需要写三个部分,一个是dom显示,放在components目录下,一个是Vuex的store进行状态管理,最后一个是实际使用的时候对store状态进行修改从而控制组件的显隐和内容。

Vuex进行状态管理

uni-app 内置了 Vuex,可以直接使用。
新建js文件,用来单独管理Vuex。

// state.js
import {
	createStore
} from 'vuex'
const store = createStore({
	state: { 
	  //存放状态
	  modal: {
	    // 控制modal的显隐
		show: false,
		confirmText: "确定",
		confirmColor: "#333333",
		confirmBackgroundColor: "#FFBB24",
		// 按钮跳转的url
		url: '',
		// 背景图的地址
		backgroundImage: '',
	  },	
	},
	mutations: {
		hideModal(state) {
			state.modal.show = false
		},
		showModal(state, value) {
			state.modal = Object.assign(state.modal, value)
			state.modal.show = true
		},
	},
})

export default store

main.js引入状态管理

// main.js
import store from './state/state.js'
export function createApp() {
  const app = createSSRApp(App)
  app.use(store)
  // ...
  return {
    app
  }
}

在components里面新建组件

使用HBuilder 进行开发的uniapp项目,只要组件安装在项目的components目录下或uni_modules目录下,并符合components/组件名称/组件名称.vue目录结构。就可以不用引用、注册,直接在页面中使用。
在这里插入图片描述

<!-- waiLiModal.vue -->
<template>
	<view class="mask-box" v-show="modal.show">
		<view class="mask-content">
			<view class="mask-title flex-row flex-end mr-20">
				<u-icon name="close-circle" size="60" @click="hideModal" style="color: #fff; float: right;"></u-icon>
			</view>
			<view class="mask-bg flex-row flex-center" v-if="modal.backgroundImage">
				<image :lazy-load="true" class="img" :src="modal.backgroundImage" mode="widthFix"></image>
			</view>
			<view class="flex-row flex-center">
				<view class="mask-footer-btn" @click="navTo(modal.url)">{{modal.confirmText}}</view>
			</view>
		</view>
	</view>
</template>
<script>
	import {
		navTo
	} from '@/utils/tools.js'
	import {
		mapState,
		mapMutations,
	} from 'vuex';

	export default {
		name: "waiLiModal",
		data() {
			return {
				navTo,
			};
		},
		computed: {
			...mapState(['modal']),
		},
		methods: {
			...mapMutations(['hideModal']),
		},
	}
</script>

<style scoped lang="scss">
	.mask-box {
		width: 100vw;
		height: 100vh;
		position: fixed;
		background-color: rgba(0, 0, 0, .2);
		top: 0;
		right: 0;

		.mask-content {
			width: 100%;
			position: absolute;
			top: 15%;
		}

		.mask-bg {
			.img {
				width: 90%;
			}
		}

		.mask-footer-btn {
			width: 150px;
			height: 50px;
			border-radius: 200px;
			background: linear-gradient(30deg, #fff, #d6d1fa, #b9aff9);
			text-align: center;
			line-height: 50px;
			font-size: 18px;
			color: #fff;
			font-weight: bold;
		}
	}
</style>

这样写好之后,就能直接在pages里面使用了。接下来,把写好的组件在需要显示的页面写好。因为要想控制显隐,肯定要全局加载,这里我放在了我自己写的tabbar里面。不然的话,就要在使用的页面里面引入。

<template>
	<view>
		<waiLiModal></waiLiModal>
	</view>
</template>

控制modal

store.commit('showModal', {
	backgroundImage: 'https://wailikeji.oss-cn-beijing.aliyuncs.com/chatgpt/sys/chatgpt/87681689927681_.pic.jpg',
	confirmText: "立即查看",
	// 按钮需要跳转的url
	url: '/pages/user/recharge/recharge'
})

如果有帮助的话,麻烦点个免费的赞或者关注吧~
如果有需要作者帮忙的,可以查看链接联系作者和查看作者是如何使用uniapp和uview组件哒。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/828172.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue element el-upload附件上传、在线预览、下载当前预览文件

上传 在线预览&#xff08;iframe&#xff09;&#xff1a; payload&#xff1a; response&#xff1a; 全部代码&#xff1a; <template><div><el-table :data"tableData" border style"width: 100%"><el-table-column prop"d…

论文阅读 - Social bot detection in the age of ChatGPT: Challenges and opportunities

论文链接&#xff1a;https://www.researchgate.net/publication/371661341_Social_bot_detection_in_the_age_of_ChatGPT_Challenges_and_opportunities 目录 摘要&#xff1a; 引言 1.1. Background on social bots and their role in society 1.2. The rise of AI-gene…

细扒电驱电控整合趋势

电机和电控的配套量方面&#xff0c;领先都是比亚迪的弗迪动力。这与比亚迪整车销量显著领先分不开。在电机和电控排名靠前的企业中&#xff0c;有很多相同的企业。根据科瑞三电系统数据的统计&#xff0c;72%的电机电控来自同一企业&#xff0c;这部分业务量在2022年的同比增速…

剑指大厂,手撕 Java 八股文

tip: 此贴为目录贴&#xff0c;定期更新 toNew: 时间是最好的答案&#xff0c;它能解决所有问题。坚持&#xff01;&#xff01;&#xff01; ✌本文章旨在总结 Java 的知识生态以及帮助需要学习者和求职者&#xff0c;本人从事应用安全和大数据领域&#xff0c;有8年开发经验&…

mse.backward()作用及原理

作用&#xff1a;自动求导。计算那些有关图中叶子节点的tensors的梯度(这里的叶子节点指的是那些require_gardtrue的叶子节点) 计算叶子节点的梯度&#xff0c;自动附加在每个tensor的成员变量上&#xff0c;之后通过变量.grad&#xff0c;比如w.grad,b.grad 来调用。 另外补…

浅谈React中的ref和useRef

目录 什么是useRef&#xff1f; 使用 ref 访问 DOM 元素 Ref和useRef之间的区别 Ref和useRef的使用案例 善用工具 结论 在各种 JavaScript 库和框架中&#xff0c;React 因其开发人员友好性和支持性而得到认可。 大多数开发人员发现 React 非常舒适且可扩展&#xff0c;…

从0到1开发go-tcp框架【3-读写协程分离、引入消息队列、进入连接管理器、引入连接属性】【基础篇完结】

从0到1开发go-tcp框架【3-读写协程分离、引入消息队列、进入连接管理器、引入连接属性】 1 读写协程分离[v0.7] 添加一个Reader和Writer之间通信的channel添加一个Writer goroutineReader由之前直接发送给客户端改为发送给通信channel启动Reader和Writer一起工作 zinx/znet/co…

TPlink DDNS 内网穿透?外网访问设置方法

有很多小伙伴都想知道&#xff1a;TPlink路由器怎么设置DDNS内网穿透&#xff1f;今天&#xff0c;小编就给大家分享一下TPlink DDNS 外网访问设置方法&#xff0c;下面是图文教程&#xff0c;帮助新手快速入门DDNS设置。 本文介绍的是云路由器TP-LINK DDNS的设置方法。TP-LIN…

【算法提高:动态规划】1.6 区间DP

文章目录 前言例题列表1068. 环形石子合并&#xff08;前缀和 区间DP 环形转换成线性⭐&#xff09;如何把环转换成区间&#xff1f;⭐实现代码补充&#xff1a;相关题目——282. 石子合并 320. 能量项链&#xff08;另一种计算价值的石子合并&#xff09;479. 加分二叉树&am…

企业电子招标采购系统源码Spring Boot + Mybatis + Redis + Layui + 前后端分离 构建企业电子招采平台之立项流程图 tbms

&#xfeff; 项目说明 随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大&#xff0c;公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境&#xff0c;最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范&am…

VBA技术资料MF38:VBA_在Excel中隐藏公式

【分享成果&#xff0c;随喜正能量】佛祖也无能为力的四件事&#xff1a;第一&#xff0c;因果不可改&#xff0c;自因自果&#xff0c;别人是代替不了的&#xff1b;第二&#xff0c;智慧不可赐&#xff0c;任何人要开智慧&#xff0c;离不开自身的磨练&#xff1b;第三&#…

Stable Diffusion - SDXL 1.0 全部样式设计与艺术家风格的配置与提示词

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/132072482 来源于 Anna Dittmann 安娜迪特曼&#xff0c;艺术家风格的图像&#xff0c;融合幻想、数字艺术、纹理等样式。 SDXL 是 Stable Diffus…

星戈瑞 | DSPE-PEG-CY3在生物医学研究中的作用

DSPE-PEG-CY3纳米颗粒在生物医学研究中具有多种重要作用&#xff0c;主要包括以下方面&#xff1a; 1. 荧光成像&#xff1a; DSPE-PEG-CY3纳米颗粒具有花菁染料CY3的荧光特性&#xff0c;可以被用作生物标记物&#xff0c;在细胞和生物体内进行荧光成像。这种荧光成像技术可以…

基于fpga_EP4CE6F17C8_秒表计数器

文章目录 前言实验手册一、实验目的二、实验原理1&#xff0e;理论原理2&#xff0e;硬件原理 三、系统架构设计四、模块说明1&#xff0e;模块端口信号列表dig_driver(数码管驱动模块)key(按键消抖模块)top(顶层模块) 2&#xff0e;状态转移图3&#xff0e;时序图五、仿真波形…

iOS数字转为图片

根据数字&#xff0c;转成对应的图片 - (void)viewDidLoad {[super viewDidLoad];[self testNum2String:10086]; }/// 根据数字&#xff0c;显示对应的图片 数字用特定的图片显示 - (void)testNum2String:(NSInteger)num {UIView *numContentView [[UIView alloc] initWithFr…

多分支git合并流程

阅读摘要 推荐一个git合并步骤,开发分支可能会多次提交合并到dev/master主干分支也会显示很多个提交点,这样不方便代码分支管理和回溯发布记录,所以推荐如下方法,不出意外,这也是个新手教程 git 合并步骤 本地开发分支建立格式建议 feature_功能_开始时间(示例 feature_test_…

Java枚举解析:掌握枚举的绝佳指南!

申明&#xff1a;本人于公众号Java筑基期&#xff0c;CSDN先后发当前文章&#xff0c;标明原创&#xff0c;转载二次发文请注明转载公众号&#xff0c;另外请不要再标原创 &#xff0c;注意违规 枚举 在Java中&#xff0c;枚举&#xff08;Enumeration&#xff09;是一种特殊的…

MES管理系统解决方案,助力汽配行业打造数字化工厂

汽配企业的生产与供应链体系必须与整车厂协同&#xff0c;才能确保品质和交期的要求。随着竞争的加剧&#xff0c;车企不断追求更精益化的管理&#xff0c;以应对市场挑战&#xff0c;而高端客户对品质、成本、交期也提出了更高的要求。因此&#xff0c;以合理的价格提供最佳质…

Kubernetes架构和工作流程

目录 一、kubernetes简介 1.k8s的由来 2.为什么用 k8s &#xff1f; 3.k8s主要功能 二、k8s集群架构与组件 1.Master 组件 1.1Kube-apiserver 1.2Kube-controller-manager 1.3Kube-scheduler 2.Node组件 2.1Kubelet 2.2Kube-Proxy 2.3docker 或 rocket 3.配置存储中…

C++中数据的输入输出介绍

C中数据的输入输出介绍 C中数据的输入输出涉及到的文件 <iostream>&#xff1a;这是C标准库中最常用的头文件之一&#xff0c;包含了进行标准输入输出操作的类和对象&#xff0c;如std::cin、std::cout、std::endl等。 <iomanip>&#xff1a;该头文件提供了一些用…