cordova-Toast的使用 -官方插件和自定义插件

news2024/11/26 18:30:34

前言:cordova是使用前端技术来开发app,可以节省成本和快速发布。不需要了解原生app开发
加载web的方式,可以兼容生成Android、ios以及浏览器等各种平台的项目
前文:cordova开发流程



一、官方提示浮动框 cordova-plugin-x-toast

1.cordova plugin add cordova-plugin-x-toast

2.在index.js文件中添加以下方法

3.在合适地方调用Toast方法

//Toast提示
function showToastTop(msg) {
  console.log("showToastTop:"+ msg);
  window.plugins.toast.showWithOptions(
    {
      message: msg,
      duration: 10000, // which is 2000 ms. "long" is 4000. Or specify the nr of ms yourself.
      position: "top",
          styling: {
            opacity: 0.75, // 0.0 (transparent) to 1.0 (opaque). Default 0.8
            backgroundColor: '#F5F5F5', // make sure you use #RRGGBB. Default #333333
            textColor: '#000000', // Ditto. Default #FFFFFF
            textSize: 16, // Default is approx. 13.
            cornerRadius: 100, // minimum is 0 (square). iOS default 20, Android default 100
            horizontalPadding: 20, // iOS default 16, Android default 50
            verticalPadding: 16 // iOS default 12, Android default 30
          },
      addPixelsY: 40  // added a negative value to move it up a bit (default 0)
    },
    onSuccess, // optional
    onError    // optional
  );
}
  function onSuccess() {
   console.log("onSuccess :"+message);
     };
   function onError(message) {
    console.log('onError:'+message);
    };


二、自定义的Toast

自定义 Cordova插件详解
自定义Toast目录

以上目录你可以手动创建这几个目录及文件,也可以用命令行自动创建,推荐的方式是使用plumam。

1、首先安装plumam命令行工具
npm install -g plugman

2、安装完之后,创建plugin
使用plumam创建插件的命令是:
plugman create --name pluginName --plugin_id pluginID --plugin_version version [–path path] [–variable NAME=VALUE]

参数说明:
pluginName:插件名称,如MyToast;
pluginID:插件id, 如:org.demo.mytoast;
version:版本号, 如:0.0.1;
path:插件存放的绝对或相对路径;
variable NAME=VALUE:扩展参数,如说明或作者,如woodstream

于是命令行中敲入以下代码:
plugman create --name MyToast --plugin_id org.demo.mytoast --plugin_version 0.0.1

plugin.xml

<?xml version='1.0' encoding='utf-8'?>
<plugin xmlns:android="http://schemas.android.com/apk/res/android" id="com.jlc.customtoast" version="1.0.0"
    xmlns="http://apache.org/cordova/ns/plugins/1.0">
    <name>MyToast</name>
    <js-module name="MyToast" src="www/MyToast.js">
        <clobbers target="cordova.plugins.MyToast" />
    </js-module>
    <platform name="android">
        <config-file parent="/*" target="res/xml/config.xml">
            <feature name="MyToast">
                <param name="android-package" value="com.jlc.customtoast.MyToast" />
            </feature>
        </config-file>
        <config-file parent="/*" target="AndroidManifest.xml"></config-file>
        <source-file src="src/android/MyToast.java" target-dir="src/com/jlc/customtoast/MyToast" />
    </platform>
</plugin>
  • id:插件唯一标识
  • version:版本号
  • js-module
    src:js中间件相对文件地址(www目录下的那个js)
    name:模块名称
    clobbers/merges
    target:H5通过它调用js中间件方法(ts调用方法的前缀)
  • platform
    name:对应平台android | ios
    source-file
    src:类名
    tartget-dir:插件文件复制到到原生项目位置
    feature
    name:js中间件通过它调用原生方法(包名)
    uses-permission:相关原生权限

插件转android的java文件

package com.luoyang.myplugin;
import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.CallbackContext;
import android.widget.Toast;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.apache.cordova.CordovaArgs;
import android.view.Gravity;
import android.widget.TextView;
import android.graphics.Color;
import android.graphics.drawable.GradientDrawable;


/**
* This class echoes a string called from JavaScript.
*/
public class MyToast extends CordovaPlugin {
    private static final int GRAVITY_TOP = Gravity.TOP|Gravity.CENTER_HORIZONTAL;


