第一篇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应用开发入门教程(经典版)相关推荐

  1. 傻瓜式Android APP开发入门教程

    这篇文章主要介绍了Android APP开发入门教程,从SDK下载.开发环境搭建.代码编写.APP打包等步骤一一讲解,非常简明的一个Android APP开发入门教程,android各种机子和rom的 ...

  2. 微信公众平台开发入门教程[2019版]

    关键字:微信公众平台开发 作者:方倍工作室 在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/JS等基础. 我们将使用微信公 ...

  3. 微信公众平台开发入门教程[2020版]

    在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/JS等基础. 我们将使用微信公众账号方倍工作室作为讲解的例子,二维码见左侧 ...

  4. Android 安卓开发入门教程,

    Android开发使用控件入门 V6.0版 一.环境搭建: 1. 下载Android SDK (1) http://developer.android.com/sdk/index.html,该网址访问 ...

  5. 速读原著-Android应用开发入门教程(Android中建立工程)

    2.4 Android中建立工程 2.4.1. 建立工程 Android 的 SDK 环境安装完成后,就可以在 SDK 中建立工程并进行调试了. 建立 Android 工程步骤如下: 选择" ...

  6. 《Android应用开发入门经典(第3版)》——第6.1节创建演示应用

    本节书摘来自异步社区<Android应用开发入门经典(第3版)>一书中的第6章,第6.1节创建演示应用,作者 [美]Carmen Delessio , Lauren Darcey , Sh ...

  7. 《Android应用开发入门经典(第3版)》——导读

    本节书摘来自异步社区<Android应用开发入门经典(第3版)>一书中的目录,作者 [美]Carmen Delessio , Lauren Darcey , Shane Conder,更多 ...

  8. Android百度地图开发入门教程

    Android百度地图开发入门教程 1.平台注册登录 2.创建应用 3.Android studio配置 4.代码编写 5.最终效果(建议真机) 1.平台注册登录 登录百度地图开放平台网站注册并登录 ...

  9. IP 摄像机移动应用 SDK 开发入门教程(安卓版)

    涂鸦智能安卓版摄像机(IP Camera,简称 IPC)SDK 是基于智能生活 App SDK 开发而成. 通过移动应用控制物理网设备是常见的使用场景,但由于设备的品类丰富,增大了应用开发难度.因此  ...

  10. 2012 android开发工具,2012最新完整版Android开发入门教程

    此文档为2012年最新完整版的Android开发入门教程,免费分享给大家,希望大家喜欢! 点击索取: android开发者资料大全 第一篇:安装SDK 这里主要介绍如何安装Android的SDK开发包 ...

最新文章

  1. 设置RabbitMQ远程ip登录
  2. 浅析丨AI安防产品发展现状与趋势分析
  3. python模块搜索原则_详解python模块路径查找规则及定义
  4. ubuntu下查看caj文件
  5. 您是否尝试过MicroProfile Starter?
  6. java list能作为入参吗_springmvc 不支持 List 对象作为 方法的参数
  7. 读《Javascript高级程序设计》中的javascript事件处理程序(事件侦听器)心得
  8. win7系统怎么拷贝到u盘_win7/10系统复制文件到u盘提示文件过大怎么办
  9. 计算机网络(七)——无线局域网
  10. Service Mesh服务网格:8种方式简化微服务部署
  11. SecondNamenode作用
  12. 基于BOLT的仿迅雷加速器界面开发(一)
  13. 【Java-网络编程】一对一聊天系统的实现
  14. 《自然语言处理实战:利用Python理解、分析和生成文本》读书笔记:第1章 NLP概述
  15. 9. 成功解决:Driver class ‘org.gjt.mm.mysql.Driver‘ could not be found
  16. 又一大型色情直播App被捣毁,女主播哭求别告诉家人
  17. 正则表达式与grep
  18. 小红的签到题 (shui
  19. 上海旅游-徐家汇教堂
  20. i5 9400f参数 i5 9400f性能怎么样

热门文章

  1. 超级全的一篇前端性能优化清单
  2. Ilasm.exe和Ildasm.exe的简单使用
  3. 谷歌Chrome繁体字乱码问题
  4. h3c s5500 ssh v5 配置_H3C S5500 V2基本配置及配置命令
  5. 仿uc设置默认浏览器
  6. c语言jni调用外部函数,(转)JNI调用C函数
  7. linux中tar命令怎么用,linux tar命令使用详解
  8. 计算机北桥芯片结构图,电脑主板芯片维修教程第一节:电脑主板你是否真的认识...
  9. 全站即时通讯技术资料分类
  10. 计算机会不会取代人类英语作文,人类不能被机器人取代英语作文