- 浏览: 3553277 次
- 性别:
- 来自: 大连
博客专栏
-
使用Titanium Mo...
浏览量:38227
-
Cordova 3.x入门...
浏览量:607654
-
常用Java开源Libra...
浏览量:682841
-
搭建 CentOS 6 服...
浏览量:89568
-
Spring Boot 入...
浏览量:402165
-
基于Spring Secu...
浏览量:69772
-
MQTT入门
浏览量:91863
文章分类
最新评论
-
afateg:
阿里云的图是怎么画出来的?用什么工具?
各云服务平台的架构图 -
cbn_1992:
博主,采用jdbctoken也就是数据库形式之后,反复点击获取 ...
Spring Security OAuth2 Provider 之 数据库存储 -
ipodao:
写的很是清楚了,我找到一份中文协议:https://mcxia ...
MQTT入门(6)- 主题Topics -
Cavani_cc:
还行
MQTT入门(6)- 主题Topics -
fexiong:
博主,能否提供完整源码用于学习?邮箱:2199611997@q ...
TensorFlow 之 构建人物识别系统
使用Titanium Mobile开发iPhone/Android应用(03)- Twitter客户端之页面调整
- 博客分类:
- Titanium
美化Twitter客户端
上回中,我们坐了一个把自己的Tweeter表示出来的页面,这只仅仅是把Tweet的正文并排放在页面上而已,这回我们要把从Twitter取的情报中的Tweeter时间,用户名,用户头像信息也表示出来。这篇中我们要说或如何将页面美化。
那么我们就尽早进入修改代码,修改前回做好的updateTimeLine函数。首先,在做成的页面功能的基础上,确认各个技能。
启动Titanium的开发环境就能看到以下页面。
还不是特别的好,初步表示出了Twitter的TimeLine。那么页面机能部分我们一点点的说明一下。
Window和View
在Titanium中,把盖住整个页面的对象叫:“window”,可以考虑成Javascript的DOM中的Window,也可以作为iOS SDK的UIWindow考虑。在window上还可以放置多个view,而且在view上还可以在重叠放置view,上回我们说的Ti.UI.TableView和Ti.UI.TableViewRow也都是view的一种。这个view跟iOS SDK中的UIView基本相同。
关于view的布局,跟使用CSS调整HTML布局很相似,也能设定Titanium的view的布局。
可以通过width和hight来指定view的大小,通过top, buttom, right, left来指定view的位置,以及font的指定,文件颜色的设置等都可以同样设置。
布局基准
使用CSS对HTML进行布局调整,能够选择使用static, relative等来指定position的基准。同样,Titanium中基准位置,view的放置方法也有2中可以选择。
(1)什么也没有设置的时候
默认的处理是,把父view作为Ti.UI.TableViewRow的坐标基准, 明确指定的话,需要设置为:layout: 'absolute'。设置top的属性值,可以指定计算TableViewRow从上部往下的像素数,right, left, bottom分别是右端,左端,下部的像素数。
vertical
layout参数中设成vertical的话,并不是绝对位置的意思,而是设定了往TableViewRow中追加view的基准。
刚才的代码我们试着变一下:
变成这样的代码后,大眼一看是没什么变化的。但是在设定vertical之间追加指定了view的top基准。top中也可以设置成负数,使用vertical可以做很细微的页面的调整。不要考虑计算各个view的绝对位置就能够布局页面,指定vertical就能够很方便的修改页面布局了。
(2)设置成auto
当height中设置成 'auto' 的时候,他也能自动调整高度把表示内容全部显示出来。上面的例子中height参数的值全部设置成'auto'(但是ImageView的height除外)之后,将会看到一下页面:
这种也是很方便的布局调整方法。
显示图像
使用ImageView来表示Twitter的用户头像部分。ImageView是很方便的一个View,只需要指定url后就能显示出来图像。不是是表示http开始的网络图像,Project内部保存的图像也能显示。下边的代码就是显示Project中图像的例子。
分割代码
直到这里我们编写的所有代码就集中在一个文件中,这样文件就变得很长。很长大代码集中在一个文件中,不只是看起来不好,调试也变的很困难,我们需要分割文件。
Titanium中有好几种分割文件的方法,这里我们说一下指定文件做成window并且打开的方法。以window为单位能够把代码分割开来,也能很简单的按照机能把代码分割。
截止到编写的app.js我们分割成以下两个文件。
app.js的内容还原到最初的例子代码,画表格的机能移到新作的table_view.js当中。需要主要看的一点是,app.js的createWindow的参数中,url的指定方法。使用这个方法可以在新的window中打开指定的JavaScript文件。
还有一个需要注意的是,在新作的table_view.js文件中,
这段代码是追加到最开始的。分割前的代码中,我们可以看到是把view追加到了全局变量为win1的window中。然后分割后的代码就不在使用这个变量了。在使用createWindow指定的文件的代码中,打开window的父文件中的变量是不能使用的。具体来说就是,在table_view.js中是不能访问app.js中定义的变量的。
在那里,需要改变成,使用currentWindow参数来获取当前window,然后追加view。
其他文件当中的变量不能使用的话,也就是说scope发生了改变。分离每个window当中的变量是很方便的结构。那么从一个window到一个window数据的传递就需要费点儿事了。这个基本上没有什么大的问题,从此以后开发过程中,做成新的window的时候要积极地分割成多个文件。
总结
这回我们说了一下Window和View的关系以及布局的调整方法。而且在后半部分还说了一下开发过程中把文件分割成多个文件的方法。下一回我们将说一下使用OAuth来调用API,朝着做一个像样的Twitter客户端方向编写代码。
上回中,我们坐了一个把自己的Tweeter表示出来的页面,这只仅仅是把Tweet的正文并排放在页面上而已,这回我们要把从Twitter取的情报中的Tweeter时间,用户名,用户头像信息也表示出来。这篇中我们要说或如何将页面美化。
那么我们就尽早进入修改代码,修改前回做好的updateTimeLine函数。首先,在做成的页面功能的基础上,确认各个技能。
function updateTimeline (timeline) { var currentData = []; for (var i=0;i<timeline.length;i++) { var tweet = timeline[i]; //变更开始 var row = Ti.UI.createTableViewRow( { height: 150, layout: 'absolute' } ); var imageView = Ti.UI.createImageView( { image: tweet.user.profile_image_url, width: 48, height: 48, top: 5, left: 5 } ); row.add(imageView); var nameLabel = Ti.UI.createLabel( { width: 120, height: 12, left: 58, top: 5, fontSize: 6, fontWeight: 'bold', color: '#2b4771' } ); nameLabel.text = tweet.user.screen_name; row.add(nameLabel); var commentLabel = Ti.UI.createLabel( { width: 257, left: 58, top: 18, height: 100, fontSize: 8 } ); commentLabel.text = tweet.text; row.add(commentLabel); var dateLabel = Ti.UI.createLabel( { width: 200, height: 12, left: 58, bottom: 8, fontSize: 6 } ); dateLabel.text = tweet.created_at; row.add(dateLabel); //变更结束 currentData.push(row); } tableView.setData(currentData); }
启动Titanium的开发环境就能看到以下页面。
还不是特别的好,初步表示出了Twitter的TimeLine。那么页面机能部分我们一点点的说明一下。
Window和View
在Titanium中,把盖住整个页面的对象叫:“window”,可以考虑成Javascript的DOM中的Window,也可以作为iOS SDK的UIWindow考虑。在window上还可以放置多个view,而且在view上还可以在重叠放置view,上回我们说的Ti.UI.TableView和Ti.UI.TableViewRow也都是view的一种。这个view跟iOS SDK中的UIView基本相同。
关于view的布局,跟使用CSS调整HTML布局很相似,也能设定Titanium的view的布局。
var nameLabel = Ti.UI.createLabel( { width: 120, height: 12, left: 58, top: 5, fontSize: 6, fontWeight: 'bold', color: '#2b4771' } );
可以通过width和hight来指定view的大小,通过top, buttom, right, left来指定view的位置,以及font的指定,文件颜色的设置等都可以同样设置。
布局基准
使用CSS对HTML进行布局调整,能够选择使用static, relative等来指定position的基准。同样,Titanium中基准位置,view的放置方法也有2中可以选择。
(1)什么也没有设置的时候
默认的处理是,把父view作为Ti.UI.TableViewRow的坐标基准, 明确指定的话,需要设置为:layout: 'absolute'。设置top的属性值,可以指定计算TableViewRow从上部往下的像素数,right, left, bottom分别是右端,左端,下部的像素数。
vertical
layout参数中设成vertical的话,并不是绝对位置的意思,而是设定了往TableViewRow中追加view的基准。
刚才的代码我们试着变一下:
function updateTimeline (timeline) { var currentData = []; for (var i=0;i<timeline.length;i++) { var tweet = timeline[i]; //再次这里开始 var row = Ti.UI.createTableViewRow( { height: 150, layout: 'vertical' } ); var imageView = Ti.UI.createImageView( { image: tweet.user.profile_image_url, width: 48, height: 48, top: 5, left: 5 } ); row.add(imageView); var nameLabel = Ti.UI.createLabel( { width: 120, height: 12, left: 58, top: -48, fontSize: 6, fontWeight: 'bold', color: '#2b4771' } ); nameLabel.text = tweet.user.screen_name; row.add(nameLabel); var commentLabel = Ti.UI.createLabel( { width: 257, left: 58, top: 1, height: 100, fontSize: 8 } ); commentLabel.text = tweet.text; row.add(commentLabel); var dateLabel = Ti.UI.createLabel( { width: 200, height: 12, left: 58, top: 5, fontSize: 6 } ); dateLabel.text = tweet.created_at; row.add(dateLabel); //修改结束 currentData.push(row); } tableView.setData(currentData); }
变成这样的代码后,大眼一看是没什么变化的。但是在设定vertical之间追加指定了view的top基准。top中也可以设置成负数,使用vertical可以做很细微的页面的调整。不要考虑计算各个view的绝对位置就能够布局页面,指定vertical就能够很方便的修改页面布局了。
(2)设置成auto
当height中设置成 'auto' 的时候,他也能自动调整高度把表示内容全部显示出来。上面的例子中height参数的值全部设置成'auto'(但是ImageView的height除外)之后,将会看到一下页面:
这种也是很方便的布局调整方法。
显示图像
使用ImageView来表示Twitter的用户头像部分。ImageView是很方便的一个View,只需要指定url后就能显示出来图像。不是是表示http开始的网络图像,Project内部保存的图像也能显示。下边的代码就是显示Project中图像的例子。
var imageView = Ti.UI.createImageView( { image: 'iphone/appicon.png', //文件名是相对于Project的Resorces文件夹 width: 48, height: 48, top: 5, left: 5 } ); row.add(imageView);
分割代码
直到这里我们编写的所有代码就集中在一个文件中,这样文件就变得很长。很长大代码集中在一个文件中,不只是看起来不好,调试也变的很困难,我们需要分割文件。
Titanium中有好几种分割文件的方法,这里我们说一下指定文件做成window并且打开的方法。以window为单位能够把代码分割开来,也能很简单的按照机能把代码分割。
截止到编写的app.js我们分割成以下两个文件。
app.js Titanium.UI.setBackgroundColor('#000'); var tabGroup = Titanium.UI.createTabGroup({}); var win1 = Titanium.UI.createWindow({ url: 'table_view.js', title:'Tab 1', backgroundColor:'#fff' }); var tab1 = Titanium.UI.createTab({ window:win1 }); win1.hideTabBar(); tabGroup.addTab(tab1); tabGroup.open(); table_view.js var win = Ti.UI.currentWindow; var data = []; var tableView = Ti.UI.createTableView({ data:data }); function updateTimeline (timeline) { var currentData = []; for (var i=0;i<timeline.length;i++) { var tweet = timeline[i]; var row = Ti.UI.createTableViewRow( { height: 150, layout: 'vertical' } ); var imageView = Ti.UI.createImageView( { image: 'iphone/appicon.png', width: 48, height: 48, top: 5, left: 5 } ); row.add(imageView); var nameLabel = Ti.UI.createLabel( { width: 120, height: 12, left: 58, top: -48, fontSize: 6, fontWeight: 'bold', color: '#2b4771' } ); nameLabel.text = tweet.user.screen_name; row.add(nameLabel); var commentLabel = Ti.UI.createLabel( { width: 257, left: 58, top: 1, height: 100, fontSize: 8 } ); commentLabel.text = tweet.text; row.add(commentLabel); var dateLabel = Ti.UI.createLabel( { width: 200, height: 12, left: 58, top: 5, fontSize: 6 } ); dateLabel.text = tweet.created_at; row.add(dateLabel); currentData.push(row); } tableView.setData(currentData); } var xhr = Ti.Network.createHTTPClient(); var user = 'hatenatech'; var url = "http://api.twitter.com/1/statuses/user_timeline.json?screen_name=" + user; xhr.open('GET', url); xhr.onload = function() { var timeline = JSON.parse(this.responseText); updateTimeline(timeline); }; xhr.send(); win.add(tableView);
app.js的内容还原到最初的例子代码,画表格的机能移到新作的table_view.js当中。需要主要看的一点是,app.js的createWindow的参数中,url的指定方法。使用这个方法可以在新的window中打开指定的JavaScript文件。
var win1 = Titanium.UI.createWindow({ url: 'table_view.js', //注意这里! title:'Tab 1', backgroundColor:'#fff' });
还有一个需要注意的是,在新作的table_view.js文件中,
var win1 = Ti.UI.currentWindow;
这段代码是追加到最开始的。分割前的代码中,我们可以看到是把view追加到了全局变量为win1的window中。然后分割后的代码就不在使用这个变量了。在使用createWindow指定的文件的代码中,打开window的父文件中的变量是不能使用的。具体来说就是,在table_view.js中是不能访问app.js中定义的变量的。
在那里,需要改变成,使用currentWindow参数来获取当前window,然后追加view。
其他文件当中的变量不能使用的话,也就是说scope发生了改变。分离每个window当中的变量是很方便的结构。那么从一个window到一个window数据的传递就需要费点儿事了。这个基本上没有什么大的问题,从此以后开发过程中,做成新的window的时候要积极地分割成多个文件。
总结
这回我们说了一下Window和View的关系以及布局的调整方法。而且在后半部分还说了一下开发过程中把文件分割成多个文件的方法。下一回我们将说一下使用OAuth来调用API,朝着做一个像样的Twitter客户端方向编写代码。
发表评论
-
VisualUI for Titanium Studio
2014-01-13 09:02 1550VisualUI for Titanium Studio is ... -
Google Auth (OAuth 2.0) for Titanium
2013-03-19 11:49 2061Google OAuth 2.0 for Titanium i ... -
Appcelerator Titanium: Up and Running
2013-03-19 08:40 46Appcelerator Titanium: Up and R ... -
Titanium SDK/Studio 3.0.0 Beta版发布
2012-11-07 09:36 463Titanium SDK/Studio 3.0.0 Beta版 ... -
Titanium SDK 3.0.0 Developer Preview
2012-10-29 16:15 303Titanium SDK 3.0.0 Developer Pr ... -
Appcelerator Partners With Largest Chinese Software Developer Network
2012-10-29 12:01 225(Marketwire - Oct 19, 2012) -Ap ... -
Titanium 3.0 预定10月份发布
2012-09-27 09:12 733Appcelerator CEO Jeff Haynie和 C ... -
Titanium SDK 2.1.3 RC is released – Support for iOS 6
2012-09-21 13:51 241---以下官方原文--- We understand the ... -
国内Ti开发者Winson的CBMVC框架
2012-08-06 15:55 1206目前关注Titanium的开发 ... -
Titanium的MVC框架"Alloy"的介绍
2012-07-18 14:37 4264Alloy(合金)是Appcelerator公司为Titani ... -
TCAD免费考试延长至7月末
2012-07-17 16:09 327Appcelerator延长这次TCAD免费考试的时间到7月末 ... -
TCAD认证考试
2012-07-13 11:31 2584Appcelerator从7/7开始免费开放TCAD(Tita ... -
【转】Appcelerator Cloud Push Notification in iPhone
2012-07-12 08:49 2767Push Notification in iOS Using ... -
【转】Appcelerator Cloud Push Notification in Android
2012-07-12 08:38 2493What is Push Notification? Push ... -
Appcelerator Titanium: Patterns and Best Practices
2012-07-10 10:58 373Appcelerator Titanium: Patterns ... -
Appceleator Cloud Services使用指南(3) - API Reference V1 (chm版本)
2012-05-28 15:22 1871Appceleator Cloud Services API ... -
Appceleator Cloud Services使用指南(2) - 创建第一个应用
2012-05-24 21:57 1812一步一步的创建一个最简单的,使用了ACS服务的应用。 1、新 ... -
Appceleator Cloud Services使用指南(1) - ACS介绍
2012-05-24 10:19 3273Appceleator Cloud Services( ... -
Titanium Mobile基础教程视频
2012-05-23 10:38 639dotinstall.com提供的一套在线Titanium M ... -
Jeff Haynie在GMIC2012表示应用开发者应注意本土化问题
2012-05-22 16:56 3355月10日-11日,2012全球移 ...
相关推荐
Titanium是一款JavaScript开发的开源移动应用框架,它允许开发者使用JavaScript编写原生iOS和Android应用。在Titanium中,我们可以通过HTTPClient模块来发送HTTP请求,与RESTful Web服务进行通信。REST...
### TITANIUM智能手机应用开发教程知识点概览 #### 一、TITANIUM系统简介与特点 **TITANIUM系统**是一种基于云的移动应用程序开发平台,它支持跨平台开发,允许开发者使用JavaScript来编写原生移动应用程序。...
Titanium Mobile API 是一款由 Appcelerator 公司提供的用于跨平台移动应用开发的强大工具包。该工具允许开发者使用 JavaScript 编写应用程序,并通过一套统一的 API 接口访问原生移动设备功能,如 GPS 定位、摄像头...
Android-titanium_mobile.zip,带有javascript的本地ios、android和windows应用程序,安卓系统是谷歌在2008年设计和制造的。操作系统主要写在爪哇,C和C 的核心组件。它是在linux内核之上构建的,具有安全性优势。
sublimetext-tita, Tita Titanium Mobile/Alloy sublime text 2插件 这个插件不再主动地维护 ***因为我不再使用 st2/st3 。 有人对 fork 感兴趣并维护它?替代插件:...
Titanium Mobile SDK 3.1.0 是一个用于构建原生移动应用的开发工具,尤其针对iOS和Android平台。这个版本的Apidoc是开发者的重要参考资料,它包含了完整的API文档,帮助开发者理解并使用Titanium框架的各种功能。...
钛备份 Titanium Backup,备份你的程序及程序数据,并支持定时备份等功能。 功能很强大,有此软件,不管你的格机还是重刷ROM,在重装软件时都是无痛的,非实适用经常捣鼓手机有机友! 免费版功能: * 无时间限制 *...
Titanium Mobile为开发者提供了一种高效的跨平台移动应用开发方式。通过使用JavaScript,开发者能够快速构建功能丰富的应用程序,并且能够在iOS和Android两个主要平台上运行。虽然存在一些局限性,但总体而言,...
Titanium是一个开源的移动开发框架,它允许开发者使用JavaScript语言来构建原生的iOS、Android以及Windows应用程序。这个框架的核心理念是提供一个跨平台的解决方案,让开发者可以用一种语言编写代码,然后在多个...
[Packt Publishing] Appcelerator Titanium 移动应用开发教程 (英文版) [Packt Publishing] Creating Mobile Apps with Appcelerator Titanium (E-Book) ☆ 图书概要:☆ Develop fully-featured mobile ...
在移动应用开发领域,Tiitanium 是一个强大的框架,它允许开发者使用 JavaScript 来构建原生的 iOS 和 Android 应用。这篇博客“使用Titanium来开发“Path”的一些创新UI布局 - 左右菜单”可能探讨了如何利用 ...
在移动应用开发领域,Titanium 是一个流行的选择,它允许开发者使用 JavaScript 来构建原生的 iOS 和 Android 应用。Titanium 的核心理念是通过跨平台的 JavaScript API 提供与原生功能的无缝对接,而插件开发则是这...
Titanium中文版开发手册是一份专门为中文用户编译的开发者指南,旨在帮助熟悉中文的开发者充分利用Titanium框架进行移动应用的开发。Titanium是一个开源的JavaScript平台,允许开发者使用JavaScript、HTML和CSS来...
UX SDK是一套与产品无关的UI对象,可使用快速跟踪Android应用程序的开发。 另外,请查看的新开放源代码版本。 一体化 通过Maven声明依赖项: < groupId>com.dji</ groupId> < artifactId>dji-uxsdk</ ...
- **无需Java或Objective-C**:传统的移动应用开发通常需要使用Java(针对Android)或Objective-C/Swift(针对iOS)。而Titanium打破了这一限制,开发者可以用自己熟悉的语言进行开发,同时保持接近原生性能的表现。...
首先,Titanium是一个开源的JavaScript框架,由Appcelerator公司开发,它允许开发者使用JavaScript编写原生的移动应用,同时支持iOS、Android以及Windows Phone等平台。Titanium的主要优点是提高了开发效率,因为它...