kanzi学习之路(序)

       凤凰科技讯 北京时间2016年12月19日消息,据外媒报道,中国移动操作系统公司中科创达软件股份有限公司在周一宣布,已同意以6400万欧元(约合6700万美元)收购芬兰汽车软件公司Rightware。

       Rightware成立于2009年,是全球领先的汽车用户界面设计和嵌入式图形引擎软件产品供应商,其为汽车仪表盘和信息娱乐屏幕设计开发的人机交互界面Rightware®Kanzi®广泛应用在全球各大知名品牌汽车中。Kanzi平台不仅能够大大缩短智能车载交互界面从设计开发到量产的时间,更能为汽车的数字仪表盘和信息娱乐系统的交互创意提供进一步的延展空间。

       相信做车载仪表和中控的都接触过kanzi,至少或多或少听过。自从国外kanzi加qnx在汽车仪表上得到成功应用之后,国内车厂也都个个跟风,一时间kanzi在车载电子行业间瞬间很热。但是kanzi真有这么好嘛,不敢苟同,在车载电子行业同样可以选择的优秀的图形引擎还有qt,我感觉qt并不弱于kanzi。下面是个人对于二者的一些看法:

1、kanzi非开源,开发学习费用较高,资料较少。qt开源,学习的成本也就较低,使用的人较多,使用的领域也很广,学习的途径特别多;

2、kanzi不开源,整个框架也并不是太成熟,由于从2.8到3.0又有一个较大的跨越,又由原来的c转到了c++,有问题请原厂的人来协助的话,整个的费用也是很高的。qt由于开源,大家都可以提交bug,实在不行,可以自己修改源码,自己编译,而且年头久远,框架稳定。

3、kanzi的开发模式新颖,kanzi studio 和kanzi engine将设计与代码分开,效果可以更好的由设计师设计,方式灵活,美工和程序员分工明确。qt虽然也有对应的qt designer,但是使用起来并没有kanzi studio方便,还有一些bug。不过qt的qml,使用描述性语言,简化了界面的布局开发,倒是也给qt在这点上扳回了一些,但是,设计师或者美工还是不能够实时看到自己的一个开发效果,所以kanzi在这点上还是很占优势的,这也是它得到推广的一个亮点。

4、kanzi的3D效果支持的较好,而且提高了局部刷新的方法,所以,做出的产品很炫,但是它要一开始就要加载一个kzb文件,读入到内存,所以对于内存和cpu的消耗较大。qt的很早之前已经支持OpenGL,但是使用起来较为麻烦。在qt5.5左右开始引入了Qt3D模块,来补充自己在3D方面的不足,但是现在到了5.6,它的一些API接口才逐渐稳定下来,但是这方面的文档很少,给开发也还是带来了不少的麻烦。虽然同kanzi一样,qt5.0之后使用的都是scene graph渲染架构,但是貌似没有提供出局部刷新的实现接口,使得帧数还是一个较大的问题。


      所以,我感觉二者并没有谁处于太大的优势,二者各有独特的地方。但是,由于现在车厂对于kanzi很青睐,使得对于kanzi开发人员的需求还是很大的,而且由于kanzi学习的成本较高,又没有多少资料,所以对于熟悉这块的开发者更急缺了。现在中科创达收购了Rightware,对于在本土的推广,肯定有好处的,毕竟中国市场那么大。就算收购之后,他们决定在国外有些“大动作”,但是中国车厂都会跟着国外走的,所以不管怎么说,眼下去学习一下kanzi,性价比还是比较高的。抛除这些背景,去了解一个架构,去学习它的一些思想,优秀的地方也是很不错的,这也是一个初衷。


      但是,问题又来了,kanzi的资料这么少,怎么去学习呢?没办法,只有帮助文档了和kanzi2.8的视频教程,直接去搜狗视频上搜kanzi,就可以找到相关的视频。整个的视频教程还是较为完整的,尤其对于UI设计师而言,但是相对于程序猿来说,介绍的不详细,而且现在已经到了3.2 版本了,kanzi engine 的编程接口改动还是很大的。没办法,只能去看帮助文档了,但是坑爹的是就连唯一官方的帮助文档很多地方也不全,尤其到一些类的API接口的介绍。但是好在来学kanzi的应该之前都有学过类似的一个绘制引擎,如Qt,cocos2d等,对于一些基本的概念也都有一定的了解,kanzi的学习应该都是我们第二个第三个选择,鉴于已有的经验,对于kanzi的学习,大家都有自己的想法,我就在这里抛砖引玉了,大家如果对于学习一个框架有好的想法,可以提出来,大家一起学习探讨。也希望大家如果有好的资源,可以分享出来,大家一起学习,一起进步。


      下面说一下我写这系列博客的初衷,就是想开设一个kanzi的交流区,找到一批人,一起学习,和大家一起探讨,互相交流学习,把障碍分散,记录学习过程,达到更高的效率。目的不仅仅只是去学习kanzi这个框架,可能更重要的是在已有经验的基础上,遇到一个新的框架,如何下手去学习,毕竟学习能力的提高才是重要的。下一篇博客主要就是介绍下kanzi,和大家说一说我准备的一个学习的思路,也希望大家能多多留言,分享一下你当初(成为kanzi大神的你)学习的一个“套路”或者你接下来打算的一个学习方法(kanzi大神成长路上的你)

*********************************************************************************************

本人对于kanzi的了解也并不多,也是处于学习过程,文章中难免会有一些纰漏,欢迎各方砖家来砖拍~~~

******************************转载请标明出处,O(∩_∩)O谢谢**********************************