    @Override
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
        if (action.equals("showToast")) {
            this.showToast(args, callbackContext);
            return true;
        }
        return false;
    }

    /**
     * 显示toast的原生方法
     */
    private boolean showToast(JSONArray args, CallbackContext callbackContext) {
        try {
            CordovaArgs cordovaArgs = new CordovaArgs(args);
            //custom.js中的text内容
            String text = cordovaArgs.getJSONObject(0).getString("text");
            final android.widget.Toast toast= android.widget.Toast.makeText(cordova.getActivity().getApplicationContext(), text, Toast.LENGTH_LONG);
            //位置设置为顶部,偏移60
            toast.setGravity(GRAVITY_TOP, 0, 60);
            // 设置shape
            GradientDrawable shape = new GradientDrawable();
            shape.setCornerRadius(100);
            shape.setAlpha((int)(0.75 * 255)); // 0-255, where 0 is an invisible background
            shape.setColor(Color.parseColor("#F5F5F5"));
            toast.getView().setBackground(shape);
            //设置padding
            toast.getView().setPadding(50, 30, 50, 30);
            //设置字体大小
            final TextView toastTextView;
            toastTextView = (TextView) toast.getView().findViewById(android.R.id.message);
            toastTextView.setTextColor(Color.parseColor("#000000"));
            toastTextView.setTextSize(16f);
            //展示
            toast.show();
            callbackContext.success();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            callbackContext.error("toast显示异常");
            return false;
        }
    }
}

具体内容的转化为js调用

var exec = require('cordova/exec');

exports.showToast = function (arg0, success, error) {
    exec(success, error, 'MyToast', 'showToast', [arg0]);
};

3、创建package.json文件,一个插件就完成了的,里面的参数从plugin.xml拿过来便是:

