added demo project and modified version

This commit is contained in:
maverickmishra 2016-10-17 16:25:16 -07:00
parent 84b013f17c
commit 5d97d51144
9 changed files with 300 additions and 14 deletions

View File

@ -36,12 +36,6 @@ The plugin adds the following to the screen object (`window.screen`):
## Install
_cordova < 4_
```bash
cordova plugin add net.yoik.cordova.plugins.screenorientation
```
_cordova > 4_
```bash
cordova plugin add cordova-plugin-screen-orientation
@ -68,7 +62,7 @@ cordova plugin add cordova-plugin-screen-orientation
> The orientation is either landscape-primary or landscape-secondary (sensor).
#### any
> orientation is landscape-primary or landscape-secondary (sensor).
> orientation is unlocked - all orientations are supported.
## Usage
@ -88,9 +82,6 @@ console.log('Orientation is ' + screen.orientation);
Both android and iOS will fire the orientationchange event on the window object.
For this version of the plugin use the window object if you require notification.
For this plugin to follow the full API events should be fired on the screen object.
iOS and BB10 do not currently support events on the _screen_ object so custom event
handling will need to be added (Suggestions welcome!).
### Example usage
@ -110,7 +101,7 @@ Wraps the com.blackberry.app plugin functions, auto installed as a dependancy.
# Changelog
## 2.0
## 2.0.0
* Common javascript for iOS, Android and Windows.
## 1.4.2

26
demo/config.xml Normal file
View File

@ -0,0 +1,26 @@
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.cordova.screenorientationdemo" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>ScreenOrientationDemo</name>
<description>
A sample Apache Cordova application that showcases the Screenorientation plugin.
</description>
<author email="dev@cordova.apache.org" href="http://cordova.io">
Apache Cordova Team
</author>
<content src="index.html" />
<plugin name="cordova-plugin-whitelist" spec="1" />
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<platform name="android">
<allow-intent href="market:*" />
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
</platform>
</widget>

115
demo/www/css/index.css Normal file
View File

@ -0,0 +1,115 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
* {
-webkit-tap-highlight-color: rgba(0,0,0,0); /* make transparent link selection, adjust last value opacity 0 to 1.0 */
}
body {
-webkit-touch-callout: none; /* prevent callout to copy image, etc when tap to hold */
-webkit-text-size-adjust: none; /* prevent webkit from resizing text to fit */
-webkit-user-select: none; /* prevent copy paste, to allow, change 'none' to 'text' */
background-color:#E4E4E4;
background-image:linear-gradient(top, #A7A7A7 0%, #E4E4E4 51%);
background-image:-webkit-linear-gradient(top, #A7A7A7 0%, #E4E4E4 51%);
background-image:-ms-linear-gradient(top, #A7A7A7 0%, #E4E4E4 51%);
background-image:-webkit-gradient(
linear,
left top,
left bottom,
color-stop(0, #A7A7A7),
color-stop(0.51, #E4E4E4)
);
background-attachment:fixed;
font-family:'HelveticaNeue-Light', 'HelveticaNeue', Helvetica, Arial, sans-serif;
font-size:12px;
height:100%;
margin:0px;
padding:0px;
text-transform:uppercase;
width:100%;
}
/* Portrait layout (default) */
.app {
background:url(../img/logo.png) no-repeat center top; /* 170px x 200px */
position:absolute; /* position in the center of the screen */
left:50%;
top:50%;
height:50px; /* text area height */
width:225px; /* text area width */
text-align:center;
padding:180px 0px 0px 0px; /* image height is 200px (bottom 20px are overlapped with text) */
margin:-115px 0px 0px -112px; /* offset vertical: half of image height and text area height */
/* offset horizontal: half of text area width */
}
/* Landscape layout (with min-width) */
@media screen and (min-aspect-ratio: 1/1) and (min-width:400px) {
.app {
background-position:left center;
padding:75px 0px 75px 170px; /* padding-top + padding-bottom + text area = image height */
margin:-90px 0px 0px -198px; /* offset vertical: half of image height */
/* offset horizontal: half of image width and text area width */
}
}
h1 {
font-size:24px;
font-weight:normal;
margin:0px;
overflow:visible;
padding:0px;
text-align:center;
}
.event {
border-radius:4px;
-webkit-border-radius:4px;
color:#FFFFFF;
font-size:12px;
margin:0px 30px;
padding:2px 0px;
}
.event.listening {
background-color:#333333;
display:block;
}
.event.received {
background-color:#4B946A;
display:none;
}
@keyframes fade {
from { opacity: 1.0; }
50% { opacity: 0.4; }
to { opacity: 1.0; }
}
@-webkit-keyframes fade {
from { opacity: 1.0; }
50% { opacity: 0.4; }
to { opacity: 1.0; }
}
.blink {
animation:fade 3000ms infinite;
-webkit-animation:fade 3000ms infinite;
}

BIN
demo/www/img/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

58
demo/www/index.html Normal file
View File

@ -0,0 +1,58 @@
<!DOCTYPE html>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<!--
Customize this policy to fit your own app's needs. For more guidance, see:
https://github.com/apache/cordova-plugin-whitelist/blob/master/README.md#content-security-policy
Some notes:
* gap: is required only on iOS (when using UIWebView) and is needed for JS->native communication
* https://ssl.gstatic.com is required only on Android and is needed for TalkBack to function properly
* Disables use of inline scripts in order to mitigate risk of XSS vulnerabilities. To change this:
* Enable inline JS: add 'unsafe-inline' to default-src
-->
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
<meta name="format-detection" content="telephone=no">
<meta name="msapplication-tap-highlight" content="no">
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">
<link rel="stylesheet" type="text/css" href="css/index.css">
<title>Hello World</title>
</head>
<body>
<div class="app">
<h1>Apache Cordova</h1>
<div id="deviceready" class="blink">
<p class="event listening">Connecting to Device</p>
<p class="event received">Device is Ready</p>
</div>
<div>
<button id="btnPortrait">Portrait</button>
<button id="btnLandscape">Landscape</button>
</div>
<div>
<button id="btnPortPrimary">Portrait - Primary</button>
<button id="btnLandPrimary">Landscape - Primary</button>
</div>
<button id="btnAny">Any</button>
</div>
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/index.js"></script>
</body>
</html>

96
demo/www/js/index.js Normal file
View File

@ -0,0 +1,96 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
var app = {
// Application Constructor
initialize: function() {
this.bindEvents();
},
// Bind Event Listeners
//
// Bind any events that are required on startup. Common events are:
// 'load', 'deviceready', 'offline', and 'online'.
bindEvents: function() {
document.addEventListener('deviceready', this.onDeviceReady, false);
},
// deviceready Event Handler
//
// The scope of 'this' is the event. In order to call the 'receivedEvent'
// function, we must explicitly call 'app.receivedEvent(...);'
onDeviceReady: function() {
app.receivedEvent('deviceready');
btnPortrait.addEventListener("click", function() {
// alert('Orientation is ' + screen.orientation);
screen.lockOrientation('portrait').then(function(obj) {
console.log(obj);
}).catch(function(obj) {
console.log(obj);
});
});
btnLandscape.addEventListener("click", function() {
// alert('Orientation is ' + screen.orientation);
screen.lockOrientation('landscape').then(function(obj) {
console.log(obj);
}).catch(function(obj) {
console.log(obj);
});
});
btnPortPrimary.addEventListener("click", function() {
// alert('Orientation is ' + screen.orientation);
screen.lockOrientation('portrait-primary').then(function(obj) {
console.log(obj);
}).catch(function(obj) {
console.log(obj);
});
});
btnLandPrimary.addEventListener("click", function() {
// alert('Orientation is ' + screen.orientation);
screen.lockOrientation('landscape-primary').then(function(obj) {
console.log(obj);
}).catch(function(obj) {
console.log(obj);
});
});
btnAny.addEventListener("click", function() {
// alert('Orientation is ' + screen.orientation);
screen.lockOrientation('any').then(function(obj) {
console.log(obj);
}).catch(function(obj) {
console.log(obj);
});
});
},
// Update DOM on a Received Event
receivedEvent: function(id) {
var parentElement = document.getElementById(id);
var listeningElement = parentElement.querySelector('.listening');
var receivedElement = parentElement.querySelector('.received');
listeningElement.setAttribute('style', 'display:none;');
receivedElement.setAttribute('style', 'display:block;');
console.log('Received Event: ' + id);
}
};
app.initialize();

View File

@ -1,6 +1,6 @@
{
"name": "cordova-plugin-screen-orientation",
"version": "1.4.2",
"version": "2.0.0-dev",
"description": "Adds Screen Orientation API lock and unlock functions to the global screen object in android, iOS, WP8, W8.1, and BB10.",
"repository": {
"type": "git",

View File

@ -18,7 +18,7 @@
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
id="cordova-plugin-screen-orientation"
version="1.4.2">
version="2.0.0-dev">
<name>Screen Orientation</name>
<description>Adds Screen Orientation API lock and unlock functions to the global screen object in android, iOS, WP8, W8.1, and BB10.</description>

View File

@ -35,7 +35,7 @@ cordova.define("cordova-plugin-screen-orientation.screenorientation", function(r
'landscape',
// The orientation is either landscape-primary or landscape-secondary.
'any'
// All orientations are supported
// All orientations are supported (unlocked orientation)
];
screenOrientation.Orientations = Orientations;