最后扯一扯,参照豆子的QT学习之路,本文作为kanzi学习之路的一个序言,本系列文章不定义为教程,只是个人的学习的记录和寻找同样想一起学习kanzi的人的一个交流平台。其实本文前一部分老早就写完了,一直保存在草稿箱,今天突然发现再不写完这部分,就要拖到了17年了(惰性也是一种病呀( ⊙ o ⊙ )!),所以就在16年底写完这篇序,标志着kanzi学习计划的开始,下次跟新这一系列博客就是17年了,提前祝大家新年快乐~

### 回答1: 您好! 对于 Java 数组的按字母顺,可以使用 Java 提供的 Arrays 类的 sort 方法,该方法可以对数组进行排。如果您希望按照字母顺对数组进行排,则可以使用 sort 方法的重载版本,该版本接受一个比较器参数,用于指定排规则。 以下是一个使用 Java 数组按字母顺的示例代码: ```java import java.util.Arrays; import java.util.Comparator; public class ArraySortExample { public static void main(String[] args) { // 创建一个字符串数组 String[] arr = {"apple", "banana", "orange", "pear"}; // 使用 Arrays.sort 方法按字母顺对数组进行排 Arrays.sort(arr, new Comparator<String>() { @Override public int compare(String s1, String s2) { return s1.compareTo(s2); } }); // 输出排后的数组 for (String s : arr) { System.out.print(s + " "); } } } ``` 上面的示例代码中,我们创建了一个包含若干字符串的数组,并使用 Arrays.sort 方法对该数组进行排。在 sort 方法的第二个参数中,我们创建了一个匿名比较器类,该类重写了 compare 方法,用于指定按字母顺的规则。 希望这个回答能够帮到您! ### 回答2: Java数组是Java中一个核心的数据结构,它允许我们存储和处理大量的数据。二维字符数组是Java中的一个特殊类型的数组,由多个一维字符数组组成。本文将介绍如何按字母对二维字符数组进行排。 Java提供了很多种对数组进行排的方法,在这里我们介绍Arrays.sort()方法。这个方法可以对Java中的任何类型的数组进行排,包括二维字符数组。 在二维字符数组中,我们可以使用for循环语句来遍历和比较每一个元素。在for循环中,我们可以使用Arrays.sort()方法对每一个一维字符数组进行排。此外,我们还需要使用String类的compareTo()方法来比较字符串的大小。 以下是一个按字母对二维字符数组进行排的示例代码: ``` import java.util.Arrays; public class Sort2DCharArray { public static void main(String[] args) { char[][] charArray = {{'b','c','d','a'}, {'h','j','e','g'},{'i','f','l','k'}}; for (int i = 0; i < charArray.length; i++) { Arrays.sort(charArray[i]); } for (int i = 0; i < charArray.length - 1; i++) { for (int j = i + 1; j < charArray.length; j++) { if (String.valueOf(charArray[i]).compareTo(String.valueOf(charArray[j])) > 0) { char[] temp = charArray[i]; charArray[i] = charArray[j]; charArray[j] = temp; } } } for (int i = 0; i < charArray.length; i++) { for (int j = 0; j < charArray[i].length; j++) { System.out.print(charArray[i][j] + " "); } System.out.println(); } } } ``` 在这个示例中,我们首先定义一个二维字符数组charArray,并使用for循环和Arrays.sort()方法对每一行进行排。接着,我们使用两个for循环和String.compareTo()方法对整个数组进行排。最后,我们再次使用for循环遍历数组并打印排后的结果。 总之,二维字符数组的排,在Java中是一件非常容易的事情。只需要使用Arrays.sort()方法和String.compareTo()方法就可以轻松地实现按字母。 ### 回答3: 在学习Java数组之二维字符数组之前,我们需要了解一些概念。 二维字符数组是由多个一维字符数组组成的数组。在 Java 中,可以使用 char[][] 来表示二维字符数组。通过访问 char[][] 中的元素,我们可以获取或修改二维字符数组中特定位置上的字符。 字母是按照字母表顺对字符串进行排。在 Java 中,我们可以使用 Arrays.sort() 方法来对字符串数组进行排。 对于二维字符数组,我们需要根据每一个一维字符数组中的字符串进行排。具体步骤如下: 1. 遍历二维字符数组中所有的一维字符数组,对每个一维字符数组中的字符串进行排。 2. 对每个一维字符数组中的字符串数组进行排,可以使用 Arrays.sort() 方法,将字符串数组按字母。 3. 根据每个一维字符数组中的第一个字符串进行比较,将整个二维字符数组按字母。 下面是一个示例代码: ```java public class TwoDimensionalCharArraySorting { public static void main(String[] args) { char[][] charArray = {{'a', 'd', 'c'}, {'e', 'b', 'f'}, {'i', 'h', 'g'}}; // 对每个一维字符数组中的字符串进行排 for (int i = 0; i < charArray.length; i++) { Arrays.sort(charArray[i]); } // 根据每个一维字符数组中的第一个字符串进行比较,将整个二维字符数组按字母 Arrays.sort(charArray, new Comparator<char[]>() { @Override public int compare(char[] o1, char[] o2) { String s1 = String.valueOf(o1[0]); String s2 = String.valueOf(o2[0]); return s1.compareTo(s2); // 按字母 } }); // 输出排后的二维字符数组 for (char[] chars : charArray) { for (char aChar : chars) { System.out.print(aChar + " "); } System.out.println(); } } } ``` 以上就是学习 Java 数组之二维字符数组之按字母的基本方法。值得注意的是,在实际开发中,我们可能会遇到其他的排需求,需要根据实际情况进行具体实现。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值