{
  "name": "mytoast",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

在index.js即可

cordova.plugins.MyToast.showToast({text:'你好自定义的Toast1',},onSuccess,onFail)

                          function onSuccess() {
                                  alert('onSuccess 自定义的Toast' );
                          };

                          function onFail(message) {
                             alert('Failed 自定义的Toast: '+message);
                          }

创建价值,乐哉分享!

参考文档:自定义 Cordova插件详解

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

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

相关文章

二、GtkApplication and GtkApplicationWindow

1 GtkApplication 1.1 GtkApplication and g_application_run 人们编写编程代码来开发应用程序。什么是应用程序?应用程序是使用库运行的软件&#xff0c;其中包括操作系统、框架等。在GTK 4编程中&#xff0c;GTK应用程序是使用GTK库运行的程序(或可执行程序)。 编写GtkAp…

屏幕录制有快捷键吗?录屏快捷键ctrl加什么

我们日常使用的电脑是自带录屏功能&#xff0c;可以方便我们将玩游戏的精彩画面&#xff0c;或者是电影某个片段给录制下来。为了不错过这些精彩片段&#xff0c;可以使用录屏快捷键录制。那电脑录屏快捷键ctrl加什么&#xff1f;今天本文就简单地给大家介绍电脑录屏快捷键&…

【错误记录】IntelliJ IDEA 编译 Java 文件报错 ( 错误: 非法字符: ‘\ufeff‘ )

文章目录一、报错信息二、修改方案一、报错信息 报错信息 : D:\002_Project\003_Java_Work\Xxx\src\main\java\cn\Xxx.java:1: 错误: 非法字符: \ufeff &#xfeff;package xxx;出现该问题的原因是 IntelliJ IDEA 在创建文件时 , 为文件添加了 BOM 隐藏字符 , 这是 文件的 字…

(七)汇编语言——更灵活的定位内存地址的方法

目录 and和or ASCII码 [bxidata] SI和DI寄存器 [bxsi]和[bxdi] [bxsiidata]和[bxdiidata] 总结 例子&#xff08;双重循环的解决方案&#xff09; 我们知道&#xff0c;对于汇编来说&#xff0c;内存是极为重要的&#xff0c;所以&#xff0c;能精准且巧妙地定位内存地…

进程间通信——信号

目录 1 概念 2 信号类型 linux的基本信号类型 操作 常用的信号 3 怎么操作信号 signal kill raise alarm pause 注意 范例1&#xff08;自己用信号发送书写sleep函数实现定时炸弹&#xff09; 范例2&#xff08;用信号发送书写功能检测用户是否输入&#xff0c;如…

OAuth2.0协议流程与授权模式、协议流程

什么是OAuth2.0OAuth&#xff08;Open Authorization&#xff09;是一个关于授权&#xff08;authorization&#xff09;的开放网络标准&#xff0c;允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息&#xff0c;而不需要将用户名和密码提供给第三方移动应用或分…

Java 如何优雅的导出 Excel

前言 公司项目最近有一个需要&#xff1a;报表导出。整个系统下来&#xff0c;起码超过一百张报表需要导出。这个时候如何优雅的实现报表导出&#xff0c;释放生产力就显得很重要了。下面主要给大家分享一下该工具类的使用方法与实现思路。 实现的功能点 对于每个报表都相同…

看零信任如何基于PKI体系实现数字信任

谈到安全&#xff0c;在万物互联的数字世界里&#xff0c;生活和工作之间的界限正在变得越来越模糊&#xff0c;传统的边界不再适用&#xff0c;传统的安全手段也不再适用。数字转型的步伐虽在不断加速&#xff0c;但威胁载体也在不断发展壮大&#xff0c;在数字互动过程中&…

从0到1完成一个Vue后台管理项目(三、使用SCSS/LESS,安装图标库)

往期 从0到1完成一个Vue后台管理项目&#xff08;一、创建项目&#xff09; 从0到1完成一个Vue后台管理项目&#xff08;二、使用element-ui&#xff09; 安装CSS预处理器 Sass cnpm i sass-loader7 node-sass4 -S 安装完就可以使用了&#xff0c;通过lang的方式 这里注意自…

C#,桌面编程入门(01)——按钮Button属性与事件、动态创建、快捷键、控件数组及自定义Button

本文是《桌面编程入门》系列文章的开山之篇。《桌面编程入门》系列文章主要介绍桌面编程的各种组件&#xff0c;Button&#xff0c;ComboBox&#xff0c;Panel&#xff0c;WebBrowser。。。。。。类似的文章非常多&#xff0c;深度不同&#xff0c;水平不等。1 桌面编程1.1 图形…

第六天作业部分

使用的文件内容 1&#xff1a;passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shut…

0. 【R、Rstudio、Rtools 】软件的安装 + 在Rstudio上永久修改(默认工作路径 + 默认安装包路径)

文章目录1.R软件安装2. Rstudio的安装3. Rtools 的安装4. 初始化Rstudio4.1 更改Rtudio的镜像为中国清华大学&#xff0c;下载包更快4.2. 修改默认工作路径 默认安装包路径全部都在官网下&#xff0c;都是免费的 1.R软件安装 访问官网&#xff1a;https://www.r-project.org/ …

React(coderwhy)- 04(css)

React中CSS的概述 组件化天下的CSS ◼ 前面说过&#xff0c;整个前端已经是组件化的天下&#xff1a;  而CSS的设计就不是为组件化而生的&#xff0c;所以在目前组件化的框架中都在需要一种合适的CSS解决方案。 ◼ 在组件化中选择合适的CSS解决方案应该符合以下条件&#xff…

为外贸软件花钱前,需要考虑的几大因素

当外贸企业发展壮大到一定程度时&#xff0c;购买一款适合公司、产品、业务的办公软件帮助员工更好的处理工作是必然的选择。如何挑选一款真正便捷高效的软件产品&#xff0c;特别是在花费几万甚至十几万购买外贸软件之前&#xff0c;一定要谨慎考虑以下几个问题。 一、使用便捷…

如何选择合适的文档管理解决方案?

如何选择合适的文档管理解决方案&#xff1f; 合适的文档管理解决方案有助于保护您的数据、数字化纸质流程、保持业务连续性、满足合规性标准并为审计做好准备。 但并非所有文档管理解决方案都相同 —— 要真正实现这些好处&#xff0c;您需要一个满足某些条件的系统。 文档管…

【Linux修炼】12.深入了解系统文件

每一个不曾起舞的日子&#xff0c;都是对生命的辜负。 文件fd一. 重新谈论文件1. 共识的问题2. 重谈C语言文件操作2.1 概要2.2 C语言文件实操2.3 OS接口open的使用&#xff08;比特位标记&#xff09;2.4 写入操作2.5 追加操作2.6 只读操作二. 如何理解文件1. 提出问题2. 文件描…

Java 空指针异常的若干解决方案

Java 中任何对象都有可能为空&#xff0c;当我们调用空对象的方法时就会抛出 NullPointerException 空指针异常&#xff0c;这是一种非常常见的错误类型。我们可以使用若干种方法来避免产生这类异常&#xff0c;使得我们的代码更为健壮。本文将列举这些解决方案&#xff0c;包括…

实验十六 BGP协议基本配置

实验十六 BGP协议基本配置边界网关协议BGP(Border Gateway Protocol)是一种实现自治系统AS(Autonomous System) 之间的路由可达&#xff0c;并选择最佳路由的距离矢量路由协议。 自治系统AS (Autonomous System) AS是指在一个实体管辖下的拥有相同选路策略的IP网络。BGP网络中的…

Vue3 实现验证码倒计时

前言 倒计时的运用场景&#xff1a;获取手机验证码倒计时、获取邮箱验证码倒计时等场景&#xff0c;废话不多说&#xff0c;开始吧。 实现效果 实现代码 html&#xff08;重要部分&#xff09; <template><el-button v-if"!sms.disabled" color"#f…

通达信l2接口如何用?

在股票量化投资领域中&#xff0c;通达信l2接口如何用的知识也是要知道和了解的&#xff0c;像现在特别多的团队已经开发有多种不一样的数据接口系统&#xff0c;主要是方便大家去查询行情的时候&#xff0c;能够很快的从这些l2数据接口中产生数据&#xff0c;直观的显示数据的…