Android_广播机制实战演练(数鸭子)

2023-05-16

Android_广播机制实战演练(数鸭子)

所需文件
在这里插入图片描述
MainActivity

package com.example.a426_countducks;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
//import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
    private MyBroadcastReceiverOne one;
    private MyBroadcastReceiverTwo two;
    private MyBroadcastReceiverThree three;
    private ImageView iv_horn;
    private TextView tv_left_content, tv_one, tv_two, tv_three;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        registerReceiver();
        init();
    }
    private void init() {
        iv_horn = findViewById(R.id.iv_horn);
        tv_left_content = findViewById(R.id.tv_left_content);
        tv_one = findViewById(R.id.tv_one);
        tv_two = findViewById(R.id.tv_two);
        tv_three = findViewById(R.id.tv_three);
        iv_horn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                tv_left_content.setVisibility(View.VISIBLE);
                iv_horn.setClickable(false);  //设置喇叭图片为不可点击的状态
                Intent intent = new Intent();
                intent.setAction("Count_Ducks");      // 定义广播的事件类型
                sendOrderedBroadcast(intent, null);  // 发送有序广播
//                MyBroadcastReceiverThree receiver = new MyBroadcastReceiverThree();
//                sendOrderedBroadcast(intent,null,receiver, null, 0, null, null); // 发送有序广播
            }
        });
    }
    private void registerReceiver() {
        // 动态注册MyBroadcastReceiverTwo广播
        two = new MyBroadcastReceiverTwo();
        IntentFilter filter2 = new IntentFilter();
        filter2.setPriority(1000);
        filter2.addAction("Count_Ducks");
        registerReceiver(two, filter2);
        // 动态注册MyBroadcastReceiverOne广播
        one = new MyBroadcastReceiverOne();
        IntentFilter filter1 = new IntentFilter();
        filter1.setPriority(1000);
        filter1.addAction("Count_Ducks");
        registerReceiver(one, filter1);
        // 动态注册MyBroadcastReceiverThree广播
        three = new MyBroadcastReceiverThree();
        IntentFilter filter3 = new IntentFilter();
        filter3.setPriority(600);
        filter3.addAction("Count_Ducks");
        registerReceiver(three, filter3);
    }

    private int num=0; // 存放序号的变量
    class MyBroadcastReceiverOne extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            tv_one.setVisibility(View.VISIBLE);
            num=num+1;
            tv_one.setText(num+"");
            Log.i("BroadcastReceiverOne", "广播接收者One,接收到了广播消息");
            delay();
        }
    }
    class MyBroadcastReceiverTwo extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            tv_two.setVisibility(View.VISIBLE);
            num=num+1;
            tv_two.setText(num+"");
            Log.i("BroadcastReceiverTwo", "广播接收者Two,接收到了广播消息");
//            abortBroadcast(); //拦截有序广播
//            Log.i("BroadcastReceiverTwo","我是广播接收者Two,广播消息被我拦截了");
            delay();
        }
    }
    class MyBroadcastReceiverThree extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            tv_three.setVisibility(View.VISIBLE);
            num=num+1;
            tv_three.setText(num + "");
            Log.i("BroadcastReceiverThree", "广播接收者Three,接收到了广播消息");
            delay();
        }
    }
    /**
     * 延迟500毫秒
     */
    private void delay(){
        try {
            Thread.sleep(500);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(one);
        unregisterReceiver(two);
        unregisterReceiver(three);
    }
}

activity_main

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/bg">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="40dp"
        android:layout_marginLeft="80dp">

        <ImageView
            android:id="@+id/iv_horn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:src="@drawable/horn" />
        <TextView
            android:id="@+id/tv_left_content"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toLeftOf="@id/iv_horn"
            android:background="@drawable/content_left_bg"
            android:gravity="center"
            android:text="有序报数"
            android:textColor="@android:color/white"
            android:visibility="gone"/>
    </RelativeLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:gravity="center_horizontal">
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <TextView
                android:id="@+id/tv_one"
                style="@style/badge_style"/>
            <ImageView
                android:layout_width="120dp"
                android:layout_height="120dp"
                android:src="@drawable/duck" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <TextView
                android:id="@+id/tv_two"
                style="@style/badge_style" />

            <ImageView style="@style/duck_style" />
        </LinearLayout>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <TextView
                android:id="@+id/tv_three"
                style="@style/badge_style"/>
            <ImageView
                style="@style/duck_style" />
        </LinearLayout>
    </LinearLayout>
