Skip to content

Instantly share code, notes, and snippets.

@mogya
Created September 25, 2012 13:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mogya/3781764 to your computer and use it in GitHub Desktop.
Save mogya/3781764 to your computer and use it in GitHub Desktop.
An idea to implement menu like google+ android app with TitaniumMobile.
// An idea to implement menu like google+ android app with TitaniumMobile.
// convert dp to pixel.
function dpToPixel(dp) {
return ~~( parseInt(dp) * (Titanium.Platform.displayCaps.dpi / 160));
}
// convert pixel to dp.
function pixelToDp(px) {
return ~~( parseInt(px) / (Titanium.Platform.displayCaps.dpi / 160))+'dp';
}
// set default parameters.
function _p(params,default_params){
if (!default_params){
default_params = {
top:0,
left:0,
width:'100%',
height:'auto',
};
}
if (params){
for (var k in default_params){
if(!params[k]){
params[k] = default_params[k]
}
}
}
return params;
}
var win = Ti.UI.createWindow(_p({
backgroundColor: 'white',
exitOnClose: true,
navBarHidden : true,
fullscreen: false,
title: 'ScrollView Demo'
}));
var scrollView = Ti.UI.createScrollView(_p({
scrollType:'horizontal',
touchEnabled: false, // ...is this working really?
contentWidth: 'auto',
contentHeight: 'auto',
showVerticalScrollIndicator: false,
showHorizontalScrollIndicator: false,
bottom:'40dp',
}));
var menuView = Ti.UI.createView(_p({
backgroundColor:'blue',
height: '100%',
width: '150dp',
layout:'vertical'
}));
var menu1 = Titanium.UI.createLabel(_p({
text:'menu1',
color:'red',
}));
menuView.add(menu1);
var menu2 = Titanium.UI.createLabel(_p({
text:'menu2',
color:'red',
}));
menuView.add(menu2);
var menu3 = Titanium.UI.createLabel(_p({
text:'menu3',
color:'red',
}));
menuView.add(menu3);
var mainView = Ti.UI.createView(_p({
backgroundColor:'green',
left: menuView.width,
height: '100%',
width: Ti.Platform.displayCaps.platformWidth,
layout:'vertical'
}));
var mainLabel = Titanium.UI.createLabel(_p({
text:'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat',
height:150,
top:10,
left:10,
color:'#336699',
}));
mainView.add(mainLabel);
scrollView.add(menuView);
scrollView.add(mainView);
var mainView_x = dpToPixel(menuView.width);
scrollView.setContentOffset({x:mainView_x,y:0},{animated:false});
win.add(scrollView);
var addMenuItem = function(menu,params){
var item = null;
if(menu && params){
item = menu.add({
title: params.title
});
if (params.icon){
item.icon = params.icon;
}
if (params.enabled){
item.enabled = params.enabled;
}
if (params.onClick){
item.addEventListener( 'click', function( e ) {
params.onClick(e);
});
}
}
return item;
}
win.activity.onCreateOptionsMenu = function(e){
var menu = e.menu;
addMenuItem(menu,{
title: 'open menu',
onClick: function(e){
scrollView.setContentOffset({x:0,y:0},{animated:true});
}
});
addMenuItem(menu,{
title: 'close menu',
onClick: function(e){
scrollView.setContentOffset({x:mainView_x,y:0},{animated:true});
}
});
};
win.open();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment