首页 文章 精选 留言 我的

精选列表

搜索[模拟器开发],共10000篇文章
优秀的个人博客,低调大师

鸿蒙OS应用开发实践(三)

经过前两篇的学习,我们了解了DevEco运行一个程序的基本流程和一个鸿蒙OS应用项目的代码结构。 用一句《三体》格式的话说:跑得动hello world,我们就是同志了。 这一篇,我们就自己手动撸一个简单的鸿蒙交互程序:从一个页面跳转到另一个页面。 (一)创建工程 先创建一个新的TV的empty java工程: 点finish后,发现这次从创建到项目环境加载完成,用了很短的时间,这是因为初始环境需要各种配置和下载,类似我们初下完一个大型游戏,首次需要更新内容一般。 (二)自定义布局 进入界面后,默认的IDE已经创建了一个hello world程序,我们打开entry -> src -> main ->resources -> base -> layout -> ability_main.xml 布局文件: 我们先清掉原本的布局,重新写入我们自己的布局: <?xml version="1.0" encoding="utf-8"?> <DependentLayout xmlns:ohos="http://schemas.huawei.com/res/ohos" ohos:width="match_parent" ohos:height="match_parent" ohos:background_element="#000000"> <Text ohos:id="$+id:text" ohos:width="match_content" ohos:height="match_content" ohos:center_in_parent="true" ohos:text="你好,鸿蒙OS" ohos:text_color="white" ohos:text_size="32fp"/> <Button ohos:id="$+id:button" ohos:width="match_content" ohos:height="match_content" ohos:text_size="20fp" ohos:text="跳转" ohos:left_margin="50vp" ohos:bottom_margin="50vp" ohos:right_padding="80vp" ohos:left_padding="80vp" ohos:text_color="white" ohos:background_element="$graphic:button_element" ohos:center_in_parent="true" ohos:align_parent_bottom="true"/> </DependentLayout> DependentLayout标签指定了这是一个相对位置布局,意思就是布局里的每个组件可以指定相对于其他同级组件的位置,也可以指定相对于父组件的位置。 Button标签表示了这里将会布局创建一个按钮,大部分设置信息同Text。 按钮的背景指定了“button_element”来显示,这是另外一个布局文件,我们来手动创建,在resources -> base ->graphic 目录下,右键创建一个File,命名为:button_element.xml 在button_element.xml添加如下代码: <?xml version="1.0" encoding="utf-8"?> <shape xmlns:ohos="http://schemas.huawei.com/res/ohos" ohos:shape="rectangle"> <corners ohos:radius="10"/> <solid ohos:color="#FF007DFF"/> </shape> 目前鸿蒙官方提供形状:rectangle(方形)和oval(椭圆),通过不同的内外边距设定,就可以衍生出其他形状:圆形,椭圆,正方,胶囊。 corners标签表示了圆角设定,将方形设定圆角,我们就可以得到一个圆角按钮。 默认的模版使用的是方向布局DirectionLayout(垂直或者横向),这里我们修改使用DependentLayout相对位置布局,这样可以更加方便的控制文本和按钮的相对位置。 运行效果: (三)创建建跳转页面 当然,当前点击跳转按钮不会有任何反应,一方面我们还没写交互逻辑,另一方面,我们要跳转的页面也还没写。我们继续下一步,写一个新的页面。 在项目对应的目录下,创建一个空的FA(java),如下图: 这里我们将新页面命名为:NewPage 下面两项不勾选,直接点finish。 创建后,目录下除了刚才创建的newpage,还会自动创建一个newpageslice在slice目录下以及对应的布局文件在layout目录下: 之前在跑hello world的时候,我们说过,ability是入口,逻辑代码都在slice里,同样,在这个newpage里,它也是将逻辑route到了slice类中。 我们打开ability_new_page.xml,简单修改下输出文本: (四)主页面添加交互逻辑 到这里,我们的第二个页面算是简单的创建完毕了,下一步,我们需要在主页面下添加交互逻辑,让它可以跳转到这个新的slice页面中来,在主页面(MainAbilitySlice)中去添加按钮点击的事件逻辑: Button btn = (Button) findComponentById(ResourceTable.Id_button); if (btn != null) { //添加按钮点击事件监听 btn.setClickedListener(new Component.ClickedListener() { @Override public void onClick(Component component) { Intent newpageIntent = new Intent(); //指定目标页面 Operation operation = new Intent.OperationBuilder() .withDeviceId("") .withBundleName("com.qibiao.harmonyosdemo") .withAbilityName("com.qibiao.harmonyosdemo.NewPage") .build(); newpageIntent.setOperation(operation); //启动目标页面 startAbility(newpageIntent); } }); } 这里会要求import新的包,以提供组件模块,不然上面的代码输完是会标红报错的。需要引入的包: import ohos.aafwk.content.Operation; import ohos.agp.components.Button; import ohos.agp.components.Component; 解析下代码: findComponentById通过id来找到按钮组件,然后这个id对应的就是我们在布局文件中设置的: ohos:id="$+id:button" onClick对应按钮的点击事件,这个不是自定义函数,属于事件触发函数。 Intent上回说过了,它是一个中间件,协助当前页面往新页面通讯。 Operation operation = new Intent.OperationBuilder() .withDeviceId("") .withBundleName("com.qibiao.harmonyosdemo") .withAbilityName("com.qibiao.harmonyosdemo.NewPage") .build(); 这串代码指定了我们要跳转的目标页面,需要指定目标的包名,还有Ability名称(非slice)。 最后使用startAbility()接口启动那个页面。 (五)运行 再次运行查看效果(先开远程虚拟设备,再点运行): 效果出来了,点击右侧的返回,还能回到主界面。 本篇完。下篇见。 作者:涂启标 想了解更多内容,请访问: 51CTO和华为官方战略合作共建的鸿蒙技术社区https://harmonyos.51cto.com

优秀的个人博客,低调大师

HarmonyOS应用开发常见示例源码

Http封装库:https://gitee.com/weimin20171202/HiHttp Json库:https://gitee.com/weimin20171202/hijson 常见组件使用的示例:https://gitee.com/weimin20171202/HarmonyComponent 简单天气app:https://gitee.com/weimin20171202/WeatherApp 一个简单的图片选择:https://gitee.com/weimin20171202/PictureSelect 简单画板:https://gitee.com/weimin20171202/DrawBoard 简单的页面跳转:https://gitee.com/weimin20171202/page-jump http请求和html文本处理:https://gitee.com/weimin20171202/jsoup 在线电子词典:https://gitee.com/weimin20171202/HiEdict (存在问题已经解决: java.io.IOException:cleartext Http traffic to www.iciba.com not permitted 在config.json中增加: "deviceConfig": { "default": { "network": { "usesCleartext":true } } }, https://developer.huawei.com/consumer/cn/forum/topic/0204422289062850612?fid=0101303901040230869)

优秀的个人博客,低调大师

AppCode 2020.1.4 发布,集成开发环境

AppCode 2020.1.4 发布了,此版本修复了以下问题: Xcode 关于在具有 SPM 依赖项的项目上修改了 xcworkspace 的问题 XCTUnwrap 显示为未解决 在混合 Swift/OC 项目中更改 Objective-C 方法的签名时,IDE 冻结 类的构造方法/初始化方法问题 AppCode 2020.1 中的 Feature Trainer 插件问题 初始化程序中的字符串文字被高亮为错误 更新说明:https://blog.jetbrains.com/objc/2020/06/appcode-2020-1-4-is-here/

优秀的个人博客,低调大师

WebStorm 2020.1.2 发布,前端开发 IDE

WebStorm 2020.1.2 发布了,这是一个 bug 修复版本,主要更新内容包括: 修复了WSL 与 Node.js 相关的问题 解决了 CSS3 网格布局属性格式不正确的问题 现在可以在运行 ng build 之后正确识别 Angular Material 事件 解决了几个性能问题(WEB-45371、WEB-45028、WEB-45024、WEB-39488和WEB-45369) 使用 Shell 脚本打开项目时,不再显示错误的项目名称和路径 更新说明:https://blog.jetbrains.com/webstorm/2020/06/webstorm-2020-1-2/

优秀的个人博客,低调大师

WebStorm 2019.3.3 发布,前端开发 IDE

WebStorm 2019.3.3 发布了,主要更新内容: 添加了对 Angular 中的 i18n- 属性的支持(WEB-39230) 解决了在 Vue 组件中缺少使用私有成员的问题(WEB-40644) 现在,在使用 1.7.4 版本时可以识别Quasar组件(WEB-43354) 现在,在使用 WSL 节点解释器时定义了环境变量(WEB-42752) 已修复关于Yarn 2支持的几个问题(WEB-43384,WEB-43298, andWEB-43396) 解决了 Vue.js 插件耗电量高的问题(WEB-43017) 更新说明:https://blog.jetbrains.com/webstorm/2020/02/webstorm-2019-3-3-is-available/

优秀的个人博客,低调大师

WebStorm 2019.3.2 发布,前端开发 IDE

WebStorm 2019.3 的第二个漏洞修复版本 WebStorm 2019.3.2现已发布。 您可以使用 Toolbox App或直接从 IDE 中对其进行更新。同时也可以从网站对 WebStorm 2019.3.2进行下载。 此次的错误修复更新附带了几个新功能,例如: 支持使用@use加载 Sass 内置模块(WEB-42783)。 初步支持 TypeScript 3.8 中的仅类型导入和导出(WEB-43125)。 此外,WebStorm 2019.3.2 中已修复的问题如下: 现在可以在 Windows 上正确启用 Node.js 13.5+ 的代码完成功能(WEB-43088)。 使用 nvm 时,现在可以再次运行带有 react-scripts 的测试(WEB-42729)。 在 Angular 应用程序中运行Karma测试的问题已修复(WEB-42752)。 yarn install 不再被 yarn add 错误地取代(WEB-42909)。 Flow 模块的解决问题已修复(WEB-40527)。 解决了 JavaScript 和 TypeScript 的几个性能问题(WEB-41653和WEB-43045)。 有关 WebStorm 2019.3.1 中解决的问题的完整列表,请参阅发行说明。

优秀的个人博客,低调大师

CakePHP 2.10.20 发布,PHP 开发框架

CakePHP 2.10.20 发布了,这是 2.10 分支的维护版本,修复了几个社区报告的问题。 Bugfixes ControllerTestDispatcher 对象的创建已移至单独的方法中,允许在应用程序代码中覆盖它。 JSON 对象为空的请求不再导致 request->data 为 null。 现在,可以使用插件点表示法从插件外部加载位于插件中的 ShellHelpers。 修复了由 phpunit.phar 运行测试时,标头已经发送与会话相关的警告的问题。 当存在活动会话时,不再调用 session_set_save_handler()。 CakeTestSuiteCommand::run()退出逻辑现在与 phpunit 的行为匹配,并使用 false 调用 doRun()。 更新说明:https://bakery.cakephp.org/2020/01/16/cakephp_21020_released.html

优秀的个人博客,低调大师

Haxe 4.0 发布,Web 开发语言

Haxe 4.0已经发布了,Haxe是一门新兴的开源编程语言,是一种开源的编程语言。内容如下: 新的函数类型语法 引入了用于指定函数类型的新语法,现在已经明确地将参数类型与返回类型分离,并支持参数名称。 (name:String, age:Int)->Bool arrow function syntax 此版本引入箭头函数语法。 (a, b) -> a + b 不再支持自定义属性访问器 将属性访问器类型更改为(set,get),并使用由前缀get_ 或set_ 后跟属性名称组成的标准 getter/setter 名称: class Test { @:isVar var myvar(get, set) : String = "Something"; static function main() { trace (new Test().get_myvar()); } public function new() {} public function get_myvar() : String { return myvar; } public function set_myvar(s:String) : String { return myvar = s; } } 键值迭代器 for 循环语法现在使用新的语法支持在 键+值 对上的迭代: for (key => value in collection) {} 更多详情见发布说明: https://community.haxe.org/t/haxe-4-is-released/2102

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册