赞
踩
嗯,下载安装了下鸿蒙应用的IDE,学习了一下他们的文档,挺好的。就是模拟器太烦人,还需要登录,有时间限制。模拟器插件还容易故障,希望好好修改下嘛。
总的来说体验不错,很容易上手。
来话不多说,我们来看下。
传送门在此
这里面讲的相当详细,这样的官方白皮书,还是全中文的,是不是感觉很幸福呢?这时候或许我们也就知道了一件事,为何老外学编程很简单,我们这边却很难,语言不同啊。唉。
ok,安装完成后呢,你可以先跑个HelloWorld。嗯。。得注册华为账号和开发者身份,不过也无所谓,很快的。跑helloworld的操作也在官方说的相当详细了,我这里放下链接
传送门
这时候我们来尝试搞点乱七八糟的应用吧。
首先我们尝试一下骰子模拟器,
步骤如下:
1、首先是一个主界面,也就是欢迎界面吧,点击后跳转到下一页面
2、下一级页面来显示随机数1-6。
3、为了不是一次只能显示一个随机数,我们需要在第二个页面加上一个按钮,让随机刷新。
效果如图
这里我还放了一个接口,用于之后功能的扩充。
在此说业务代码之前我们要先简单的了解下鸿蒙应用的项目结构和组成,以及新建一个空项目的操作。
然后稍等片刻,我们的项目正在逐步构建,接下来就到了说下结构的时候了
对于这部分的结构,具体详细内容在下面的传送门。
传送门
不过我估摸你也未必会看,用到啥我就说啥吧。
我们需要什么呢?
界面很简单,有两部分组成,一个是Text组成,还有一个是两个按钮组成。先不说这个按钮的功能,我们先把界面搭起来,那么这个界面的搭法,由于不像Android可以拖拽所以需要我们自己配置界面。
界面的配置方式有两种,都有传送门的,可以稍微去了解一下
1、代码创建界面
2、xml创建界面
由于本人不是很喜欢将界面和代码大幅度重叠,会造成没必要的耦合,于是我选择xml创建
界面的布局有两个方式
1、DirectionalLayout
2、DependentLayout
我们不是两个界面嘛,分别用这两个布局看看吧。
先新建两个包,一个存储界面布局,还有一个存储可绘制资源,简单理解为界面的每个空间的格式吧
首先这个界面xml文件是这样的
<?xml version="1.0" encoding="utf-8"?> <DirectionalLayout xmlns:ohos="http://schemas.huawei.com/res/ohos" ohos:width="match_parent" ohos:height="match_parent" ohos:orientation="vertical" ohos:padding="32"> <Text ohos:id="$+id:text1" ohos:width="match_content" ohos:height="match_content" ohos:text_color="red" ohos:text="欢迎使用随机骰子" ohos:text_alignment="horizontal_center" ohos:layout_alignment="horizontal_center" ohos:text_size="15vp"/> <Button ohos:id="$+id:button_1" ohos:width="match_content" ohos:height="match_content" ohos:text="标准6面骰子" ohos:layout_alignment="horizontal_center" ohos:text_size="50"/> <Button ohos:id="$+id:button_2" ohos:width="match_content" ohos:height="match_content" ohos:text_size="50" ohos:text="自己选择事件" ohos:layout_alignment="horizontal_center" /> <!-- ohos:text_size="15fp"--> </DirectionalLayout>
然后我们需要在
这个类,修改下模板,让他显示我们的界面
这时候会报错,没搞懂这一块是咋回事,但是预估是还没有给咱们的资源编译ID
我们运行下看看
步骤如下:
你看哈,找到ResourceTable这个类,你会发现
圈里面的都是自动生成的,嗯就如之前图中说的那样赋予了资源文件ID。
至此第一部分结束啦。
为了更符合我们开头的图,让其具有页面跳转,我们给这两个按钮,加上一点颜色,并且,加上监听器,监听点击事件,当有点击发生时我们让他跳到下一页面。
很简单的就是显示一个text然后一个按钮,这是页面二的按钮也是不做任何操作,展示出来就行
我们选择用DependentLayout这个布局
代码如下:
button_1_1_element
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:ohos="http://schemas.huawei.com/res/ohos"
ohos:shape="rectangle">
<corners
ohos:radius="100"/>
<solid
ohos:color="#FF007DFF"/>
</shape>
color_gray_element
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:ohos="http://schemas.huawei.com/res/ohos"
ohos:shape="rectangle">
<solid
ohos:color="#ff888888"/>
</shape>
<?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="testTrue" ohos:text_size="35fp" ohos:text_color="red" ohos:background_element="$graphic:color_gray_element"/> <Button ohos:id="$+id:button_1_1" ohos:width="match_content" ohos:height="match_content" ohos:text="再来一次!" ohos:below="$+id:text" ohos:center_in_parent="true" ohos:text_size="50" ohos:text_color="white" ohos:background_element="$graphic:button_1_1_element.xml" /> </DependentLayout>
功能就是跳转到第二个页面
先新建第二个界面把界面二的xml文件放进去
第一个界面的button1加上了一个监听器,跳转到界面二,同时加上了一些颜色和样式
运行下如下所示:
点一下蓝色的,显示如下
ok跳到下一个界面了,说明行的通,接下来我们把第一个页面的剩下的按钮也给加上和已经变化的按钮相同的功能。
整体来说第一个界面的代码如下。
public class MainAbilitySlice extends AbilitySlice { private DirectionalLayout myLayout = new DirectionalLayout(this); @Override public void onStart(Intent intent) { super.onStart(intent); super.setUIContent(ResourceTable.Layout_first_layout); Button button1=(Button)findComponentById(ResourceTable.Id_button_1); if(button1!=null){ ShapeElement background=new ShapeElement(); background.setRgbColor(new RgbColor(0,125,255)); background.setCornerRadius(25); button1.setBackground(background); button1.setClickedListener(new Component.ClickedListener() { @Override public void onClick(Component component) { present(new SecondAbilitySlice(),new Intent()); } }); } Button button2=(Button)findComponentById(ResourceTable.Id_button_2); if(button2!=null){ ShapeElement background=new ShapeElement(); background.setRgbColor(new RgbColor(0,125,255)); background.setCornerRadius(25); button2.setBackground(background); button2.setClickedListener(new Component.ClickedListener() { @Override public void onClick(Component component) { present(new SecondAbilitySlice(),new Intent()); } }); } } @Override public void onActive() { super.onActive(); } @Override public void onForeground(Intent intent) { super.onForeground(intent); } }
运行后,点击任何一个都会跳到第二个界面,显示如下
让他做随机数显示。然后并可以通过按钮进行刷新。
上面把逻辑都说清楚了,这就是用Random实现下,代码如下:
public class SecondAbilitySlice extends AbilitySlice { private DirectionalLayout myLayout = new DirectionalLayout(this); @Override public void onStart(Intent intent) { super.onStart(intent); super.setUIContent(ResourceTable.Layout_second_layout); Text text = (Text) findComponentById(ResourceTable.Id_text); Random random = new Random(); int x = random.nextInt(6)+1; System.out.println(x); text.setText("随机数为:" + x); Button button_1_1 = (Button) findComponentById(ResourceTable.Id_button_1_1); button_1_1.setClickedListener(new Component.ClickedListener() { @Override public void onClick(Component component) { int x = random.nextInt(6) + 1; Text text = (Text) findComponentById(ResourceTable.Id_text); text.setText("随机数为:" + x); } }); } @Override public void onActive() { super.onActive(); } @Override public void onForeground(Intent intent) { super.onForeground(intent); } }
效果如下
至此,Done!!!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。