第一章:JNI的简单使用(3)-APP软件实现

根据上一节的设计,我们的APP界面已经完成,但是botton和checkbox没有任何的功能,
只是一个简单的装饰部件。接下来我们实现APP的软件操作,为部件关联具体的功能。

button

在AndrodStudio(下面简称AS)软件界面,使用 A n d r o i d \color{red}{Android} Android模式查看工程,可以看到app 与 Gradle Scripts。
展开如下
在这里插入图片描述
在app-> res-> layout -> content_mian.xml(只做参考,不同工程略有差异)文件中,

  .....
    <Button
        android:id="@+id/BUTTON"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="ALL OFF"/>
  .....

xml的语言比较好理解,这里描述了一个button,他的id为"@+id/BUTTON",后续部分我们会使用到该id,该button显示的宽度为满屏,高度为自动调节,并且其中的初始显示文本为"ALL OFF"。这样的一段代码描述之后,就简单的实现了一个button部件。虽然这个button虽然可以点击,但是没有任何的功能,基本的打印都不能实现,下面我们为这个button添加功能。

打开app-> java-> com.example.administrator,我们可以看到文件MainActivity.java文件,其中有一个
p r o t e c t e d \color{red}{protected} protected v o i d \color{red}{void} void o n C r e a t e \color{red}{ onCreate} onCreate
这个方法会在在APP启动的时候就会被调用,在这个方法内部加入代码如下:

button (Button)findViewById(R.id.BUTTON)

创建一个button对象,并且指定其id为BUTTON,与xml文件中 android:id="@+id/BUTTON"对应,这样就与界面的button绑定在一起了,我们在MainActivity.java文件中对button的操作也是对界面button的操作。

别忘记我们的目的是通过APP点亮LED灯,其中button是总开关,当客户点击button时,我们肯定需要调用一个函数关闭或者打开LED,当然这个函数肯定时应用层的,没有办法真正的去点亮LED,对硬件的操作,后续章节进行讲解。

创建出一个botton对象之后,绑定其点击执行函数,添加代码如下

button.setOnClickListener(new MyButtonListener());

这样,当我们点击button的时候,就会执行函数 MyButtonListener(),这个函数做什么呢?当然不是点亮就是熄灭,我们先做一个简单的框架,仅仅设置一下初始化显示的文字,后续章节在慢慢填充,代码如下:

    class MyButtonListener implements View.OnClickListener {
        @Override
        public void onClick(View view) {
            button.setText("ALL OFF");}

这样,最初始的button就出来了,后续点击button去完成点灯,灭灯,只需在该函数内部继续添加相应代码即可。

checkbox

经过前面的设计,对于checkbox的实现就相对简单了,依葫芦画瓢即可,同样还是在app-> res-> layout -> content_mian.xml文件中,
有如下代码

    <CheckBox
        android:id="@+id/LED1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="LED1"
        android:onClick="onCheckboxClicked"/>

    <CheckBox
        android:id="@+id/LED2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="LED2"
        android:onClick="onCheckboxClicked"/>

和前面类似的在此就不进行讲解了,此处不同的地方在于 a n d r o i d : o n C l i c k = " o n C h e c k b o x C l i c k e d " \color{red}{android:onClick="onCheckboxClicked"} android:onClick="onCheckboxClicked"(该代码为问我们自行填写),根据英语我们可以很容易的理解到,点击Checkbox时,会执行函数onCheckboxClicked。故此,我们需要在MainActivity.java文件中,实现该函数,同样我们还是只做简单的框架搭建,后续再实现对硬件的操作,代码如下

    public void onCheckboxClicked(View view) {
        boolean checked = ((CheckBox) view).isChecked();
        switch(view.getId()) {
            case R.id.LED1:
                if (checked) {
                    Toast.makeText(getApplicationContext(), "LED1 on", Toast.LENGTH_SHORT).show();
                }
                else {
                    Toast.makeText(getApplicationContext(), "LED1 off", Toast.LENGTH_SHORT).show();
                }
                break;
            case R.id.LED2:
                if (checked) {
                    Toast.makeText(getApplicationContext(), "LED2 on", Toast.LENGTH_SHORT).show();
                }
                else {
                    Toast.makeText(getApplicationContext(), "LED2 off", Toast.LENGTH_SHORT).show();
                }
                break;
        }
    }

首先,我们可以看到调用了 b o o l e a n c h e c k e d = ( ( C h e c k B o x ) v i e w ) . i s C h e c k e d ( ) ; \color{red}{ boolean checked = ((CheckBox) view).isChecked();} booleanchecked=((CheckBox)view).isChecked();
理由很简单,两个Checkbox共用一个函数,当然需要确定是那个Checkbox被点击。
T o a s t . m a k e T e x t \color{red}{Toast.makeText} Toast.makeText起一个提示框的作用,当我们点击Checkbox,浮现出当前LED的状态

回顾

该小节简单的介绍了一下,AS界面部件怎么和具体功能联系在一起,下小节正式步入JNI
第一次写博客,不足之处,请多多包含。

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江南才尽,年少无知!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值