今日头条APP案例开发.docx
《今日头条APP案例开发.docx》由会员分享,可在线阅读,更多相关《今日头条APP案例开发.docx(79页珍藏版)》请在冰豆网上搜索。
今日头条APP案例开发
APP开发实战-新闻客户端
基于h5+的app开发介绍、hui、mui介绍、项目部署1
制作子窗口、数据加载、下拉刷新7
新闻分类切换、上拉加载更多14
懒加载的使用17
新闻详情页面开发18
新闻详情页面分享功能21
app在线升级25
基于h5+的app开发介绍、hui、mui介绍、项目部署
基于h5+的app开发介绍
传统的app开发一般使用原生语言进行,HTML5plusRuntime,简称5+Runtime,是运行于手机端的强化web引擎,除了支持标准HTML5外,还支持更多扩展的jsapi,使得js的能力不输于原生。
5+Runtime内置于HBuilder,在真机运行、打包时自动挂载。
业内之前有phonegap/Cordova方案,但是他们自带jsapi太少了,扩展api
需要用原生语言开发,更致命的是这类方案的性能不足。
最终实现
完成app开发且一套代码多端发布。
开发工具hbuilder
官网:
http:
//dcloud.io/
非常推荐的编辑器,完美支持htmljscssphpapp开发。
mui
最接近原生APP体验的高性能前端框架,使用前端框架的目的:
快速开发、更稳
定的布局设计。
官网:
//dcloud.io/mui.html
1
hui
由hcoder发布的前端ui框架,与mui显著的区别是dom操作。
创建项目
1、不使用任何框架
使用hbulider直接创建移动app项目,选择模板时选择空模板。
2、使用mui
使用hbulider直接创建移动app项目,选择模板时选择mui项目(自动生成mu
i最新的cssjs入口文件)。
3、使用hui
使用hbulider直接创建移动app项目,选择模板时选择空模板(下载hui框架
包,复制进项目即可)。
真机调试
usb连接手机,点击编辑上的在手机设备下运行即可,安卓效果更好。
app开发中窗口的概念
使用h5+开发app原理是创建一个窗口内部包含一个html,然后调用原生接口完
成更多功能。
缺点也就是html并不是原生在进行浏览器渲染时白屏卡顿在低端
机上会比较明显,但随着手机的更新换代这样的问题已经越来越不明显。
通过我
们开发者的努力可以把效果做到接近原生。
app开发的一个重要概念就是窗口,所以不要使用ahref=""去打开新页面,而
是创建一个新窗口。
2
不使用任何框架制作项头部
1、注意meta声明:
aximum-scale=1.0,user-scalable=no"/> 2、css格式化dom *{margin:0px;padding:0px;font-size:15px;color:#000000;outline:none;} body{background:#FFFFFF;} div{overflow:hidden;} a{text-decoration:none;color:#000000;} a:hover{text-decoration:underline;} img{border:none;} 3、头部代码编写 导入hui 下载hui最新版本解压后导入进项目。 制作头部导航及内部元素 1、一键改变ui的整体颜色:打开hui.css搜索#3283FA替换为#D43D3D并 保存立即可以看到效果。2、完成头部布局 dom部分 DOCTYPEhtml> 3
aximum-scale=1.0,user-scalable=no"/>
2、css格式化dom
*{margin:
0px;padding:
0px;font-size:
15px;color:
#000000;outline:
non
e;}
body{background:
#FFFFFF;}
div{overflow:
hidden;}
a{text-decoration:
none;color:
#000000;}
a:
hover{text-decoration:
underline;}
img{border:
none;}
3、头部代码编写
导入hui
下载hui最新版本解压后导入进项目。
制作头部导航及内部元素
1、一键改变ui的整体颜色:
打开hui.css搜索#3283FA替换为#D43D3D并
保存立即可以看到效果。
2、完成头部布局
dom部分
DOCTYPEhtml>
3
="color:#999999;">搜您想搜的
="color:
#999999;">搜您想搜的
css增加
4
#topSearch{width:
60%;height:
30px;background:
#F6F5F4;border-radius:
3px;float:
right;margin:
7px8px0px0px;line-height:
30px;color:
#999999;text-align:
left;text-indent:
15px;font-size:
14px;}
制作分类导航
dom及js
changeCate(0);"class="topCateSed">推荐 changeCate(1);">热点 changeCate(2);">视频 changeCate(3);">本地 changeCate(4);">社会 changeCate(5);">娱乐 changeCate(6);">问答 changeCate(7);">汽车 changeCate(8);">体育
changeCate(0);"class="topCateSed">推荐
changeCate(1);">热点 changeCate(2);">视频 changeCate(3);">本地 changeCate(4);">社会 changeCate(5);">娱乐 changeCate(6);">问答 changeCate(7);">汽车 changeCate(8);">体育
changeCate
(1);">热点
changeCate(2);">视频 changeCate(3);">本地 changeCate(4);">社会 changeCate(5);">娱乐 changeCate(6);">问答 changeCate(7);">汽车 changeCate(8);">体育
(2);">视频
changeCate(3);">本地 changeCate(4);">社会 changeCate(5);">娱乐 changeCate(6);">问答 changeCate(7);">汽车 changeCate(8);">体育
changeCate(3);">本地
changeCate(4);">社会 changeCate(5);">娱乐 changeCate(6);">问答 changeCate(7);">汽车 changeCate(8);">体育
changeCate(4);">社会
changeCate(5);">娱乐 changeCate(6);">问答 changeCate(7);">汽车 changeCate(8);">体育
changeCate(5);">娱乐
changeCate(6);">问答 changeCate(7);">汽车 changeCate(8);">体育
changeCate(6);">问答
changeCate(7);">汽车 changeCate(8);">体育
changeCate(7);">汽车
changeCate(8);">体育
hui('#topCate').scrollX(8,'a');
5
//完善点击效果
functionchangeCate(cateId){
hui('#topCate').find('a').removeClass('topCateSed').eq(cateId).ad
dClass('topCateSed');
}
使用了hui的横向滚动、使用hui选择器进行连贯操作完成点击效果、
css部分
#topCate{height:
40px;background:
#F6F5F4;border-bottom:
1pxsolid#E8
E8E8;width:
100%;}
#topCatea{display:
block;float:
left;height:
40px;line-height:
40px;width:
15%;text-align:
center;}
.topCateSed{color:
#D43D3D;font-size:
17px!
important;}
6
制作子窗口、数据加载、下拉刷新
为了实现app的上拉刷新和下拉加载我们需要在入口页面嵌入子窗口。
相关知识:
webview,参考手册:
//www.html5plus.org/doc/zh_cn/webvi
ew.html
实现步骤:
1、创建子窗口indexSub.html
2、在入口页嵌入子窗口(会使用plusReady事件)
3、将子页面的返回功能转交给入口页
入口页代码
user-scalable=no"/>
7
="color:#999999;">搜您想搜的changeCate(0);"class="topCateSed">推荐changeCate(1);">热点changeCate(2);">视频changeCate(3);">本地changeCate(4);">社会changeCate(5);">娱乐changeCate(6);">问答changeCate(7);">汽车changeCate(8);">体育
#999999;">
搜您想搜的
changeCate(0);"class="topCateSed">推荐changeCate(1);">热点changeCate(2);">视频changeCate(3);">本地changeCate(4);">社会changeCate(5);">娱乐changeCate(6);">问答changeCate(7);">汽车changeCate(8);">体育
changeCate(0);"class="topCateSed">
推荐
changeCate(1);">热点changeCate(2);">视频changeCate(3);">本地changeCate(4);">社会changeCate(5);">娱乐changeCate(6);">问答changeCate(7);">汽车changeCate(8);">体育
(1);">
热点
changeCate(2);">视频changeCate(3);">本地changeCate(4);">社会changeCate(5);">娱乐changeCate(6);">问答changeCate(7);">汽车changeCate(8);">体育
(2);">
视频
changeCate(3);">本地changeCate(4);">社会changeCate(5);">娱乐changeCate(6);">问答changeCate(7);">汽车changeCate(8);">体育
changeCate(3);">
本地
changeCate(4);">社会changeCate(5);">娱乐changeCate(6);">问答changeCate(7);">汽车changeCate(8);">体育
changeCate(4);">
社会
changeCate(5);">娱乐changeCate(6);">问答changeCate(7);">汽车changeCate(8);">体育
changeCate(5);">
娱乐
changeCate(6);">问答changeCate(7);">汽车changeCate(8);">体育
changeCate(6);">
问答
changeCate(7);">汽车changeCate(8);">体育
changeCate(7);">
汽车
changeCate(8);">
体育
hui.plusReady(function(){
varsubView=hui.create('indexSub.html',{'top':
'87px'
,bottom:
'0
px'});//
此处注意设置
bottom
varself=plus.webview.currentWebview();
self.append(subView);
});
8
子窗口代码
hi....
9
hui.Back=function(){
varparentView=plus.webview.currentWebview().parent();
parentView.evalJS('hui.Back();');
HOA介绍
HCoderOpenApi简称HOA是由提供的一套api数据源,提
供了日常app开发学习过程中常用的数据源,适用于基于muihuih5+的app
开发。
开放源地址:
项目实现过程
入口页js变化
varsubView;
subView=hui.create('indexSub.html',{'top':
'88px',bottom:
'0px
'});
10
subView.evalJS('changeCate('+cateId+');');
子页面完整代码
11
varpage=1,cate=0;
changeCate(0);
hui.refresh(getNews);
functionchangeCate(cateId){cate=cateId;getNews();}
functiongetNews(){
varhtml='';
hui.centerLoading();
hui.get(
'
aList&page='+page+'&cate='+cate,
function(data){
vararrNews=data.split('--hcSplitor--');
for(vari=0;i varitemArr=arrNews[i].split('--hcListSplitor--'); ',{},true,{id:\''+itemArr[0]+'\'});">'+ 12 ''+''+ ''+itemArr[2]+''+
varitemArr=arrNews[i].split('--hcListSplitor--');
',{},true,{id:
\''+itemArr[0]+'\'});">'+
12
''+
'';
hui('#newsList').html('
hui.centerLoading(true);
hui.endRefresh();
},
function(e){
hui.toast('获取新闻失败,请检查网络');hui.centerLoading(true);
);
13
新闻分类切换、上拉加载更多
本节内容
1、点击新闻分类切换不同的新闻列表。
2、上拉加载更多
核心js
page=1;
cate=cateId;
hui.scrollTop(0);
hui.isLoadMoreIng=false;
getNewsList();
functiongetNewsList(){
vararrItem=data.split('--hcSplitor--');
14
for(vari=0;i varitem=arrItem[i].split('--hcListSplitor--'); html+=''+
varitem=arrItem[i].split('--hcListSplitor--');
html+='
'hui.open(\'info.html\',{},true,{newsId:'+item[0]+'});">'+ ''+''+ ''+item[2]+''+
hui.open(\'info.html\',{},true,
{newsId:
'+item[0]+'});">'+
hui.lazyLoadNow();
page++;
hui.toast('连接失败');
15
16
懒加载的使用
使用HUI来实现图片的懒加载是非常方便的,您只需要设置图片的预加载占位图
及实际地址:
//js
hui.lazyLoad(className)与hui.lazyLoadNow(className)
hui.lazyLoad()的参数为需要懒加载的图片的类属性,默认为HUI_Lazy。
懒加载组件会自动识别滚动条滚动事件,如果
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1