Skip to content

Instantly share code, notes, and snippets.

@skypanther
skypanther / app.js
Created July 17, 2014 13:20
Android reorientation height/width
// Ti sometimes determines platformWidth before, rather than after a
// reorientation. This works around that from @FokkeZB
if (OS_ANDROID) {
Alloy.Globals.platformWidth = Alloy.Globals.platformWidth / Alloy.Globals.density;
Alloy.Globals.platformHeight = Alloy.Globals.platformHeight / Alloy.Globals.density;
if (Ti.Gesture.landscape) {
console.info('switching!');
@skypanther
skypanther / alloy.js
Created May 6, 2014 15:31
Sample Alloy project with view/model binding
Alloy.Globals.winTop = (OS_IOS && parseInt(Ti.Platform.version, 10) >= 7) ? 20 : 0;
Ti.UI.backgroundColor = "#fff";
@skypanther
skypanther / anim.js
Last active April 4, 2016 08:56
Animate foreground color of a Titanium object, given a starting and ending hex value and a number of steps to take between.
function parseColor(color) {
// from http://www.bitstorm.org/jquery/color-animation/jquery.animate-colors.js
var match, triplet;
// Match #aabbcc
if (match = /#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})/.exec(color)) {
triplet = [parseInt(match[1], 16), parseInt(match[2], 16), parseInt(match[3], 16), 1];
// Match #abc
} else if (match = /#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])/.exec(color)) {
@skypanther
skypanther / foo.js
Created July 25, 2013 19:44
Within functions, arguments gives access to any parameters passed to the function. But it's a funky object, not a true array. I'm sure the following behavior is documented, but it caught me off-guard. So I thought I'd share.
var myFunction = function() {
if(typeof arguments[0] == 'function') {
arguments[0](); // throws error: [object Object] is not a function
// but this works
var cb = arguments[0];
cb();
}
};
myFunction(function() {
@skypanther
skypanther / example_usage.js
Created April 23, 2013 18:18
Split window-like CommonJS component for Titanium
// define your leftView and rightView content views here...
var Win = require('ui/components/splitwindow'),
win = new Win({
splitWidth: 300,
masterTitle: 'Master',
detailTitle: 'Details',
navBarHidden: true,
backgroundColor: 'transparent',
}, leftView, rightView);
win.open();
@skypanther
skypanther / index.js
Created April 9, 2013 20:35
URLSchemes handling code for TCE lab
function urlParser(url) {
url = url.replace(/[Uu]rlschemes:\/\/\?/,"");
return url.split('&');
}
// check for arguments passed to this app
if(OS_IOS) {
function grabArguments() {
var args = Ti.App.getArguments();
if(args.url) {
@skypanther
skypanther / Source_app_index.js
Last active December 14, 2015 22:59
Custom URL Schemes: Tap a button in the "Source" app and have it open "Target" Works in iOS and Android. For the Target app's manifest, you'll need to create a PROJECT_DIR/platform/android folder and put the file in there. This is an Alloy-based demo, tested on Titanium 3.0.0.GA.
function doClick(e) {
if(OS_IOS) {
if(Ti.Platform.canOpenURL('Urlschemes://')) {
Ti.Platform.openURL('Urlschemes://');
} else {
alert('You must install the Urlschemes app first');
}
} else {
var didItWork = Ti.Platform.openURL('urlschemes://');
if(!didItWork) {
@skypanther
skypanther / AndroidManifest.xml
Created October 12, 2012 18:50
Android 4 theme and menu
<?xml version="1.0" ?><manifest android:versionCode="1" android:versionName="1" package="com.appcelerator.holotheme" xmlns:android="http://schemas.android.com/apk/res/android">
<uses-sdk android:minSdkVersion="8"/>
<uses-sdk android:targetSdkVersion="14"/>
<!-- TI_MANIFEST -->
<application android:debuggable="false" android:icon="@drawable/appicon" android:label="HoloTheme" android:name="HolothemeApplication" android:theme="@android:style/Theme.Holo.Light">
<!-- TI_APPLICATION -->
@skypanther
skypanther / app.js
Created June 27, 2012 18:44
Titanium 2.1 changes demo
// tested on Titanium 2.1.0.v20120621224153 on iOS and Android 2.2
// this sets the background color of the master UIView (when there are no windows/tab groups on it)
Titanium.UI.setBackgroundColor('#000');
// create tab group
var tabGroup = Titanium.UI.createTabGroup();
//
@skypanther
skypanther / app.js
Created February 24, 2012 15:46 — forked from pec1985/app.js
Cache Remote Images
var Utils = {
/* modified version of https://gist.github.com/1243697
* adds detection of file extension rather than hard-coding .jpg as in the original
*/
_getExtension: function(fn) {
// from http://stackoverflow.com/a/680982/292947
var re = /(?:\.([^.]+))?$/;
var tmpext = re.exec(fn)[1];
return (tmpext) ? tmpext : '';
},