</RelativeLayout>

styles



    <!-- Base application theme. -->
<!--    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">-->
<!--        &lt;!&ndash; Customize your theme here. &ndash;&gt;-->
<!--        <item name="colorPrimary">@color/colorPrimary</item>-->
<!--        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>-->
<!--        <item name="colorAccent">@color/colorAccent</item>-->
<!--    </style>-->
    <resources>
    <style name="badge_style">
        <item name="android:layout_width">20dp</item>
        <item name="android:layout_height">20dp</item>
        <item name="android:layout_marginLeft">10dp</item>
        <item name="android:paddingLeft">2dp</item>
        <item name="android:paddingRight">2dp</item>
        <item name="android:textColor">@android:color/white</item>
        <item name="android:gravity">center</item>
        <item name="android:background">@drawable/badge_bg</item>
        <item name="android:textStyle">bold</item>
        <item name="android:textSize">12sp</item>
        <item name="android:visibility">gone</item>
    </style>
    <style name="duck_style">
        <item name="android:layout_width">120dp</item>
        <item name="android:layout_height">120dp</item>
        <item name="android:src">@drawable/duck</item>
    </style>

</resources>

badge_bg

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:endColor="#fe451d"
        android:startColor="#fe957f"
        android:type="linear" />
    <corners android:radius="180dp" />
</shape>

素材
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

运行结果
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android_广播机制实战演练(数鸭子) 的相关文章

  • 阿尔法点亮LED灯(一)汇编语言

    文章目录 前言一 GPIO介绍1 MX6U IO 复用2 MX6U IO 配置3 GPIO 配置4 GPIO 时钟使能5 61 61 GPIO的使用步骤 61 61 二 程序编写1 使能 GPIO1 时钟2 设置 GPIO1 IO03 的复
  • ubuntu20.4遇到GNU GRUB问题

    开启ubuntu遇到GNU GRUB问题 参考链接 xff1a Boot drops to a initramfs prompts busybox Ask Ubuntu 解决GNU GRUB问题步骤 xff1a 1 xff0e 首先ente
  • Pycharm terminal激活虚拟环境

    Pycharm terminal激活虚拟环境 xff0c 首先需要保证系统完成了conda的安装 xff0c 并在Powershell中完成虚拟环境的创建 xff08 操作创建的虚拟环境名称为deep pool xff0c 这个虚拟环境在接
  • xftp成功安装但连接Ubuntu失败

    Xftp连接Ubuntu失败 1 查看主机的IP地址是否填写正确 xff0c 如何查看Ubuntu的IP地址 xff1a 在terminal中输入ifconfig xff0c 如果Ubuntu ifconfig失败 xff0c 原因是未安装
  • skynet中给日志关键字加上颜色

    skynet中给控制台日志关键字加上颜色 控制文本颜色的ANSI转义序列 通用的控制文本颜色的转义序列格式如下 xff1a CSI n1 n2 m 其中CSI全称为 控制序列引导器 xff08 Control Sequence Introd
  • Ubuntu20.4安装docker

    在线安装docker xff08 确保curl已经安装 xff09 curl fsSL https get docker com o get docker sh sudo sh get docker sh 离线安装docker 参考资料ht
  • ubuntu20.4搭建本地地图服务(本地OSRM)

    下载地图数据文件 xff08 xxx osm pbf xff09 xff0c 下载网址http download geofabrik de xff0c 例如下载Asia下的China的文件 xff08 China osm pbf xff09
  • Ubuntu20.4输入ifconfig之后只有ens33,没有具体的ip地址

    出现的问题 xff1a Ubuntu20 4输入ifconfig之后只有ens33 loc docker xff08 这是自己安装的docker分配的端口 xff09 xff0c 发现ens33没有具体的ip地址 解决方法 xff1a 1
  • 使用anaconda创建虚拟环境

    方法一 xff1a 使用anaconda navigator 打开anacodna navigator 选择environments xff0c 点击Create xff0c 填写环境名 选择python版本 方法二 xff1a 使用ana
  • 日常问题——电脑相机灰色带斜杠打不开

    电脑相机灰色带斜杠 xff1f xff1f xff1f 解决方法 OK xff01 xff01 xff01 xff01 xff01 xff01 xff01 xff01 xff01 xff01
  • 云计算课程-Ubuntu系统搭建jenkins服务

    博客内容是云计算课程搭建DevOps流水线的步骤之一 xff0c 即搭建jenkins服务 可以单独运用于jenkins服务的搭建 也可以作为搭建dev ops中jenkins server主机的步骤之一 使用的实验环境为 xff1a Ub
  • 蓝桥杯单片机-静态数码管

    该板子为共阳数码管 Y7C控制每个数码管的内容 xff0c Y6C控制显示数码管的位置 只需要先通过Y6C打开需要显示的数码管 xff0c 即让对应的数码管com口为1 xff0c 再通过Y7C向该数码管写入内容即可 include 34
  • Linux系统(Ubuntu20.04)安装Anaconda及报错解决

    1 错误 2 解决 错误原因 xff1a 现有的文件的md5与真实的md5值不匹配 xff08 现有的文件是在win10系统上下载 xff0c 直接通过FileZilla软件传输 xff0c 得到的文件被修改 xff09 链接 xff1a
  • Ubuntu下的SD卡分区操作(制作Linux启动文件)

    最近在使用SD卡制作Linux启动文件时 xff0c 要进行SD卡的分区操作 总结了主要的流程 xff0c 操作步骤如下 xff1a 1 插入SD卡并挂载到Ubuntu下 xff0c 输入以下命令查看SD卡挂载信息 sudo fdisk l
  • STM32程序正常烧录后不能运行的可能原因(关于新旧CUBE的型号问题)

    STM32程序正常烧录后不能运行的可能原因 xff1a 1 没有勾选Mirco Lib xff1b 2 没有在烧写选项里勾选reset and run xff0c 然后自己也没有手动复位 xff0c 把自己吓到了 xff1b 3 对于使用H
  • vim退出插入模式

    vim退出插入模式其实很简单的 xff0c 直接按键盘Esc键就可以了 xff0c 但是Esc键在键盘上布局位置比较远 xff0c 取而代之的还有另外一种方式就是Ctrl 43
  • 常见的几种数据加密算法

    常见的数据加密算法 一 xff0c 数据加密的含义 数据加密 xff08 Data Encryption xff09 指将一个信息 xff08 或称明文 xff0c plain text xff09 经过加密钥匙 xff08 Encrypt
  • Proxmox 实现存储复制及高可用HA

    proxmox存储复制 和 HA故障切换 存储复制 命令行工具pvesr用于管理Proxmox VE存储复制框架 存储复制能够提高使用本地存储的客户机的冗余性 xff0c 同时降低客户机迁移时间 该工具能够将客户机的虚拟磁盘复制到其他节点
  • 如何利用起家里的旧电脑当个人网盘使?这里有半小时教程(逐步)

    旧电脑这种东西啊 xff0c 扔也不得 xff0c 不扔又不知道怎么利用 xff0c 实乃头疼之事 网盘这种东西啊 xff0c 我们需要的是什么 xff1f 容量 隐私性对吧 xff1f xff08 隐私性你懂的 xff09 xff08 这
  • Docker入门程序

    1 编写Dockerfile文件 创建一个空的Docker工作目录dockerspace 进入该目录 xff0c 并使用sudo vim Dockerfile指令新建并打开一个Docker文件 xff0c 然后向该文件中编写内容 2 编写外

