> 文档中心 > 《HarmonyOS实战 — 事件案例》

《HarmonyOS实战 — 事件案例》


一:读取文件循环显示

package com.example.listenerapplication.slice;import com.example.listenerapplication.ResourceTable;import ohos.aafwk.ability.AbilitySlice;import ohos.aafwk.content.Intent;import ohos.agp.components.Button;import ohos.agp.components.Component;import ohos.agp.components.Text;import ohos.global.resource.NotExistException;import ohos.global.resource.Resource;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Random;public class MainAbilitySlice extends AbilitySlice implements Component.ClickedListener {    String[] jokes;    Text text1;    Button btu1;    @Override    public void onStart(Intent intent) { super.onStart(intent); super.setUIContent(ResourceTable.Layout_ability_main); try {     //用来拼接读取到的所有数据     StringBuilder sb = new StringBuilder();     //1.资源管理器     Resource resource = this.getResourceManager().getResource(ResourceTable.Profile_joke);     //因为resource是一个字节流,利用字节流可以读取文件中的内容     BufferedReader br = new BufferedReader(new InputStreamReader(resource));     String line;     while((line = br.readLine()) != null){  sb.append(line);     }     //释放资源     br.close();     //当代码执行到这里的时候,资源文件joke.txt中所有的内容全部读取到sb当中了。     //利用---将数据进行切割,分成四个段子     jokes = sb.toString().split("---");     //当我们点击了按钮之后,就会给文本框设置一个随机的笑话。     //找到文本组件,按钮组件     text1 = (Text) findComponentById(ResourceTable.Id_text1);     btu1 = (Button) findComponentById(ResourceTable.Id_btu1);     //给按钮添加一个单击事件     btu1.setClickedListener(this); } catch (IOException e) {     e.printStackTrace(); } catch (NotExistException e) {     e.printStackTrace(); }    }    @Override    public void onActive() { super.onActive();    }    @Override    public void onForeground(Intent intent) { super.onForeground(intent);    }    @Override    public void onClick(Component component) { //当我们点击了按钮之后,会从数组里面随机获取一个笑话并设置到文本当中 Random r = new Random(); //获取随机索引 int index = r.nextInt(jokes.length); //通过随机索引获取段子 String randomJoke = jokes[index]; //把随机的段子设置到文本当中 text1.setText(randomJoke);    }}

二:读取图片循环显示

package com.example.listenerapplication.slice;import com.example.listenerapplication.ResourceTable;import ohos.aafwk.ability.AbilitySlice;import ohos.aafwk.content.Intent;import ohos.agp.components.Button;import ohos.agp.components.Component;import ohos.agp.components.Image;import java.util.ArrayList;import java.util.Random;public class MainAbilitySlice extends AbilitySlice implements Component.ClickedListener {    ArrayList list = new ArrayList();    Image image;    @Override    public void onStart(Intent intent) { super.onStart(intent); super.setUIContent(ResourceTable.Layout_ability_main); //定义一个数组或者集合用来存储所有的图片 list.add(ResourceTable.Media_girl1); list.add(ResourceTable.Media_girl2); list.add(ResourceTable.Media_girl3); list.add(ResourceTable.Media_girl4); list.add(ResourceTable.Media_girl5); list.add(ResourceTable.Media_girl6); list.add(ResourceTable.Media_girl7); list.add(ResourceTable.Media_girl8); list.add(ResourceTable.Media_girl9); //找到组件 image = (Image) findComponentById(ResourceTable.Id_img); Button btu1 = (Button) findComponentById(ResourceTable.Id_but1); //给按钮绑定单击事件 btu1.setClickedListener(this);    }    @Override    public void onActive() { super.onActive();    }    @Override    public void onForeground(Intent intent) { super.onForeground(intent);    }    @Override    public void onClick(Component component) { //当按钮被点击之后,我们需要修改图片的内容 Random r = new Random(); //获取随机索引 int index = r.nextInt(list.size()); //通过随机的索引,可以获取随机的元素 int randomImg = list.get(index); //把获取到的随机图片设置给Image组件就可以了 image.setImageAndDecodeBounds(randomImg);    }}

三:事件计数

package com.example.listenerapplication.slice;import com.example.listenerapplication.ResourceTable;import ohos.aafwk.ability.AbilitySlice;import ohos.aafwk.content.Intent;import ohos.agp.components.Button;import ohos.agp.components.Component;import ohos.agp.components.Text;public class MainAbilitySlice extends AbilitySlice implements Component.ClickedListener {    Text text;    Button btu;    @Override    public void onStart(Intent intent) { super.onStart(intent); super.setUIContent(ResourceTable.Layout_ability_main); //找到文本和按钮对象 text = (Text) findComponentById(ResourceTable.Id_text1); btu = (Button) findComponentById(ResourceTable.Id_btu1); //给按钮设置单击事件 btu.setClickedListener(this);    }    @Override    public void onActive() { super.onActive();    }    @Override    public void onForeground(Intent intent) { super.onForeground(intent);    }    //如果flag为true表示当前按钮是第一次点击    //如果flag为false表示当前按钮不是第一次点击    boolean flag = true;    long startTime = 0;    //用来记录点击了多少次    int count = 0;    @Override    public void onClick(Component component) { //点一次,计数器就自增一次。 count++; //统计10秒之内,按了多少次 //并把次数在文本框展示出来 if(flag){     //如果当前是第一次点击按钮     //记录当前的时间     startTime = System.currentTimeMillis();     //当第一次点击之后,游戏开始     //修改按钮中的文字内容     btu.setText("请疯狂点我");     //修改标记     flag = false; }else{     if((System.currentTimeMillis() - startTime) <= 10000 ){  text.setText(count + "");     }else{  btu.setText("结束");  //取消按钮的点击事件,让该按钮不能再被点击了  btu.setClickable(false);     } }    }}