diff --git a/config.xml b/config.xml index f94e1699d961f5b1e4578a3413ca39aa130db880..1d1cadbef0f3e4be977098769f4b634905a881fd 100644 --- a/config.xml +++ b/config.xml @@ -3,7 +3,7 @@ myapp An awesome Ionic/Cordova app. Ionic Framework Team - + @@ -81,4 +81,9 @@ + + + + + diff --git a/package-lock.json b/package-lock.json index 50b89e86e4895f2753178a297dd4e81b5112ee1f..b15a6a7fbe06586b3b817f23da8adcb2a8f5c8f7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -99,6 +99,11 @@ "tslib": "1.9.0" } }, + "@ionic-native/camera": { + "version": "4.7.0", + "resolved": "http://registry.npm.taobao.org/@ionic-native/camera/download/@ionic-native/camera-4.7.0.tgz", + "integrity": "sha1-l1+v9ZmFBa968UjpjzO9F/2YcJE=" + }, "@ionic-native/core": { "version": "4.7.0", "resolved": "http://registry.npm.taobao.org/@ionic-native/core/download/@ionic-native/core-4.7.0.tgz", @@ -1085,6 +1090,830 @@ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, + "cordova-android": { + "version": "7.0.0", + "resolved": "http://registry.npm.taobao.org/cordova-android/download/cordova-android-7.0.0.tgz", + "integrity": "sha1-yVvt/PvDhjsYDE0p7/7E95Nh0Z0=", + "requires": { + "android-versions": "1.2.1", + "cordova-common": "2.2.0", + "elementtree": "0.1.6", + "nopt": "3.0.6", + "properties-parser": "0.2.3", + "q": "1.5.1", + "shelljs": "0.5.3" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true + }, + "android-versions": { + "version": "1.2.1", + "bundled": true + }, + "ansi": { + "version": "0.3.1", + "bundled": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "base64-js": { + "version": "0.0.8", + "bundled": true + }, + "big-integer": { + "version": "1.6.26", + "bundled": true + }, + "bplist-parser": { + "version": "0.1.1", + "bundled": true, + "requires": { + "big-integer": "1.6.26" + } + }, + "brace-expansion": { + "version": "1.1.8", + "bundled": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "cordova-common": { + "version": "2.2.0", + "bundled": true, + "requires": { + "ansi": "0.3.1", + "bplist-parser": "0.1.1", + "cordova-registry-mapper": "1.1.15", + "elementtree": "0.1.6", + "glob": "5.0.15", + "minimatch": "3.0.4", + "osenv": "0.1.4", + "plist": "1.2.0", + "q": "1.5.1", + "semver": "5.4.1", + "shelljs": "0.5.3", + "underscore": "1.8.3", + "unorm": "1.4.1" + } + }, + "cordova-registry-mapper": { + "version": "1.1.15", + "bundled": true + }, + "elementtree": { + "version": "0.1.6", + "bundled": true, + "requires": { + "sax": "0.3.5" + } + }, + "glob": { + "version": "5.0.15", + "bundled": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "lodash": { + "version": "3.10.1", + "bundled": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "nopt": { + "version": "3.0.6", + "bundled": true, + "requires": { + "abbrev": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "plist": { + "version": "1.2.0", + "bundled": true, + "requires": { + "base64-js": "0.0.8", + "util-deprecate": "1.0.2", + "xmlbuilder": "4.0.0", + "xmldom": "0.1.27" + } + }, + "properties-parser": { + "version": "0.2.3", + "bundled": true + }, + "q": { + "version": "1.5.1", + "bundled": true + }, + "sax": { + "version": "0.3.5", + "bundled": true + }, + "semver": { + "version": "5.4.1", + "bundled": true + }, + "shelljs": { + "version": "0.5.3", + "bundled": true + }, + "underscore": { + "version": "1.8.3", + "bundled": true + }, + "unorm": { + "version": "1.4.1", + "bundled": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "xmlbuilder": { + "version": "4.0.0", + "bundled": true, + "requires": { + "lodash": "3.10.1" + } + }, + "xmldom": { + "version": "0.1.27", + "bundled": true + } + } + }, + "cordova-browser": { + "version": "5.0.3", + "resolved": "http://registry.npm.taobao.org/cordova-browser/download/cordova-browser-5.0.3.tgz", + "integrity": "sha1-9+VCAv3wlpQ4XXjArYckEMsJTfU=", + "requires": { + "cordova-common": "2.2.0", + "cordova-serve": "2.0.0", + "nopt": "3.0.6", + "shelljs": "0.5.3" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true + }, + "accepts": { + "version": "1.3.4", + "bundled": true, + "requires": { + "mime-types": "2.1.17", + "negotiator": "0.6.1" + } + }, + "ansi": { + "version": "0.3.1", + "bundled": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "ansi-styles": { + "version": "2.2.1", + "bundled": true + }, + "array-flatten": { + "version": "1.1.1", + "bundled": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "base64-js": { + "version": "0.0.8", + "bundled": true + }, + "big-integer": { + "version": "1.6.26", + "bundled": true + }, + "body-parser": { + "version": "1.18.2", + "bundled": true, + "requires": { + "bytes": "3.0.0", + "content-type": "1.0.4", + "debug": "2.6.9", + "depd": "1.1.1", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "on-finished": "2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "1.6.15" + } + }, + "bplist-parser": { + "version": "0.1.1", + "bundled": true, + "requires": { + "big-integer": "1.6.26" + } + }, + "brace-expansion": { + "version": "1.1.8", + "bundled": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "bytes": { + "version": "3.0.0", + "bundled": true + }, + "chalk": { + "version": "1.1.3", + "bundled": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "compressible": { + "version": "2.0.12", + "bundled": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "compression": { + "version": "1.7.1", + "bundled": true, + "requires": { + "accepts": "1.3.4", + "bytes": "3.0.0", + "compressible": "2.0.12", + "debug": "2.6.9", + "on-headers": "1.0.1", + "safe-buffer": "5.1.1", + "vary": "1.1.2" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "content-disposition": { + "version": "0.5.2", + "bundled": true + }, + "content-type": { + "version": "1.0.4", + "bundled": true + }, + "cookie": { + "version": "0.3.1", + "bundled": true + }, + "cookie-signature": { + "version": "1.0.6", + "bundled": true + }, + "cordova-common": { + "version": "2.2.0", + "bundled": true, + "requires": { + "ansi": "0.3.1", + "bplist-parser": "0.1.1", + "cordova-registry-mapper": "1.1.15", + "elementtree": "0.1.6", + "glob": "5.0.15", + "minimatch": "3.0.4", + "osenv": "0.1.4", + "plist": "1.2.0", + "q": "1.5.1", + "semver": "5.4.1", + "shelljs": "0.5.3", + "underscore": "1.8.3", + "unorm": "1.4.1" + } + }, + "cordova-registry-mapper": { + "version": "1.1.15", + "bundled": true + }, + "cordova-serve": { + "version": "2.0.0", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "compression": "1.7.1", + "express": "4.16.2", + "open": "0.0.5", + "shelljs": "0.5.3" + } + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.1", + "bundled": true + }, + "destroy": { + "version": "1.0.4", + "bundled": true + }, + "ee-first": { + "version": "1.1.1", + "bundled": true + }, + "elementtree": { + "version": "0.1.6", + "bundled": true, + "requires": { + "sax": "0.3.5" + } + }, + "encodeurl": { + "version": "1.0.1", + "bundled": true + }, + "escape-html": { + "version": "1.0.3", + "bundled": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true + }, + "etag": { + "version": "1.8.1", + "bundled": true + }, + "express": { + "version": "4.16.2", + "bundled": true, + "requires": { + "accepts": "1.3.4", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "1.1.1", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.1", + "finalhandler": "1.1.0", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "2.0.2", + "qs": "6.5.1", + "range-parser": "1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.1", + "serve-static": "1.13.1", + "setprototypeof": "1.1.0", + "statuses": "1.3.1", + "type-is": "1.6.15", + "utils-merge": "1.0.1", + "vary": "1.1.2" + } + }, + "finalhandler": { + "version": "1.1.0", + "bundled": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" + } + }, + "forwarded": { + "version": "0.1.2", + "bundled": true + }, + "fresh": { + "version": "0.5.2", + "bundled": true + }, + "glob": { + "version": "5.0.15", + "bundled": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "http-errors": { + "version": "1.6.2", + "bundled": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.3.1" + }, + "dependencies": { + "setprototypeof": { + "version": "1.0.3", + "bundled": true + } + } + }, + "iconv-lite": { + "version": "0.4.19", + "bundled": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ipaddr.js": { + "version": "1.5.2", + "bundled": true + }, + "lodash": { + "version": "3.10.1", + "bundled": true + }, + "media-typer": { + "version": "0.3.0", + "bundled": true + }, + "merge-descriptors": { + "version": "1.0.1", + "bundled": true + }, + "methods": { + "version": "1.1.2", + "bundled": true + }, + "mime": { + "version": "1.4.1", + "bundled": true + }, + "mime-db": { + "version": "1.30.0", + "bundled": true + }, + "mime-types": { + "version": "2.1.17", + "bundled": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true + }, + "negotiator": { + "version": "0.6.1", + "bundled": true + }, + "nopt": { + "version": "3.0.6", + "bundled": true, + "requires": { + "abbrev": "1.1.1" + } + }, + "on-finished": { + "version": "2.3.0", + "bundled": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.1", + "bundled": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "open": { + "version": "0.0.5", + "bundled": true + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "parseurl": { + "version": "1.3.2", + "bundled": true + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "path-to-regexp": { + "version": "0.1.7", + "bundled": true + }, + "plist": { + "version": "1.2.0", + "bundled": true, + "requires": { + "base64-js": "0.0.8", + "util-deprecate": "1.0.2", + "xmlbuilder": "4.0.0", + "xmldom": "0.1.27" + } + }, + "proxy-addr": { + "version": "2.0.2", + "bundled": true, + "requires": { + "forwarded": "0.1.2", + "ipaddr.js": "1.5.2" + } + }, + "q": { + "version": "1.5.1", + "bundled": true + }, + "qs": { + "version": "6.5.1", + "bundled": true + }, + "range-parser": { + "version": "1.2.0", + "bundled": true + }, + "raw-body": { + "version": "2.3.2", + "bundled": true, + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true + }, + "sax": { + "version": "0.3.5", + "bundled": true + }, + "semver": { + "version": "5.4.1", + "bundled": true + }, + "send": { + "version": "0.16.1", + "bundled": true, + "requires": { + "debug": "2.6.9", + "depd": "1.1.1", + "destroy": "1.0.4", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.1", + "fresh": "0.5.2", + "http-errors": "1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.3.1" + } + }, + "serve-static": { + "version": "1.13.1", + "bundled": true, + "requires": { + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.16.1" + } + }, + "setprototypeof": { + "version": "1.1.0", + "bundled": true + }, + "shelljs": { + "version": "0.5.3", + "bundled": true + }, + "statuses": { + "version": "1.3.1", + "bundled": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "2.0.0", + "bundled": true + }, + "type-is": { + "version": "1.6.15", + "bundled": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.17" + } + }, + "underscore": { + "version": "1.8.3", + "bundled": true + }, + "unorm": { + "version": "1.4.1", + "bundled": true + }, + "unpipe": { + "version": "1.0.0", + "bundled": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "utils-merge": { + "version": "1.0.1", + "bundled": true + }, + "vary": { + "version": "1.1.2", + "bundled": true + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "xmlbuilder": { + "version": "4.0.0", + "bundled": true, + "requires": { + "lodash": "3.10.1" + } + }, + "xmldom": { + "version": "0.1.27", + "bundled": true + } + } + }, + "cordova-plugin-camera": { + "version": "4.0.3", + "resolved": "http://registry.npm.taobao.org/cordova-plugin-camera/download/cordova-plugin-camera-4.0.3.tgz", + "integrity": "sha1-c3Olk4MYyGzP2E43E+I4LRD+B2s=" + }, + "cordova-plugin-device": { + "version": "2.0.2", + "resolved": "http://registry.npm.taobao.org/cordova-plugin-device/download/cordova-plugin-device-2.0.2.tgz", + "integrity": "sha1-/Ajzci5n7ve2xnv8mag99q3Quro=" + }, + "cordova-plugin-ionic-keyboard": { + "version": "2.0.5", + "resolved": "http://registry.npm.taobao.org/cordova-plugin-ionic-keyboard/download/cordova-plugin-ionic-keyboard-2.0.5.tgz", + "integrity": "sha1-x8Nf/Y9qHvd+J6Hu5wzKoulPmeE=" + }, + "cordova-plugin-ionic-webview": { + "version": "1.1.19", + "resolved": "http://registry.npm.taobao.org/cordova-plugin-ionic-webview/download/cordova-plugin-ionic-webview-1.1.19.tgz", + "integrity": "sha1-fxjTApEVPEBm9Sk5mo2CJqpPso4=" + }, + "cordova-plugin-splashscreen": { + "version": "5.0.2", + "resolved": "http://registry.npm.taobao.org/cordova-plugin-splashscreen/download/cordova-plugin-splashscreen-5.0.2.tgz", + "integrity": "sha1-dH509W4gHNWFvGLRS8oZ9oZ/8e0=" + }, + "cordova-plugin-whitelist": { + "version": "1.3.3", + "resolved": "http://registry.npm.taobao.org/cordova-plugin-whitelist/download/cordova-plugin-whitelist-1.3.3.tgz", + "integrity": "sha1-tehezbv+Wu3tQKG/TuI3LmfZb7Q=" + }, "core-util-is": { "version": "1.0.2", "resolved": "http://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz", diff --git a/package.json b/package.json index e08572be0bc70b7e894b16a93679d3a4c6c53ea0..9c641592ce3350f1269bb93d3fadc61a03a2429e 100644 --- a/package.json +++ b/package.json @@ -21,10 +21,19 @@ "@angular/http": "5.2.10", "@angular/platform-browser": "5.2.10", "@angular/platform-browser-dynamic": "5.2.10", + "@ionic-native/camera": "^4.7.0", "@ionic-native/core": "4.7.0", "@ionic-native/splash-screen": "4.7.0", "@ionic-native/status-bar": "4.7.0", "@ionic/storage": "2.1.3", + "cordova-android": "^7.0.0", + "cordova-browser": "5.0.3", + "cordova-plugin-camera": "^4.0.3", + "cordova-plugin-device": "2.0.2", + "cordova-plugin-ionic-keyboard": "2.0.5", + "cordova-plugin-ionic-webview": "1.1.19", + "cordova-plugin-splashscreen": "5.0.2", + "cordova-plugin-whitelist": "1.3.3", "ionic-angular": "3.9.2", "ionicons": "3.0.0", "rxjs": "5.5.10", @@ -35,5 +44,19 @@ "@ionic/app-scripts": "3.1.9", "typescript": "~2.6.2" }, - "description": "An Ionic project" -} + "description": "An Ionic project", + "cordova": { + "plugins": { + "cordova-plugin-whitelist": {}, + "cordova-plugin-device": {}, + "cordova-plugin-splashscreen": {}, + "cordova-plugin-ionic-webview": {}, + "cordova-plugin-ionic-keyboard": {}, + "cordova-plugin-camera": {} + }, + "platforms": [ + "android", + "browser" + ] + } +} \ No newline at end of file diff --git a/readme.md b/readme.md index 9efb774f922427cab6e8e8b3b60755f623f82b19..76db4bf89e52abc52542327174688c729107111c 100644 --- a/readme.md +++ b/readme.md @@ -43,3 +43,336 @@ ionic g component ui ****** +### 页面修改为懒加载(组件报错) + +### + +******* + +### 组件修改为懒加载 + + + +************* + +### 引入轮播图 并开启自动轮播 + +>标签ion-slides上的属性配置 pager loop="true" autoplay="3000" +> +>page表示轮播图开启显示当前页码,loop="true"表示开启循环播放 autoplay="3000"表示每个3秒钟自动播放一次。 + + + +******* + +### 引入tab 栏segment 并ts 设定默认选中第一个tab + + + +***** + +### 在android 手机上运行测试 + +参考:http://www.cnblogs.com/wangpinzhou/articles/8948482.html + +http://www.cnblogs.com/wangpinzhou/articles/8949923.html + +``` +cordova platform add android +cordova run android +// 环境安装总报错是建议重启电脑换时间段再试; + +``` + +>cordova run android命令等于cordova build android(生成apk)和adb install -r apk路径(安装apk到真机) +>如果代码有修改,记得先执行ionic serve或者使用ionic cordova run android + + + +*************** + +###生成app图标 splash 图片 + +将 resources文件夹下的 icon 和 splash 图标替换; 格式png/ psd + +``` +$ ionic cordova resources android --icon +$ ionic cordova resources android --splash + +或全部生成 ionic cordova resources +``` + +第一次 生成 有提示 Email 及密码; 在ionic 官网注册免费版即可; +网址https://dashboard.ionicframework.com/apps + + + +************ + +### 打包app 并签名 (签名后才可以安装手机使用) + + + +### 打包 + +``` +ionic cordova build android --release +``` + +(如果这条命令有问题,可以去掉–release然后debug编译,编译完成Dos会显示apk目录位置) + +Build Success! 说明成功打包;命令行结束会提示你apk的生成位置。 + +如果报错,根据报错情况,下载对应的sdk 包 ; + +### 签名 + +[Android应用程序签名(或重新签名)详解](https://blog.csdn.net/yu17310133443/article/details/52701492) + +打包后文件必须签名才可安装使用; + +在JDK目录下的bin文件夹下有 keytool.exe和jarsigner.exe文件,这两个程序用于给APK签名,签名以后即可发布安装; + +配置环境变量;见前面的链接 + +找到 打包后的app 文件夹,运行命令行; + +``` +keytool -genkey -v -keystore dome.keystore -alias dome.keystore -keyalg RSA -validity 20000 +``` + +``` +/*说明:-genkey 产生密钥 + +-alias demo.keystore 别名 demo.keystore + +-keyalg RSA 使用RSA算法对签名加密 + +-validity 40000 有效期限4000天 + +-keystore demo.keystore */ +``` + +``` +jarsigner -verbose -keystore dome.keystore -signedjar notepad_signed.apk(新文件名) notepad.apk(旧文件名) dome.keystore +``` + +``` +/*说明:-verbose 输出签名的详细信息 + +-keystore demo.keystore 密钥库位置 + +-signedjar demor_signed.apk demo.apk demo.keystore 正式签名,三个参数中依次为签名后产生的文件demo_signed,要签名的文件demo.apk和密钥库demo.keystore.*/ +``` + + + +************* + +### 调用 原生 Camera + +参考官方文档: + +##### 安装Cordova and Ionic Native plugins: + +``` +$ ionic cordova plugin add cordova-plugin-camera +$ npm install --save @ionic-native/camera +``` + +##### 增加插件(plugin)到项目应用模块 app.module.ts + +``` +import { Camera } from '@ionic-native/camera'; + +... + +@NgModule({ + ... + + providers: [ + ... + Camera + ... + ] + ... +}) +export class AppModule { } +``` + +##### Camera 支持的平台(platforms) + +> - Android +> - Browser +> - iOS +> - Windows + +``` + // 这里注意;在chrome 打开时用 + ionic cordova platform add browser + ionic cordova run browser +``` + + +将图片存为 base64 并用*ngFor渲染到 html 上的轮播图slides中; + +增加一个clear Button ; + +没有图片时 用*ngIf *ngIf="images.length>'0'" 隐藏slides; + + + +*********** + +## 页面跳转的方式 + +### (1)NavController + +1.在first.ts中,先导入NavController,再注入到构造器中。 + +``` +import { NavController } from 'ionic-angular'; +class FirstPage { + constructor(public navCtrl: NavController) { } +} + +``` + +2.然后导入要跳转到的页面,再定义跳转按钮触发的跳转方法,调用push方法跳转 + +``` +import { SecondPage } from '../second/second'; +class FirstPage { +constructor(public navCtrl: NavController) { } + goSecondPage(){ + this.navCtrl.push(SecondPage); + } +} + +``` + +3.在模板中写上按钮绑定事件: + +``` + +``` + +> 报错 No component factory found for “......” + +**解决办法:在app.module.ts 中引入新模块,并在declarations,entryComponents里面添加新模块即可。** + +***** + +#### 改为懒加载 + +app.module.ts中删除引入; + +``` + this.navCtrl.push("SecondPage"); //页面增加双引号; +``` + + + +******** + +###(2)[navPush]指令 + +同样,先导入SecondPage,然后定义一个变量,将SecondPage赋值给它。然后在模板中,向button添加[navPush]属性,绑定pushPage,实现跳转 + +``` +import { SecondPage } from '../second/second'; + +class FirstPage { + pushPage; + constructor(){ + this.pushPage = SecondPage; // 使用懒加载时app.module.ts不用引入页面;这里改为加双引号: "SecondPage" + } +} +模板中: + +``` + + + +*********** + +## 将参数传递给下一个页面 + +### (1)NavController + +为push函数添加第二个参数(发送页面) + +假设我们要为TestPage传入一个标题,用来显示到页面上,我们为push方法传入一个对象。 + +``` + pushTestPage(){ + this.navCtrl.push(TestPage,{ + title:'没有人可以比我帅' + }); + } +``` + +引入NavParam并使用(接受页面) + +利用NavParams的get方法,可以将传进来的页面参数读取出来。 +切换到 test.ts,完成三个步骤 +1.引入NavParams并,并在构造函数添加注入语句 +2.为TestPage类添加title属性,读取参数并赋给title +3.将title输出到模板中 + +- 文件 test.ts + +``` +import { Component } from '@angular/core' + +import { NavParams } from 'ionic-angular' //step1 + +@Component({ + selector: 'page-test', + templateUrl:'./test.html' +}) +export class TestPage { + + title:string; //step2 + + constructor(public params:NavParams){ //step1 + this.title=this.params.get('title'); //step2 + } +} +``` + +### (2)[navPush]指令 + +``` + +``` + +## 另一种页面跳转 ModalController:(类似模态框) + +modal:一个覆盖整个屏幕的overlay,可认为是一个特殊的page。Modals不可重用。当一个modal被关闭(或覆盖)后,它将被毁灭(从堆栈中去除)。 +比如,qq登录,你登录成功后,即使你隐藏了页面的返回按钮,安卓手机也是可以使用返回键跳回上一个页面的,那一按返回又退回了登录页面,这显然不是我们想要的,我们需要在登录后销毁页面。 + +``` +import { ModalController } from 'ionic-angular'; +import { SecondPage } from '../second/second'; + + +@Component(...) +class FirstPage { + constructor(public modalCtrl: ModalController) {} + presentSecondPage () { + let SecondPage = this.modalCtrl.create("SecondPage"); + SecondPage.present(); + } +} + +``` + +同样在模板中用button触发该方法。 + +#### 返回上一页面 + +` this.navCtrl.pop();` + + + diff --git a/resources/android/icon/drawable-hdpi-icon.png b/resources/android/icon/drawable-hdpi-icon.png index b9100934dac7ce92fd44c4c90aa50b1469d67c04..5dc06898a715be4b4474ff40f8e8b8c5d6d2d2e1 100644 Binary files a/resources/android/icon/drawable-hdpi-icon.png and b/resources/android/icon/drawable-hdpi-icon.png differ diff --git a/resources/android/icon/drawable-ldpi-icon.png b/resources/android/icon/drawable-ldpi-icon.png index 16cd5dba33faeda3f256eaba98fab310ba722778..ac88f18e1a299d6500377f91e97fa975f013c08d 100644 Binary files a/resources/android/icon/drawable-ldpi-icon.png and b/resources/android/icon/drawable-ldpi-icon.png differ diff --git a/resources/android/icon/drawable-mdpi-icon.png b/resources/android/icon/drawable-mdpi-icon.png index 64a6cbc52de2a6cad2d8a0f23c19ede85d62b7a5..684dfcab91cd30867661a118c254d6e2ba44119c 100644 Binary files a/resources/android/icon/drawable-mdpi-icon.png and b/resources/android/icon/drawable-mdpi-icon.png differ diff --git a/resources/android/icon/drawable-xhdpi-icon.png b/resources/android/icon/drawable-xhdpi-icon.png index 1605f695fa85116686adfcc5bb760879c6b40dd8..0274a979cf660ab524b4469ee709f5a68c09f05f 100644 Binary files a/resources/android/icon/drawable-xhdpi-icon.png and b/resources/android/icon/drawable-xhdpi-icon.png differ diff --git a/resources/android/icon/drawable-xxhdpi-icon.png b/resources/android/icon/drawable-xxhdpi-icon.png index 56fb29e64e62d8afc5488de5f4ab6119becc6901..eb1de15ca3217834ee961690e17803fe8bc109c0 100644 Binary files a/resources/android/icon/drawable-xxhdpi-icon.png and b/resources/android/icon/drawable-xxhdpi-icon.png differ diff --git a/resources/android/icon/drawable-xxxhdpi-icon.png b/resources/android/icon/drawable-xxxhdpi-icon.png index e4a915254b11c257a9803d2e543b9f8358911e1e..bd1d4f101044f13c85fbf3c2370feac8da00087d 100644 Binary files a/resources/android/icon/drawable-xxxhdpi-icon.png and b/resources/android/icon/drawable-xxxhdpi-icon.png differ diff --git a/resources/android/splash/drawable-land-hdpi-screen.png b/resources/android/splash/drawable-land-hdpi-screen.png index 66b12feae4c452712f980111a029f47929ebc97c..e98acffabf2f10d558e7d51c9eff17b6a6cac336 100644 Binary files a/resources/android/splash/drawable-land-hdpi-screen.png and b/resources/android/splash/drawable-land-hdpi-screen.png differ diff --git a/resources/android/splash/drawable-land-ldpi-screen.png b/resources/android/splash/drawable-land-ldpi-screen.png index 7dceec7b7839e6dff6dca211af6e54d696ca7762..71fec23eb694ac3ef51068690d11cb16060d5fec 100644 Binary files a/resources/android/splash/drawable-land-ldpi-screen.png and b/resources/android/splash/drawable-land-ldpi-screen.png differ diff --git a/resources/android/splash/drawable-land-mdpi-screen.png b/resources/android/splash/drawable-land-mdpi-screen.png index 0dc2ba75fba77e6fc273af17ad6f2740e2e909d3..9c4dadcc662d4b87d336510229a0b770aa12b8bc 100644 Binary files a/resources/android/splash/drawable-land-mdpi-screen.png and b/resources/android/splash/drawable-land-mdpi-screen.png differ diff --git a/resources/android/splash/drawable-land-xhdpi-screen.png b/resources/android/splash/drawable-land-xhdpi-screen.png index 39ae00c33dd22b801a78f305bcdb99f9ec7a5a44..9826afc9901cbad1a5c834b9e812f542a6ea506d 100644 Binary files a/resources/android/splash/drawable-land-xhdpi-screen.png and b/resources/android/splash/drawable-land-xhdpi-screen.png differ diff --git a/resources/android/splash/drawable-land-xxhdpi-screen.png b/resources/android/splash/drawable-land-xxhdpi-screen.png index 3f591b1e6a0b0213e7faca4c32c4525db1f517ff..f125fa239fdb43abf587af39e7d320557197da98 100644 Binary files a/resources/android/splash/drawable-land-xxhdpi-screen.png and b/resources/android/splash/drawable-land-xxhdpi-screen.png differ diff --git a/resources/android/splash/drawable-land-xxxhdpi-screen.png b/resources/android/splash/drawable-land-xxxhdpi-screen.png index 253e6f1834511ed0d5a91c8701f7edffbb4d8a45..20b102e599b68b9124e63221d77e80e35d5909be 100644 Binary files a/resources/android/splash/drawable-land-xxxhdpi-screen.png and b/resources/android/splash/drawable-land-xxxhdpi-screen.png differ diff --git a/resources/android/splash/drawable-port-hdpi-screen.png b/resources/android/splash/drawable-port-hdpi-screen.png index e0dbb62f2ba12fc0fcc462b9f48207af683efbcb..dafffb1dc73f21c0fb2f76acecf944faaaeae097 100644 Binary files a/resources/android/splash/drawable-port-hdpi-screen.png and b/resources/android/splash/drawable-port-hdpi-screen.png differ diff --git a/resources/android/splash/drawable-port-ldpi-screen.png b/resources/android/splash/drawable-port-ldpi-screen.png index 8e93c2d642ef802e83195f67ee3132a59e27dcd5..9c31652485f3137e1c8380499b4936086623f935 100644 Binary files a/resources/android/splash/drawable-port-ldpi-screen.png and b/resources/android/splash/drawable-port-ldpi-screen.png differ diff --git a/resources/android/splash/drawable-port-mdpi-screen.png b/resources/android/splash/drawable-port-mdpi-screen.png index 0aaad62bf54b00c139487886748a46a3d7a17036..ecd495683864e3fb6ae3fcc6c81fdb0a43b9814d 100644 Binary files a/resources/android/splash/drawable-port-mdpi-screen.png and b/resources/android/splash/drawable-port-mdpi-screen.png differ diff --git a/resources/android/splash/drawable-port-xhdpi-screen.png b/resources/android/splash/drawable-port-xhdpi-screen.png index 64c27f8a66ec53a569741e5726f19cf2bdd35bf2..b3832ea45390118e10e2f9a59e7c1cfc8e28533d 100644 Binary files a/resources/android/splash/drawable-port-xhdpi-screen.png and b/resources/android/splash/drawable-port-xhdpi-screen.png differ diff --git a/resources/android/splash/drawable-port-xxhdpi-screen.png b/resources/android/splash/drawable-port-xxhdpi-screen.png index f605e6a3d58fdd63e472b4820d079450ff3ad2a9..4a006052685a6b71dcecee4f18c1aeecd7bc98e2 100644 Binary files a/resources/android/splash/drawable-port-xxhdpi-screen.png and b/resources/android/splash/drawable-port-xxhdpi-screen.png differ diff --git a/resources/android/splash/drawable-port-xxxhdpi-screen.png b/resources/android/splash/drawable-port-xxxhdpi-screen.png index 2b993cff7758f7cebb1cafc09397a20b39f2a923..a51e237499a45678a02cfbe26dc9297ee64c0886 100644 Binary files a/resources/android/splash/drawable-port-xxxhdpi-screen.png and b/resources/android/splash/drawable-port-xxxhdpi-screen.png differ diff --git a/resources/icon.png b/resources/icon.png index bee77667f603fb18bded673bb3820e7af33cbe37..2ade36a9d3d83c34e03753d83b88c0ea9c76ec79 100644 Binary files a/resources/icon.png and b/resources/icon.png differ diff --git a/resources/splash.png b/resources/splash.png index 960cb82a4a2fa717ab129d9c981f5ac755603d3f..d820b28cc956fe75ac7e875e4863177eb16f0b10 100644 Binary files a/resources/splash.png and b/resources/splash.png differ diff --git a/src/app/app.component.ts b/src/app/app.component.ts index a28e8d243b74cfda61ac5790b531cd53e46e8ff0..0dad3e3c378a988741ca6887aeb8f36823c6f7b0 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -3,13 +3,13 @@ import { Platform } from 'ionic-angular'; import { StatusBar } from '@ionic-native/status-bar'; import { SplashScreen } from '@ionic-native/splash-screen'; -import { TabsPage } from '../pages/tabs/tabs'; +// import { TabsPage } from '../pages/tabs/tabs'; @Component({ templateUrl: 'app.html' }) export class MyApp { - rootPage:any = TabsPage; + rootPage:any = "TabsPage"; constructor(platform: Platform, statusBar: StatusBar, splashScreen: SplashScreen) { platform.ready().then(() => { diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 7a3e346a290b6f32f828e96828b4da3adcdb1b56..d8e47b94a3336832bc829d8fa4492bf5c46e7c27 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -1,45 +1,50 @@ import { NgModule, ErrorHandler } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; -import { ComponentsModule } from '../components/components.module'; +// import { ComponentsModule } from '../components/components.module'; import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular'; import { MyApp } from './app.component'; -import { AboutPage } from '../pages/about/about'; -import { ContactPage } from '../pages/contact/contact'; -import { HomePage } from '../pages/home/home'; -import { TabsPage } from '../pages/tabs/tabs'; -import { IonicUiPage } from '../pages/ionic-ui/ionic-ui'; +// import { AboutPage } from '../pages/about/about'; +// import { ContactPage } from '../pages/contact/contact'; +// import { HomePage } from '../pages/home/home'; +// import { TabsPage } from '../pages/tabs/tabs'; +// import { IonicUiPage } from '../pages/ionic-ui/ionic-ui'; +// import { Testpage1Page } from "../pages/testpage1/testpage1"; import { StatusBar } from '@ionic-native/status-bar'; import { SplashScreen } from '@ionic-native/splash-screen'; +import { Camera } from '@ionic-native/camera'; @NgModule({ declarations: [ MyApp, - AboutPage, - ContactPage, - HomePage, - TabsPage, - IonicUiPage + // AboutPage, + // ContactPage, + // HomePage, + // TabsPage, + // IonicUiPage + // Testpage1Page ], imports: [ BrowserModule, IonicModule.forRoot(MyApp), - ComponentsModule + // ComponentsModule ], bootstrap: [IonicApp], entryComponents: [ MyApp, - AboutPage, - ContactPage, - HomePage, - TabsPage, - IonicUiPage + // AboutPage, + // ContactPage, + // HomePage, + // TabsPage, + // IonicUiPage + // Testpage1Page ], providers: [ StatusBar, SplashScreen, - {provide: ErrorHandler, useClass: IonicErrorHandler} + {provide: ErrorHandler, useClass: IonicErrorHandler}, + Camera ] }) export class AppModule {} diff --git a/src/components/ui/ui.module.ts b/src/components/ui/ui.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..51e60f0697a5ec2f22bfab607e58dcfdaa1ab98a --- /dev/null +++ b/src/components/ui/ui.module.ts @@ -0,0 +1,16 @@ +import { NgModule } from '@angular/core'; +import { IonicModule } from 'ionic-angular'; +import { UiComponent } from "./ui"; + +@NgModule({ + declarations: [ + UiComponent + ], + imports: [ + ], + exports: [ + UiComponent + ], + providers: [], +}) +export class UiComponentModule {} \ No newline at end of file diff --git a/src/pages/about/about.module.ts b/src/pages/about/about.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..d45d700462896308e04a7aa091dec544ecac6d29 --- /dev/null +++ b/src/pages/about/about.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from 'ionic-angular'; +import { AboutPage } from './about'; + +@NgModule({ + declarations: [ + AboutPage, + ], + imports: [ + IonicPageModule.forChild(AboutPage), + ], +}) +export class AboutPageModule { } diff --git a/src/pages/about/about.ts b/src/pages/about/about.ts index a7ee80a7787644b43e5b9f49e2df0f63bb21219d..e0018ac32d184d64d1580896131997cce409aadf 100644 --- a/src/pages/about/about.ts +++ b/src/pages/about/about.ts @@ -1,6 +1,6 @@ import { Component } from '@angular/core'; -import { NavController } from 'ionic-angular'; - +import { NavController, IonicPage } from 'ionic-angular'; +@IonicPage() @Component({ selector: 'page-about', templateUrl: 'about.html' diff --git a/src/pages/contact/contact.module.ts b/src/pages/contact/contact.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..d6273f845f7d90160250bffa12866b9d0bb3da72 --- /dev/null +++ b/src/pages/contact/contact.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from 'ionic-angular'; +import { ContactPage } from './contact'; + +@NgModule({ + declarations: [ + ContactPage, + ], + imports: [ + IonicPageModule.forChild(ContactPage), + ], +}) +export class ContactPageModule { } diff --git a/src/pages/contact/contact.ts b/src/pages/contact/contact.ts index 3ccadc99b5a85a2c31c31076d86341d12959fedb..3883767e73d831a71f7d6f82d54d2626119f1c2d 100644 --- a/src/pages/contact/contact.ts +++ b/src/pages/contact/contact.ts @@ -1,6 +1,6 @@ import { Component } from '@angular/core'; -import { NavController } from 'ionic-angular'; - +import { NavController, IonicPage } from 'ionic-angular'; +@IonicPage() @Component({ selector: 'page-contact', templateUrl: 'contact.html' diff --git a/src/pages/home/home.module.ts b/src/pages/home/home.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..01cc2fd56a8d3ff45bc7414b39eb9992527c5b7c --- /dev/null +++ b/src/pages/home/home.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from 'ionic-angular'; +import { HomePage } from './home'; + +@NgModule({ + declarations: [ + HomePage, + ], + imports: [ + IonicPageModule.forChild(HomePage), + ], +}) +export class HomePageModule { } diff --git a/src/pages/home/home.ts b/src/pages/home/home.ts index 1d510dd2d3172ddeebdb677568df790c29b55f5d..9f0ed99512faf5d311e203e43db2c0ea126fd2eb 100644 --- a/src/pages/home/home.ts +++ b/src/pages/home/home.ts @@ -1,6 +1,6 @@ import { Component } from '@angular/core'; -import { NavController } from 'ionic-angular'; - +import { NavController, IonicPage } from 'ionic-angular'; +@IonicPage() @Component({ selector: 'page-home', templateUrl: 'home.html' diff --git a/src/pages/ionic-ui/ionic-ui.html b/src/pages/ionic-ui/ionic-ui.html index de995351d6b30412df72c2b969b86ae4c5ecc66e..708c9021d664ae33e3e276b2ef9ec0c11bbc3dcf 100644 --- a/src/pages/ionic-ui/ionic-ui.html +++ b/src/pages/ionic-ui/ionic-ui.html @@ -13,7 +13,75 @@ - + + + + + + + +

Slide 1

+
+ + + +

Slide 2

+
+ + + +

Slide 3

+
+ + + +

Slide 3

+
+ +
+ +
+ + + TAB1 + + + TAB2 + + +
+ +
+ + + + + +

Ruby

+
+ ... +
+ + + + + + +

Luna

+
+ ... +
+
+ +
+

页面跳转1

+ + +

页面跳转2 --传参数

+ + +

页面跳转3 --modalcontroller

+
diff --git a/src/pages/ionic-ui/ionic-ui.module.ts b/src/pages/ionic-ui/ionic-ui.module.ts index 3a560c873f8b2be76bca3b9c02b0322e15d3a4a9..9772ed6ec60d7d4cd46acba4ce45dd0bea94338b 100644 --- a/src/pages/ionic-ui/ionic-ui.module.ts +++ b/src/pages/ionic-ui/ionic-ui.module.ts @@ -1,13 +1,13 @@ import { NgModule } from '@angular/core'; import { IonicPageModule } from 'ionic-angular'; import { IonicUiPage } from './ionic-ui'; - +import { UiComponentModule } from "../../components/ui/ui.module"; @NgModule({ declarations: [ IonicUiPage, ], imports: [ - IonicPageModule.forChild(IonicUiPage), + IonicPageModule.forChild(IonicUiPage),UiComponentModule ], }) export class IonicUiPageModule {} diff --git a/src/pages/ionic-ui/ionic-ui.scss b/src/pages/ionic-ui/ionic-ui.scss index 3e89dfb06d9bb6e373e380255130b8e326336e7c..aae0bac9a4f945ff93cacb5bbbc2f8570336df02 100644 --- a/src/pages/ionic-ui/ionic-ui.scss +++ b/src/pages/ionic-ui/ionic-ui.scss @@ -1 +1,12 @@ -page-ionic-ui {} +page-ionic-ui { + ion-slides { + height: 35vh; + ion-slide { + height: 100%; + img { + display: block; + height: 100%!important; + } + } + } +} \ No newline at end of file diff --git a/src/pages/ionic-ui/ionic-ui.ts b/src/pages/ionic-ui/ionic-ui.ts index 312019e1bab9f97793b105cac5d5edaf44accb9a..3c93aed78922995a41b67e527c7c72e37cffaca7 100644 --- a/src/pages/ionic-ui/ionic-ui.ts +++ b/src/pages/ionic-ui/ionic-ui.ts @@ -1,6 +1,10 @@ -import { Component } from '@angular/core'; -import { IonicPage, NavController, NavParams } from 'ionic-angular'; +import { Component, ViewChild} from '@angular/core'; +import { IonicPage, NavController, NavParams, ModalController } from 'ionic-angular'; +import { Slides } from 'ionic-angular'; +// import { ModalControllerPage } from "../modal-controller/modal-controller"; +// import { Testpage1Page } from '../testpage1/testpage1'; +// import { Testpage2Page } from "../testpage2/testpage2"; /** * Generated class for the IonicUiPage page. * @@ -14,12 +18,39 @@ import { IonicPage, NavController, NavParams } from 'ionic-angular'; templateUrl: 'ionic-ui.html', }) export class IonicUiPage { - - constructor(public navCtrl: NavController, public navParams: NavParams) { + tab: string = "tab1" + msg: any = "这是ionicUi 页面的msg" + testpage2 ; + testpage4 ; + constructor(public navCtrl: NavController, + public navParams: NavParams, + public modalCtrl: ModalController + ) { + this.testpage2 = "Testpage2Page"; // 使用懒加载时app.module.ts不用引入页面;这里改为加双引号: "SecondPage" + this.testpage4 = "Testpage4Page"; } + @ViewChild(Slides) slides: Slides; + ionViewDidLoad() { console.log('ionViewDidLoad IonicUiPage'); } + ionViewDidEnter() { + this.slides.autoplayDisableOnInteraction = false; + } + + gotoTestpage1Page() { + this.navCtrl.push("Testpage1Page") + + } + gotoTestpage3Page() { + this.navCtrl.push("Testpage3Page",{ + ionicmsg:this.msg + }) + } + gotomodalcontroller(){ + let ModalControllerPage = this.modalCtrl.create("ModalControllerPage"); + ModalControllerPage.present(); + } } diff --git a/src/pages/modal-controller/modal-controller.html b/src/pages/modal-controller/modal-controller.html new file mode 100644 index 0000000000000000000000000000000000000000..1212671f94bdf82b62aa5c7de7a3f98458f3ae77 --- /dev/null +++ b/src/pages/modal-controller/modal-controller.html @@ -0,0 +1,20 @@ + + + + + 返回 + modalControllerPage + + + + + + + modalcontroller 创建的页面一般用来做登录页面等;类似模态框; + + diff --git a/src/pages/modal-controller/modal-controller.module.ts b/src/pages/modal-controller/modal-controller.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..074519fd24572dcd1c7e207ac9c8a9b783c0cc53 --- /dev/null +++ b/src/pages/modal-controller/modal-controller.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from 'ionic-angular'; +import { ModalControllerPage } from './modal-controller'; + +@NgModule({ + declarations: [ + ModalControllerPage, + ], + imports: [ + IonicPageModule.forChild(ModalControllerPage), + ], +}) +export class ModalControllerPageModule {} diff --git a/src/pages/modal-controller/modal-controller.scss b/src/pages/modal-controller/modal-controller.scss new file mode 100644 index 0000000000000000000000000000000000000000..33a358419a8bfe4e99cfada82a658a5ef1d31565 --- /dev/null +++ b/src/pages/modal-controller/modal-controller.scss @@ -0,0 +1,3 @@ +page-modal-controller { + +} diff --git a/src/pages/modal-controller/modal-controller.ts b/src/pages/modal-controller/modal-controller.ts new file mode 100644 index 0000000000000000000000000000000000000000..17e76e3c28ecd77c3553d99aef0380e83aee8e38 --- /dev/null +++ b/src/pages/modal-controller/modal-controller.ts @@ -0,0 +1,30 @@ +import { Component } from '@angular/core'; +import { IonicPage, NavController, NavParams } from 'ionic-angular'; + +/** + * Generated class for the ModalControllerPage page. + * + * See https://ionicframework.com/docs/components/#navigation for more info on + * Ionic pages and navigation. + */ + +@IonicPage() +@Component({ + selector: 'page-modal-controller', + templateUrl: 'modal-controller.html', +}) +export class ModalControllerPage { + + constructor(public navCtrl: NavController, public navParams: NavParams) { + } + + ionViewDidLoad() { + console.log('ionViewDidLoad ModalControllerPage'); + } + + // 返回上一页 + goback() { + this.navCtrl.pop(); + } + +} diff --git a/src/pages/native/native.html b/src/pages/native/native.html new file mode 100644 index 0000000000000000000000000000000000000000..ad21aa3688850261d73a201e93b835b53520fdae --- /dev/null +++ b/src/pages/native/native.html @@ -0,0 +1,32 @@ + + + + + native + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/pages/native/native.module.ts b/src/pages/native/native.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..14795a0066ff4f4cb3b545e165cd63e6ca85f99f --- /dev/null +++ b/src/pages/native/native.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from 'ionic-angular'; +import { NativePage } from './native'; + +@NgModule({ + declarations: [ + NativePage, + ], + imports: [ + IonicPageModule.forChild(NativePage), + ], +}) +export class NativePageModule {} diff --git a/src/pages/native/native.scss b/src/pages/native/native.scss new file mode 100644 index 0000000000000000000000000000000000000000..e18ccd6857607f360c1dbf1ab74892f02588f074 --- /dev/null +++ b/src/pages/native/native.scss @@ -0,0 +1,3 @@ +page-native { + +} diff --git a/src/pages/native/native.ts b/src/pages/native/native.ts new file mode 100644 index 0000000000000000000000000000000000000000..7bb07de3136bd60d0ea869714f11eef203d80968 --- /dev/null +++ b/src/pages/native/native.ts @@ -0,0 +1,64 @@ +import { Component } from '@angular/core'; +import { IonicPage, NavController, NavParams } from 'ionic-angular'; + +import { Camera, CameraOptions } from '@ionic-native/camera'; + +/** + * Generated class for the NativePage page. + * + * See https://ionicframework.com/docs/components/#navigation for more info on + * Ionic pages and navigation. + */ + +@IonicPage() +@Component({ + selector: 'page-native', + templateUrl: 'native.html', +}) +export class NativePage { + + images: Array<{ src: String }>; + + constructor(public navCtrl: NavController, public navParams: NavParams, + private camera: Camera + ) { + + this.images = []; + } + + ionViewDidLoad() { + console.log('ionViewDidLoad NativePage'); + } + + + + takePhoto() { + console.log(1); + // 设置选项 + const options: CameraOptions = { + quality: 50, + destinationType: this.camera.DestinationType.DATA_URL, + sourceType: this.camera.PictureSourceType.CAMERA, + encodingType: this.camera.EncodingType.JPEG, + allowEdit: false, + mediaType: this.camera.MediaType.PICTURE + } + + // 获取图片 + this.camera.getPicture(options).then((imageData) => { + // 获取成功 + let base64Image = 'data:image/jpeg;base64,' + imageData; + this.images.unshift({ + src: base64Image + }) + }, (err) => { + console.log('获取图片失败'); + }); + } + clearPhote() { + this.images = []; + } + + + +} diff --git a/src/pages/tabs/tabs.html b/src/pages/tabs/tabs.html index 500dcb8f5fdeb4c586678c29592f68ec0fe83681..66b40b9e63c16493353370913dfc295408b36a0c 100644 --- a/src/pages/tabs/tabs.html +++ b/src/pages/tabs/tabs.html @@ -3,4 +3,5 @@ + diff --git a/src/pages/tabs/tabs.module.ts b/src/pages/tabs/tabs.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..6fa04dc29465dfcc0ea7d3179311c795e61bab70 --- /dev/null +++ b/src/pages/tabs/tabs.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from 'ionic-angular'; +import { TabsPage } from './tabs'; + +@NgModule({ + declarations: [ + TabsPage, + ], + imports: [ + IonicPageModule.forChild(TabsPage), + ], +}) +export class TabsPageModule { } diff --git a/src/pages/tabs/tabs.ts b/src/pages/tabs/tabs.ts index d1195ec85705a50f3b8abbbb415f8242ba1699a1..03c8408e160ef505b82d7d87d21c0ec6f46e98b1 100644 --- a/src/pages/tabs/tabs.ts +++ b/src/pages/tabs/tabs.ts @@ -1,19 +1,20 @@ import { Component } from '@angular/core'; - -import { AboutPage } from '../about/about'; -import { ContactPage } from '../contact/contact'; -import { HomePage } from '../home/home'; -import { IonicUiPage } from '../ionic-ui/ionic-ui'; - +import { IonicPage } from "ionic-angular"; +// import { AboutPage } from '../about/about'; +// import { ContactPage } from '../contact/contact'; +// import { HomePage } from '../home/home'; +// import { IonicUiPage } from '../ionic-ui/ionic-ui'; +@IonicPage() @Component({ templateUrl: 'tabs.html' }) export class TabsPage { - tab1Root = HomePage; - tab2Root = AboutPage; - tab3Root = ContactPage; - tab4Root = IonicUiPage; + tab1Root = "HomePage"; + tab2Root = "AboutPage"; + tab3Root = "ContactPage"; + tab4Root = "IonicUiPage"; + tab5Root = "NativePage"; constructor() { diff --git a/src/pages/testpage1/testpage1.html b/src/pages/testpage1/testpage1.html new file mode 100644 index 0000000000000000000000000000000000000000..5ff7e376ba1d31ba2769ce38f9ac9c0a4651ec63 --- /dev/null +++ b/src/pages/testpage1/testpage1.html @@ -0,0 +1,18 @@ + + + + + testpage1 + + + + + + + + diff --git a/src/pages/testpage1/testpage1.module.ts b/src/pages/testpage1/testpage1.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..001cf856e5c5fc8cf94e18f16b4e1f715306b061 --- /dev/null +++ b/src/pages/testpage1/testpage1.module.ts @@ -0,0 +1,16 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from 'ionic-angular'; +import { Testpage1Page } from './testpage1'; + +@NgModule({ + declarations: [ + Testpage1Page, + ], + imports: [ + IonicPageModule.forChild(Testpage1Page), + ], + exports: [ + Testpage1Page + ] +}) +export class Testpage1PageModule {} diff --git a/src/pages/testpage1/testpage1.scss b/src/pages/testpage1/testpage1.scss new file mode 100644 index 0000000000000000000000000000000000000000..628b620df567f3a284172160ffce16321578cad8 --- /dev/null +++ b/src/pages/testpage1/testpage1.scss @@ -0,0 +1,3 @@ +page-testpage1 { + +} diff --git a/src/pages/testpage1/testpage1.ts b/src/pages/testpage1/testpage1.ts new file mode 100644 index 0000000000000000000000000000000000000000..243dbfb104a733306ec5bb3032fd1c924f0cb294 --- /dev/null +++ b/src/pages/testpage1/testpage1.ts @@ -0,0 +1,25 @@ +import { Component } from '@angular/core'; +import { IonicPage, NavController, NavParams } from 'ionic-angular'; + +/** + * Generated class for the Testpage1Page page. + * + * See https://ionicframework.com/docs/components/#navigation for more info on + * Ionic pages and navigation. + */ + +@IonicPage() +@Component({ + selector: 'page-testpage1', + templateUrl: 'testpage1.html', +}) +export class Testpage1Page { + + constructor(public navCtrl: NavController, public navParams: NavParams) { + } + + ionViewDidLoad() { + console.log('ionViewDidLoad Testpage1Page'); + } + +} diff --git a/src/pages/testpage2/testpage2.html b/src/pages/testpage2/testpage2.html new file mode 100644 index 0000000000000000000000000000000000000000..190ea2bafe7850aa34f863055a28f5e41417be3b --- /dev/null +++ b/src/pages/testpage2/testpage2.html @@ -0,0 +1,18 @@ + + + + + testpage2 + + + + + + + + diff --git a/src/pages/testpage2/testpage2.module.ts b/src/pages/testpage2/testpage2.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..989a331b4e9d5635e7fd01cf7c2aaa6fabb7b352 --- /dev/null +++ b/src/pages/testpage2/testpage2.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from 'ionic-angular'; +import { Testpage2Page } from './testpage2'; + +@NgModule({ + declarations: [ + Testpage2Page, + ], + imports: [ + IonicPageModule.forChild(Testpage2Page), + ], +}) +export class Testpage2PageModule {} diff --git a/src/pages/testpage2/testpage2.scss b/src/pages/testpage2/testpage2.scss new file mode 100644 index 0000000000000000000000000000000000000000..d89b519c21cf112a13ca8e034244590aed9caafb --- /dev/null +++ b/src/pages/testpage2/testpage2.scss @@ -0,0 +1,3 @@ +page-testpage2 { + +} diff --git a/src/pages/testpage2/testpage2.ts b/src/pages/testpage2/testpage2.ts new file mode 100644 index 0000000000000000000000000000000000000000..c815809be5feee41a6b7fe281523c383d1a6db41 --- /dev/null +++ b/src/pages/testpage2/testpage2.ts @@ -0,0 +1,25 @@ +import { Component } from '@angular/core'; +import { IonicPage, NavController, NavParams } from 'ionic-angular'; + +/** + * Generated class for the Testpage2Page page. + * + * See https://ionicframework.com/docs/components/#navigation for more info on + * Ionic pages and navigation. + */ + +@IonicPage() +@Component({ + selector: 'page-testpage2', + templateUrl: 'testpage2.html', +}) +export class Testpage2Page { + + constructor(public navCtrl: NavController, public navParams: NavParams) { + } + + ionViewDidLoad() { + console.log('ionViewDidLoad Testpage2Page'); + } + +} diff --git a/src/pages/testpage3/testpage3.html b/src/pages/testpage3/testpage3.html new file mode 100644 index 0000000000000000000000000000000000000000..6d07a68114e0d90e209584d3b7bee3c0bdf14998 --- /dev/null +++ b/src/pages/testpage3/testpage3.html @@ -0,0 +1,18 @@ + + + + + testpage3 + + + + + + + {{msg}} + diff --git a/src/pages/testpage3/testpage3.module.ts b/src/pages/testpage3/testpage3.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..b4e2150f86518fafd6af247e471948745144ed5f --- /dev/null +++ b/src/pages/testpage3/testpage3.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from 'ionic-angular'; +import { Testpage3Page } from './testpage3'; + +@NgModule({ + declarations: [ + Testpage3Page, + ], + imports: [ + IonicPageModule.forChild(Testpage3Page), + ], +}) +export class Testpage3PageModule {} diff --git a/src/pages/testpage3/testpage3.scss b/src/pages/testpage3/testpage3.scss new file mode 100644 index 0000000000000000000000000000000000000000..2237c5492407b846edbd9f2b531ea656a91b31a7 --- /dev/null +++ b/src/pages/testpage3/testpage3.scss @@ -0,0 +1,3 @@ +page-testpage3 { + +} diff --git a/src/pages/testpage3/testpage3.ts b/src/pages/testpage3/testpage3.ts new file mode 100644 index 0000000000000000000000000000000000000000..16589c43b8e15d2a49a48a8c8450c28ae197a4ca --- /dev/null +++ b/src/pages/testpage3/testpage3.ts @@ -0,0 +1,26 @@ +import { Component } from '@angular/core'; +import { IonicPage, NavController, NavParams } from 'ionic-angular'; + +/** + * Generated class for the Testpage3Page page. + * + * See https://ionicframework.com/docs/components/#navigation for more info on + * Ionic pages and navigation. + */ + +@IonicPage() +@Component({ + selector: 'page-testpage3', + templateUrl: 'testpage3.html', +}) +export class Testpage3Page { + msg: any; + constructor(public navCtrl: NavController, public navParams: NavParams) { + this.msg = this.navParams.get('ionicmsg') + } + + ionViewDidLoad() { + console.log('ionViewDidLoad Testpage3Page'); + } + +} diff --git a/src/pages/testpage4/testpage4.html b/src/pages/testpage4/testpage4.html new file mode 100644 index 0000000000000000000000000000000000000000..cfcb2af6451156c0f2525b27f5258cf1cafb27a6 --- /dev/null +++ b/src/pages/testpage4/testpage4.html @@ -0,0 +1,19 @@ + + + + + testpage4 + + + + + + + {{msg}} + + diff --git a/src/pages/testpage4/testpage4.module.ts b/src/pages/testpage4/testpage4.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..1d16c474e7c1974221a9903218788e8de30a4159 --- /dev/null +++ b/src/pages/testpage4/testpage4.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from 'ionic-angular'; +import { Testpage4Page } from './testpage4'; + +@NgModule({ + declarations: [ + Testpage4Page, + ], + imports: [ + IonicPageModule.forChild(Testpage4Page), + ], +}) +export class Testpage4PageModule {} diff --git a/src/pages/testpage4/testpage4.scss b/src/pages/testpage4/testpage4.scss new file mode 100644 index 0000000000000000000000000000000000000000..3f4aff7bc761ad44ed0c8cda0bd44fb413cac897 --- /dev/null +++ b/src/pages/testpage4/testpage4.scss @@ -0,0 +1,3 @@ +page-testpage4 { + +} diff --git a/src/pages/testpage4/testpage4.ts b/src/pages/testpage4/testpage4.ts new file mode 100644 index 0000000000000000000000000000000000000000..a703e855b690bbd0ff2bf5d3ece5cc3f7d8dc11d --- /dev/null +++ b/src/pages/testpage4/testpage4.ts @@ -0,0 +1,27 @@ +import { Component } from '@angular/core'; +import { IonicPage, NavController, NavParams } from 'ionic-angular'; + +/** + * Generated class for the Testpage4Page page. + * + * See https://ionicframework.com/docs/components/#navigation for more info on + * Ionic pages and navigation. + */ + +@IonicPage() +@Component({ + selector: 'page-testpage4', + templateUrl: 'testpage4.html', +}) +export class Testpage4Page { + msg; + + constructor(public navCtrl: NavController, public navParams: NavParams) { + this.msg = this.navParams.get("msg") + } + + ionViewDidLoad() { + console.log('ionViewDidLoad Testpage4Page'); + } + +}