Android应用开发入门教程(经典版)
第一篇Android系统结构和SDK使用
第1章 Android的系统介绍
第2章 Android SDK的开发环境
第二篇 Android应用程序的概述和框架
第3章 Android应用层程序的开发方式
第4章Android应用程序示例
第5章 Android应用程序的内容
第三篇Android的UI系统实现
第6章 UI的基本外形和控制
第7章 控件(Widget)的使用
第8章 视图组(ViewGroup)和布局(Layout)的使用
第9章 2D图形接口的使用
第10章 OpenGL 3D图形的使用
文件:590m.com/f/25127180-500544491-c69e08(访问密码:551685)
以下内容无关:
-------------------------------------------分割线---------------------------------------------
pathView的使用类似与ListView,都需要模型(model)和代理(delegate),只不过pathView多了一个路径(path)属性,顾名思义路径就是item滑动的路径.
一个Path可以由下面多个Path段组成(之前讲解PathAnimation时提过):
PathLine : 由一个坐标指定的直线路径
PathPolyline : 由一个path坐标列表指定的多段路径
PathQuad : 由一个控制点生成的二次贝塞尔曲线路径
PathCubic : 由两个控制点生成的三次贝塞尔曲线路径
PathArc : 由结束坐标,以及一个radiusX和radiusY半径实现的一个圆弧(顺时针绘画)
PathAngleArc : 由中心点、半径和起始角度startAngle、旋转角度sweepAngle指定的圆弧。
PathCurve : 由一个坐标点生成的curve曲线路径(通常需要配合多个PathCurve才行)
PathSvg : 由SVG路径字符串实现的路径。你可以用它创建线条, 曲线, 弧形等等
下表概述了各种路径元素的适用性:
其中PathAttribute用来给路径上定义带有值的命名属性。而PathPercent则用来对每个间距进行一个调整。
1.PathAttribute
PathAttribute对象用来给路径上的不同点指定由name和value组成的自定义属性。自定义属性将会作为附加属性公开给委托。
路径上任何特定点上的属性值都是通过下个PathAttributes插入的。然后两个点之间的路径会根据属性value值做插值计算.
比如下面这个(参考QT帮助):
复制代码
path: Path {
startX: 120; startY: 100
PathAttribute { name: “iconScale”; value: 1.0 } // 给(120,100)添加属性iconScale = 1.0、iconOpacity = 1.0
PathAttribute { name: “iconOpacity”; value: 1.0 }
PathQuad { x: 120; y: 25; controlX: 260; controlY: 75 }
PathAttribute { name: “iconScale”; value: 0.3 } // 给(120,25)添加属性iconScale = 0.3 iconOpacity = 0.5
PathAttribute { name: “iconOpacity”; value: 0.5 }
PathQuad { x: 120; y: 100; controlX: -20; controlY: 75 }
}
复制代码
这里我们最后还有一个贝塞尔曲线,终点是(120,100),这里并未给它赋PathAttribute自定义属性,这是因为开头已经给(120,100)添加了属性.所以这里省略掉了.
大家不妨试试改成这样(其实效果一样):
复制代码
path: Path {
startX: 120; startY: 100
PathAttribute { name: “iconScale”; value: 1.0 } // 给(120,100)添加属性iconScale = 1.0、iconOpacity = 1.0
PathAttribute { name: “iconOpacity”; value: 1.0 }
PathQuad { x: 120; y: 25; controlX: 260; controlY: 75 }
PathAttribute { name: “iconScale”; value: 0.3 } // 给(120,25)添加属性iconScale = 0.3 iconOpacity = 0.5
PathAttribute { name: “iconOpacity”; value: 0.5 }
PathQuad { x: 120; y: 100; controlX: -20; controlY: 75 }
PathAttribute { name: “iconScale”; value: 1.0 } // 给(120,100)添加属性iconScale = 1.0、iconOpacity = 1.0
PathAttribute { name: “iconOpacity”; value: 1.0 }
}
复制代码
2.PathPercent
PathPercent用来设置每个路径上的显示item的百分比比例,通常放在路径元素后面,来指示前面的路径显示item的百分比比例
比如下面示例:
复制代码
path:Path {
startX: 20; startY: 100
PathQuad { x: 50; y: 180; controlX: 0; controlY: 80 }
PathPercent { value: 0.25 }
PathLine { x: 150; y: 180 }
PathPercent { value: 0.75 }
PathQuad { x: 180; y: 100; controlX: 200; controlY: 80 }
}
复制代码
将50%的item放置在PathLine路径上,然后25%的item放置在其它PathQuad上.
3.PathView实战
我们参考韦东山之前发布的一个Qt开源视频,如下图所示:
最终做出来如下图所示:
效果图如下所示(有点大,需要多等下刷新出来):
源码已经上传到群里,由于我们借用了别人的UI图,所以请不要将别人的UI图片用在商业上,仅供学习参考使用!!!
核心代码如下所示:
复制代码
ListModel {
id: mymodel
ListElement {name: "多媒体"back: "qrc:/images/media_nor.png"}ListElement {name: "系统设置"back: "qrc:/images/system_nor.png"}ListElement {name: "智能家电"back: "qrc:/images/machine_nor.png"}ListElement {name: "卫生医疗"back: "qrc:/images/medical_nor.png"}ListElement {name: "公共服务"back: "qrc:/images/public_nor.png"}}Component {id: delegateApp {id: rectwidth: itemSize.widthheight: itemSize.heightz: PathView.iconZscale: PathView.iconScaleimagSrc: backlabel: nameenabled: view.opacity == 1.0transform: Rotation{origin.x: rect.width/2.0origin.y: rect.height/2.0axis{x:0;y:1;z:0}angle: rect.PathView.iconAngle}MouseArea {anchors.fill: parentonClicked: {if (view.currentIndex == index)newJumpWindow("qrc:/AppWindow.qml", name)}}}
}PathView {id: viewanchors.centerIn: parentwidth: (itemCount-1.9)*itemSize.widthheight: wind.heightmodel: mymodeldelegate: delegateflickDeceleration: 300preferredHighlightBegin: 0.5preferredHighlightEnd: 0.5pathItemCount: itemCountclip: trueenabled: opacity == 1.0path: Path {id: pathstartX: 0startY: view.height * 0.45PathAttribute{name:"iconZ";value: 0}PathAttribute{name:"iconAngle";value: -50}PathAttribute{name:"iconScale";value: 0.7}PathLine{x:view.width/2; y: path.startY} // 设置初始Z为0,角度为70 大小比例为0.6PathAttribute{name:"iconZ";value: 100}PathAttribute{name:"iconAngle";value: 0}PathAttribute{name:"iconScale";value: 1.0}PathLine{x:view.width; y: path.startY}PathAttribute{name:"iconZ";value: 0}PathAttribute{name:"iconAngle";value: 50}PathAttribute{name:"iconScale";value: 0.7}}
}
Android应用开发入门教程(经典版)相关推荐
- 傻瓜式Android APP开发入门教程
这篇文章主要介绍了Android APP开发入门教程,从SDK下载.开发环境搭建.代码编写.APP打包等步骤一一讲解,非常简明的一个Android APP开发入门教程,android各种机子和rom的 ...
- 微信公众平台开发入门教程[2019版]
关键字:微信公众平台开发 作者:方倍工作室 在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/JS等基础. 我们将使用微信公 ...
- 微信公众平台开发入门教程[2020版]
在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/JS等基础. 我们将使用微信公众账号方倍工作室作为讲解的例子,二维码见左侧 ...
- Android 安卓开发入门教程,
Android开发使用控件入门 V6.0版 一.环境搭建: 1. 下载Android SDK (1) http://developer.android.com/sdk/index.html,该网址访问 ...
- 速读原著-Android应用开发入门教程(Android中建立工程)
2.4 Android中建立工程 2.4.1. 建立工程 Android 的 SDK 环境安装完成后,就可以在 SDK 中建立工程并进行调试了. 建立 Android 工程步骤如下: 选择" ...
- 《Android应用开发入门经典(第3版)》——第6.1节创建演示应用
本节书摘来自异步社区<Android应用开发入门经典(第3版)>一书中的第6章,第6.1节创建演示应用,作者 [美]Carmen Delessio , Lauren Darcey , Sh ...
- 《Android应用开发入门经典(第3版)》——导读
本节书摘来自异步社区<Android应用开发入门经典(第3版)>一书中的目录,作者 [美]Carmen Delessio , Lauren Darcey , Shane Conder,更多 ...
- Android百度地图开发入门教程
Android百度地图开发入门教程 1.平台注册登录 2.创建应用 3.Android studio配置 4.代码编写 5.最终效果(建议真机) 1.平台注册登录 登录百度地图开放平台网站注册并登录 ...
- IP 摄像机移动应用 SDK 开发入门教程(安卓版)
涂鸦智能安卓版摄像机(IP Camera,简称 IPC)SDK 是基于智能生活 App SDK 开发而成. 通过移动应用控制物理网设备是常见的使用场景,但由于设备的品类丰富,增大了应用开发难度.因此 ...
- 2012 android开发工具,2012最新完整版Android开发入门教程
此文档为2012年最新完整版的Android开发入门教程,免费分享给大家,希望大家喜欢! 点击索取: android开发者资料大全 第一篇:安装SDK 这里主要介绍如何安装Android的SDK开发包 ...
最新文章
- 设置RabbitMQ远程ip登录
- 浅析丨AI安防产品发展现状与趋势分析
- python模块搜索原则_详解python模块路径查找规则及定义
- ubuntu下查看caj文件
- 您是否尝试过MicroProfile Starter?
- java list能作为入参吗_springmvc 不支持 List 对象作为 方法的参数
- 读《Javascript高级程序设计》中的javascript事件处理程序(事件侦听器)心得
- win7系统怎么拷贝到u盘_win7/10系统复制文件到u盘提示文件过大怎么办
- 计算机网络(七)——无线局域网
- Service Mesh服务网格:8种方式简化微服务部署
- SecondNamenode作用
- 基于BOLT的仿迅雷加速器界面开发(一)
- 【Java-网络编程】一对一聊天系统的实现
- 《自然语言处理实战:利用Python理解、分析和生成文本》读书笔记:第1章 NLP概述
- 9. 成功解决:Driver class ‘org.gjt.mm.mysql.Driver‘ could not be found
- 又一大型色情直播App被捣毁,女主播哭求别告诉家人
- 正则表达式与grep
- 小红的签到题 (shui
- 上海旅游-徐家汇教堂
- i5 9400f参数 i5 9400f性能怎么样
热门文章
- 超级全的一篇前端性能优化清单
- Ilasm.exe和Ildasm.exe的简单使用
- 谷歌Chrome繁体字乱码问题
- h3c s5500 ssh v5 配置_H3C S5500 V2基本配置及配置命令
- 仿uc设置默认浏览器
- c语言jni调用外部函数,(转)JNI调用C函数
- linux中tar命令怎么用,linux tar命令使用详解
- 计算机北桥芯片结构图,电脑主板芯片维修教程第一节:电脑主板你是否真的认识...
- 全站即时通讯技术资料分类
- 计算机会不会取代人类英语作文,人类不能被机器人取代英语作文