欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

鸿蒙应用开发--小白入门,菜鸟入门--模拟骰子应用开发初体验!入门测试,模拟骰子,总有一款适合你!!!

程序员文章站 2022-05-17 08:08:40
...
嗯,下载安装了下鸿蒙应用的IDE,学习了一下他们的文档,挺好的。就是模拟器太烦人,还需要登录,有时间限制。模拟器插件还容易故障,希望好好修改下嘛。
总的来说体验不错,很容易上手。
来话不多说,我们来看下。

首先是安装,配置和调试DevEco Studio

传送门在此
这里面讲的相当详细,这样的官方白皮书,还是全中文的,是不是感觉很幸福呢?这时候或许我们也就知道了一件事,为何老外学编程很简单,我们这边却很难,语言不同啊。唉。

ok,安装完成后呢,你可以先跑个HelloWorld。嗯。。得注册华为账号和开发者身份,不过也无所谓,很快的。跑helloworld的操作也在官方说的相当详细了,我这里放下链接
传送门
这时候我们来尝试搞点乱七八糟的应用吧。
首先我们尝试一下骰子模拟器,
步骤如下:

1、首先是一个主界面,也就是欢迎界面吧,点击后跳转到下一页面
2、下一级页面来显示随机数1-63、为了不是一次只能显示一个随机数,我们需要在第二个页面加上一个按钮,让随机刷新。

效果如图
鸿蒙应用开发--小白入门,菜鸟入门--模拟骰子应用开发初体验!入门测试,模拟骰子,总有一款适合你!!!

页面一

鸿蒙应用开发--小白入门,菜鸟入门--模拟骰子应用开发初体验!入门测试,模拟骰子,总有一款适合你!!!

这里我还放了一个接口,用于之后功能的扩充。

页面二:

鸿蒙应用开发--小白入门,菜鸟入门--模拟骰子应用开发初体验!入门测试,模拟骰子,总有一款适合你!!!
在此说业务代码之前我们要先简单的了解下鸿蒙应用的项目结构和组成,以及新建一个空项目的操作。

1、建一个空的java模板

鸿蒙应用开发--小白入门,菜鸟入门--模拟骰子应用开发初体验!入门测试,模拟骰子,总有一款适合你!!!

鸿蒙应用开发--小白入门,菜鸟入门--模拟骰子应用开发初体验!入门测试,模拟骰子,总有一款适合你!!!
然后稍等片刻,我们的项目正在逐步构建,接下来就到了说下结构的时候了
鸿蒙应用开发--小白入门,菜鸟入门--模拟骰子应用开发初体验!入门测试,模拟骰子,总有一款适合你!!!
对于这部分的结构,具体详细内容在下面的传送门。
传送门
不过我估摸你也未必会看,用到啥我就说啥吧。

2、接下来创建第一个界面,也就是主界面。

我们需要什么呢?
鸿蒙应用开发--小白入门,菜鸟入门--模拟骰子应用开发初体验!入门测试,模拟骰子,总有一款适合你!!!
界面很简单,有两部分组成,一个是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!!!!!