`

采用原生控件+前端技术开发Android、iOS客户端

阅读更多
最近采用原生控件+前端技术开发Android、iOS客户端的方式很流行,其实这种技术方案出现很久了;后来随着html5的发布,采用前端技术也可以渲染出炫丽的视觉界面,这种方案就更加流行起来;另外,复用性高,节约成本,也是其得以流行的原因之一。

原生控件和前端技术结合的实现方式有两种:

1、前端静态资源在客户端
   将静态文件(html、js、css、图片等)放在assets目录下,用下面方法将WebView和html文件绑定:

//Android实现:
public WebView initWebView(WebView webView){
android.view.ViewGroup.LayoutParams layoutParams = new LayoutParams(
android.view.ViewGroup.LayoutParams.FILL_PARENT,
android.view.ViewGroup.LayoutParams.FILL_PARENT);
webView.setLayoutParams(layoutParams);

WebSettings webSettings = webView.getSettings(); 
webSettings.setRenderPriority(RenderPriority.HIGH);   
        //java script 
         webSettings.setJavaScriptEnabled(true);   
         webSettings.setJavaScriptCanOpenWindowsAutomatically(true); 
         // access Assets and resources 
         webSettings.setAllowFileAccess(true);
         webSettings.setAppCacheEnabled(false);
         webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);//隐藏滚动条
        
         webView.loadUrl("file:///android_asset/XXX.html");
}

//iOS实现:
    NSURL *baseURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]];
    NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
    NSString *html = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
    [myWebView loadHTMLString:html baseURL:baseURL];

到此,你可以启动你的程序了,正常情况下XXX.html页面会显示在你的手机上。

这种方式让你可以用前端技术代替原生控件实现界面效果;
另外,如果你的应用需要服务端数据,这种方式可以提高应用程序响应速度,特别是在带宽有限(如:2G/3G网络)的情况下比较明显;因为很多静态文件已经在本地了,不需要在程序运行时从服务端下载。

2、前端静态资源在服务端
   直接用webview加载一个链接就可以了:
//Android实现:
   webView.loadUrl("http://ringw.iteye.com/blog/2072310");

//iOS实现:
    NSURL* url = [NSURL URLWithString:@"http://ringw.iteye.com/blog/2072310"];//创建URL
    NSURLRequest* request = [NSURLRequest requestWithURL:url];  //创建NSURLRequest
    [myWebView loadRequest:request];
  
   这种方式简单易懂;更新升级方便。

-----------

对于第一种方式,我发现如果页面上有ajax请求,在iOS上或者android的targetSdkVersion设置为17及以上时,会出现ajax跨域问题,目前还没找到解决方法,欢迎一起讨论

分享到:
评论

相关推荐

    react-native介绍

    NativeApp指完全使用原生技术开发的应用,提供最佳的用户体验和性能,但成本较高,且需要分别维护iOS和Android两个版本。 React Native的诞生正是为了解决上述开发模式带来的问题。它使用JavaScript调用原生方法,...

    XE10移动开发框架(完整无病毒)

    XE10移动开发框架充分利用了FireMonkey的特性,允许开发者使用一套代码库创建可以在iOS、Android、Windows等不同平台上运行的应用。其设计目标是简化开发流程,提高开发效率,同时保持高性能和原生用户体验。 **...

    开发移动购物APP.pdf

    MUI是基于HTML5+CSS3的移动UI框架,由DCloud(即HBuilder的开发者)开发,设计风格接近iOS和Android的原生界面,简化了前端页面的布局和组件开发。 4. **系统功能介绍**:移动购物APP的功能通常包括商品浏览、搜索...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    鉴于市场上用户的手机型号、种类、屏幕分辨率等参差不齐,传统方式根据主流系统分别开发相应的系统耗时又耗力,为了高效开发并节约开发项目成本,本文采用Android+HTML5相结合的方式进行移动端Web系统的设计研发工作...

    前端面试宝典大全.pdf

    - **前端发展趋势**:随着Web技术的发展,现代前端技术已经能够支持跨平台应用的开发。这意味着使用Web技术不仅可以构建传统的网站,还能开发移动Web应用乃至原生级别的移动应用。 - **书籍定位**:本书面向求职中...

    社区电商网站,H5,微信小程序,app全套源码

    4. App开发:这里的App可能指的是原生App,需要针对iOS和Android等不同操作系统进行开发,通常使用Swift、Objective-C(iOS)、Java、Kotlin(Android)等语言。原生App拥有更好的性能和用户体验,但开发成本相对较...

    HTML5移动开发指南

    6. 跨平台开发实践:由于HTML5技术的特性,利用HTML5开发的Web应用程序可以部署在不同的平台上,如iOS、Android、Windows等。开发者可以通过一套代码实现跨平台部署,这对于降低开发和维护成本非常重要。 7. 设备...

    lyverva-phonegap:Phonegap Lyverva 客户端

    这个项目“lyverva-phonegap”是针对Lyverva服务的PhoneGap客户端实现,表明它是一个基于Web技术的移动应用,旨在运行在Android、iOS等平台上,为用户提供与Lyverva服务的交互。 PhoneGap的核心是Cordova,Cordova...

    delphi xe 6 datasheet.pdf

    - **Delphi XE6** 是由 Embarcadero Technologies 开发的一款强大的跨平台开发工具,支持开发者使用单一代码库快速构建适用于 Windows、Mac、Android 和 iOS 的原生应用。 - 它提供了一个经过验证的可视化开发环境,...

    ECommerce.Mobile:ECommerce项目-NativeScript Mobile客户端

    在本文中,我们将深入探讨“ECommerce.Mobile:ECommerce项目-NativeScript Mobile...通过学习和实践这个项目,开发者不仅可以提升自己的移动开发技能,还能了解到如何利用Web技术开发原生应用,从而拓宽职业发展道路。

    Klientutveckling

    这涉及到使用Web技术(如HTML5)创建适应各种屏幕大小和触摸操作的响应式网站,或者使用原生平台的开发工具(如iOS的Swift或Android的Java/Kotlin)构建原生应用。 此外,现代客户端开发还包括前端框架和库的使用,...

    登录对话框显示登录信息

    在移动应用领域,Android开发者会使用XML布局和Java或Kotlin代码,iOS开发者则使用Storyboard或SwiftUI来构建登录视图。 登录信息的显示策略也很重要。为了保护用户隐私,密码输入框通常会使用星号或圆点代替明文字...

    关于React常见问题链接集合

    12. **React Native**:React技术也扩展到了移动应用开发领域,React Native允许开发者用JavaScript和React编写原生iOS和Android应用。 这个"关于React常见问题链接集合"可能会涵盖以上这些主题,以及更多实战中...

    使用BaaS更快地构建Xamarin应用

    2. **View层**:包含UI组件和布局,使用Xamarin.Forms或者针对特定平台的原生控件实现。 3. **Presenter层**:作为Model和View之间的中介,处理数据交互和业务逻辑,通常会调用BaaS的API。 4. **API客户端**:封装了...

Global site tag (gtag.js) - Google Analytics