From de164aed240eea82656674e7ae1991e2f4774ba1 Mon Sep 17 00:00:00 2001 From: shutao Date: Tue, 23 Jul 2024 18:46:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9Eobject=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages.json | 10 ++- pages/component/object/object.test.js | 18 ++++ pages/component/object/object.uvue | 39 +++++++++ uni_modules/uni-native-button/changelog.md | 0 .../native-button/native-button.vue | 53 +++++++++++ uni_modules/uni-native-button/package.json | 87 +++++++++++++++++++ uni_modules/uni-native-button/readme.md | 3 + .../utssdk/app-android/config.json | 3 + .../utssdk/app-android/index.uts | 34 ++++++++ 9 files changed, 246 insertions(+), 1 deletion(-) create mode 100644 pages/component/object/object.test.js create mode 100644 pages/component/object/object.uvue create mode 100644 uni_modules/uni-native-button/changelog.md create mode 100644 uni_modules/uni-native-button/components/native-button/native-button.vue create mode 100644 uni_modules/uni-native-button/package.json create mode 100644 uni_modules/uni-native-button/readme.md create mode 100644 uni_modules/uni-native-button/utssdk/app-android/config.json create mode 100644 uni_modules/uni-native-button/utssdk/app-android/index.uts diff --git a/pages.json b/pages.json index 0db6cc82..c30cb796 100644 --- a/pages.json +++ b/pages.json @@ -1751,7 +1751,15 @@ "navigationBarTitleText": "", "backgroundColorContent": "#fffae8" } - } + }, + // #ifdef APP-ANDROID + { + "path": "pages/component/object/object", + "style": { + "navigationBarTitleText": "自定义组件" + } + } + // #endif ], "globalStyle": { "pageOrientation": "portrait", diff --git a/pages/component/object/object.test.js b/pages/component/object/object.test.js new file mode 100644 index 00000000..692c9317 --- /dev/null +++ b/pages/component/object/object.test.js @@ -0,0 +1,18 @@ +describe('object.uvue', () => { + if (process.env.uniTestPlatformInfo.indexOf('web') > -1 || process.env.UNI_AUTOMATOR_APP_WEBVIEW == 'true') { + it('object', () => { + expect(1).toBe(1) + }) + return + } + beforeAll(async () => { + page = await program.reLaunch('/pages/component/object/object') + await page.waitFor('native-button'); + }); + + it('object检测init函数是否相应', async () => { + await page.waitFor(600) + const value = await page.data('isLoad') + expect(value).toBe(true) + }) +}) diff --git a/pages/component/object/object.uvue b/pages/component/object/object.uvue new file mode 100644 index 00000000..8e43433d --- /dev/null +++ b/pages/component/object/object.uvue @@ -0,0 +1,39 @@ + + + + + diff --git a/uni_modules/uni-native-button/changelog.md b/uni_modules/uni-native-button/changelog.md new file mode 100644 index 00000000..e69de29b diff --git a/uni_modules/uni-native-button/components/native-button/native-button.vue b/uni_modules/uni-native-button/components/native-button/native-button.vue new file mode 100644 index 00000000..239a077c --- /dev/null +++ b/uni_modules/uni-native-button/components/native-button/native-button.vue @@ -0,0 +1,53 @@ + + + + + diff --git a/uni_modules/uni-native-button/package.json b/uni_modules/uni-native-button/package.json new file mode 100644 index 00000000..dff99bce --- /dev/null +++ b/uni_modules/uni-native-button/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-native-button", + "displayName": "uni-native-button", + "version": "0.0.1", + "description": "vue开发button原生组件", + "keywords": [ + "tencent", + "map", + "tmap" + ], + "repository": "", + "engines": { + "HBuilderX": "^4.25" + }, + "dcloudext": { + "type": "uts", + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "插件不采集任何数据", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "Vue": { + "vue2": "n", + "vue3": "y" + }, + "App": { + "app-android": { + "minVersion": "21" + }, + "app-ios": { + "minVersion": "9" + } + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "u", + "QQ": "y", + "钉钉": "u", + "快手": "u", + "飞书": "u", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + } + } + } + } +} diff --git a/uni_modules/uni-native-button/readme.md b/uni_modules/uni-native-button/readme.md new file mode 100644 index 00000000..b8b3368f --- /dev/null +++ b/uni_modules/uni-native-button/readme.md @@ -0,0 +1,3 @@ +## native-button + +通过 object 分装原生平台Button按钮 diff --git a/uni_modules/uni-native-button/utssdk/app-android/config.json b/uni_modules/uni-native-button/utssdk/app-android/config.json new file mode 100644 index 00000000..bf959256 --- /dev/null +++ b/uni_modules/uni-native-button/utssdk/app-android/config.json @@ -0,0 +1,3 @@ +{ + "minSdkVersion": "21" +} \ No newline at end of file diff --git a/uni_modules/uni-native-button/utssdk/app-android/index.uts b/uni_modules/uni-native-button/utssdk/app-android/index.uts new file mode 100644 index 00000000..cfb237ba --- /dev/null +++ b/uni_modules/uni-native-button/utssdk/app-android/index.uts @@ -0,0 +1,34 @@ +import { Button } from "android.widget" + +export class NativeButton { + $element : UniObjectElement; + + constructor(element : UniObjectElement) { + this.$element = element; + bindView(); + } + + button : Button | null = null; + bindView() { + //通过UniElement.getAndroidActivity()获取android平台activity 用于创建view的上下文 + this.button = new Button($element.getAndroidActivity()!); //构建原生view + //限制原生Button 文案描述不自动大写 + this.button?.setAllCaps(false) + //监听原生Button点击事件 + this.button?.setOnClickListener(_ => { + const detail = {} + //构建自定义UniObjectCustomEvent返回对象 + const event = new UniObjectCustomEvent("click", detail) + //响应分发原生Button的点击事件 + $element.dispatchEvent(event) + }) + //UniObjectElement 绑定 安卓原生view + $element.bindAndroidView(button!); + } + + updateText(text: string) { + //更新原生Button 文案描述 + this.button?.setText(text) + } + +} -- GitLab