随机推荐

  • Ubuntu 系统中网络总是断掉重新连接

    Ubuntu 系统中网络总是断掉重新连接 xff0c 让人很烦恼 xff0c 在网上寻找多种方法后还是无法解决 xff0c 因此在经过团队成员的不断尝试 xff0c 最终将解决办法总结如下 xff1a 在设置完ip DNS和网关后 xff0
  • 数据结构之顺序表

    目录 前言 一 顺序表的结构 二 顺序表各接口函数及实现 1 顺序表的初始化 2 顺序表的打印 3 顺序表的插入函数 顺序表头部插入函数 顺序表尾部插入函数 任意位置插入函数 4 顺序表的删除函数 头部删除函数 尾部删除函数 任意位置删除
  • WSL2配置代理 记录下遇到的所有坑

    第一步 开放windows对wsl2的防火墙 大家都知道wsl2和wsl1不一样 wsl2基本上就是一个虚拟机 虚拟了一个linux的系统 主机之间是有防火墙的 现在我们要关闭它 打开powershell7以管理员身份运行 PS C spa
  • 三、共阳数码管的静态显示

    目录 1 数码管的电路分析 2 代码 8个数码管分别单独依次显示0 9的值 xff0c 然后所有数码管一起同时显示0 F的值 xff0c 如此往复 1 数码管的电路分析 共阳数码管 xff1a xff08 接低 61 亮 xff09 0 1
  • 十四、基础技能综合实训案例解析

    目录 自己实现有问题的部分 xff1a 跑马管 xff08 左到右依次点亮数码管的所有段码 xff08 怎么实现数码管全亮 xff1f xff09 xff0c 再依次从左 到右熄灭 xff09 独立按键 xff1a 按下按键 xff0c 灯
  • lua os.time与os.date的简单用法

    local start 61 os time year 61 2016 month 61 2 day 61 1 hour 61 20 min 61 0 sec 61 0 local finish 61 os time year 61 201
  • python opencv 调用摄像头失败问题的解决 Windows

    省流 xff1a 内含 Python Opencv 双目相机拍照代码 xff08 手动 or 自动 xff09 xff0c 可自取 xff1b 如果你的 cv2 VideoCapture 函数卡住但不报错 xff0c 打开 Windows
  • 使用PCtoLCD2002字模提取软件

    一 PCtoLCD2002基本介绍 PCtoLCD2002是专业的取字模软件 xff0c 采用C语言和汇编语言两种格式 xff0c 支持逐行 逐列 行列 列行四种取模方式 xff0c 还可以选择字体 大小 文字的长宽 xff0c 自动生成你
  • Java——打印出所有的水仙花数(两种方法实现)

    目录 概念介绍 代码实现 结果展示 概念介绍 34 水仙花数 34 是指一个三位数 xff0c 其各位数字立方和等于该数本身 例如 xff1a 153是一个 34 水仙花数 34 xff0c 因为153 61 1的三次方 xff0b 5的三
  • 虚拟机mac已连接以太网但是依旧没网络解决方法

    提供以下解决方案 1 关闭虚拟机 xff0c 在虚拟机网络适配器中更改 xff0c 每台电脑体质不一样 xff0c 桥接不行就net xff0c 再不行就选择主机 xff0c 不能一棵树吊死 xff0c 往往都是这个问题 xff0c 百度找
  • Debian 10服务器安全优化脚本

    vim anquanjiaoben sh bin bash echo 34 服务器安全脚本 34 echo 34 系统更新 34 sudo apt get update y sudo apt get upgrade y echo 34 ip
  • VS2017报错 class “Cxxxx“没有成员“GetContextMenuManager“ “GetContextMenuManager“:不是“Cxxxx“的成员

    项目场景 xff1a 系统 xff1a WIN 10 软件 xff1a VS 2017 问题描述 看B站MFC教学视频 xff0c 一直看到一个完整项目的搭建 xff0c 按照视频步骤来发现会报一个错误 xff1a class Cxxxx
  • 用户回调期间遇到未经处理的异常

    项目场景 xff1a 系统 xff1a WIN10 软件 xff1a VS 2017 问题描述 按照视频教学 xff0c 编译通过但是调试失败 提示错误为 xff1a 0x0FD7FD71 mfc140u dll SaleSystem ex
  • 无法打开源文件stdafx.h

    在VS 2019中使用Strcpy函数会报错 xff0c 大意是说该函数不安全 xff0c 建议使用 34 strcpy s 34 函数 百度发现 strcpy s 34 函数需要include stdafx h 然后编译器就说无法打开源文
  • 轮盘赌选择法

    遗传学基本术语 基因型 genotype xff1a 性状染色体的内部表现 xff1b 表现型 phenotype xff1a 染色体决定性状的外部表现 xff0c 或者说 xff0c 根据基因型形成的个体 xff1b 进化 evoluti
  • MFC使用roid设置全选与反选

    span class token comment 全选 span span class token keyword void span AllResultsListThcDlg span class token operator span
  • 使用wmic获取运行中进程的路径

    我们常常需要知道运行的进程在哪个目录下 使用wmic非常方便 xff0c 能够知道进程的详细信息 例如 xff1a 任务管理器中显示的进程名为c exe 查找路径方法是 xff1a 打开cmd exe 输入wmic 然后输入process
  • GWL_WNDPROC 、GWL_USERDATA、GWL_HINSTANCE未定义

    提示GWL HINSTANCE未定义则添加以下宏定义 xff1a span class token comment Window field offsets for GetWindowLong span span class token m
  • C语言:数组排序

    定义一个数组 xff0c for循环排列 include lt stdio h gt int main int argc char const argv int a printf 请输入数组长度 xff1a scanf 34 d 34 am
  • Android_广播机制实战演练(数鸭子)

    Android 广播机制实战演练 数鸭子 所需文件 MainActivity span class token keyword package span span class token namespace com span class t