jQuery Mobile:为移动设备提供的高度统一的 UI 框架
Jquery mobile构建于Jquery 以及 Jquery UI类库之上,为前端开发人员提供了一个兼容所有主流移动设备平台的统一UI接口系统。拥有出色的弹性,轻量化以及渐进增强特性与可访问性。jQuery Mobile框架可以轻松的帮助我们实现非常好看的、可跨设备的Web应用程序。其官网地址为:http://jquerymobile.com/。
第一个jQuery Mobile页面
jQuery Mobile 为我们提供了许多模板可以方便的创建页面。我们先创建一个最基本的页面,它包含一个标题栏和内容:
1: <!DOCTYPE html>2: <html>3: <head>4: <title>My Page</title>5: <meta name="viewport" content="width=device-width, initial-scale=1">6: <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />7: <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>8: <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>9: </head>10: <body>11: 12: <div data-role="page">13: 14: <div data-role="header">15: <h1>My Title</h1>16: </div><!-- /header -->17: 18: <div data-role="content">19: <p>Hello world</p>20: </div><!-- /content -->21: 22: </div><!-- /page -->23: 24: </body>25: </html>
将其保存为HTML格式,可以直接在浏览器中打开我们就可以看到第一个JQM的页面了。
有没有一点安卓应用的意思?我们可以直接通过安卓手机浏览器来访问这个页面,当然JQM不仅仅这么简单,我们会逐步的学习和讨论的。
使用PhoneGap使web应用本地化
大家也许会问,我们用jqm创建的只是一个页面,我只能用浏览器去访问它,能不能够使它离线情况我都能够访问、更甚者我可以可以让它变成一个安卓的应用?当然可以,PhoneGap就可以帮我完成这样的愿望。
PhoneGap是一个用基于HTML,CSS和JavaScript的,创建移动跨平台移动应用程序的快速开发平台。它使开发者能够利用iPhone,Android,Palm,Symbian,WP7,Bada和Blackberry智能手机的核心功能——包括地理定位,加速器,联系人,声音和振动等,此外PhoneGap拥有丰富的插件,可以以此扩展无限的功能。PhoneGap是免费的,但是它需要特定平台提供的附加软件,例如iPhone的iPhone SDK,Android的Android SDK等,也可以和DW5.5配套开发。使用PhoneGap只比为每个平台分别建立应用程序好一点点,因为虽然基本代码是一样的,但是你仍然需要为每个平台分别编译应用程序。
准备工作
- Eclipse 3.4+
- Android开发神器 Eclipse Classic
- Android开发必备 Android SDK
- Android开发利器 ADT Plugin
- 然后就是我们的PhoneGap的SDK,Download 在这里。
在Eclispse中建立第一个phonegap应用
1、新建一个安卓项目
- 这个很简单,不需要我多说什么。
2、引入cordova-2.3.0.jar
3、将jqm页面放置于assets/www/目录下
4、新建一个继承DroidGap的类
1: import org.apache.cordova.*;
2: 3: import com.devil.dropdowndemo.R;4: 5: public class Outer extends DroidGap6: {7: @Override8: public void onCreate(Bundle savedInstanceState)9: {10: super.onCreate(savedInstanceState);11: Log.d("DroidGap", "DroidGap --> Started ");12: super.setIntegerProperty("splashscreen", R.drawable.splash);13: super.loadUrl("file:///android_asset/www/index.html", 3000);14: }15: }
onCreate方法用于定义启动的主页面,其中 super.setIntegerProperty()用于定义启动之前的引导页面,可以不需要该行代码。
super.loadUrl()指定了主页面的位置为asset/www/目录下的index.html文件,第一次启动延时3秒。
5、修改AndroidManifest.xml,增加权限设置
1: <activity2: android:name="com.devil.Outer"3: android:configChanges="orientation|keyboardHidden"4: android:label="@string/app_name"5: >6: <intent-filter>7: <action android:name="android.intent.action.MAIN" />8: 9: <category android:name="android.intent.category.LAUNCHER" />10: </intent-filter>11: </activity>12: </application>13: 14: <supports-screens15: android:anyDensity="true"16: android:largeScreens="true"17: android:normalScreens="true"18: android:resizeable="true"19: android:smallScreens="true"20: android:xlargeScreens="true" />21: 22: <uses-permission android:name="android.permission.CAMERA" />23: <uses-permission android:name="android.permission.VIBRATE" />24: <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />25: <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />26: <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />27: <uses-permission android:name="android.permission.INTERNET" />28: <uses-permission android:name="android.permission.RECEIVE_SMS" />29: <uses-permission android:name="android.permission.RECORD_AUDIO" />30: <uses-permission android:name="android.permission.RECORD_VIDEO" />31: <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />32: <uses-permission android:name="android.permission.READ_CONTACTS" />33: <uses-permission android:name="android.permission.WRITE_CONTACTS" />34: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />35: <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />36: <uses-permission android:name="android.permission.GET_ACCOUNTS" />37: <uses-permission android:name="android.permission.BROADCAST_STICKY" />
OK,我们的jqm和phoneGap的第一个安卓应用就这么搭好了,来看看运行效果吧。
结语
关于是安卓原生好还是用web好,这样的问题不是我们所要讨论的,正如B/S和C/S结构一样,每一种技术都有它存在的价值。用HTML5代替原生APP最近在逐渐的火起来,由于HTML5的“Write Once,Run Everywhere”的特性,它在电商领域替代许多的原生应用。对于我来说,这只是诸多路途中的一种,因为我需要用它来完成工作,所以需要以它作为起点然后一点一点的学习。不管是安卓原生还是web、java还是c#都是我们实现理想的手段,只有对程序哪永恒不变的热爱,才是我们最值的骄傲的。