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;@Overrideprotected 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() {@Overridepublic 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 {@Overridepublic 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 {@Overridepublic 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 {@Overridepublic 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();}}@Overrideprotected 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"><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="40dp"android:layout_marginLeft="80dp"><ImageViewandroid:id="@+id/iv_horn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:src="@drawable/horn" /><TextViewandroid: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><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_centerVertical="true"android:gravity="center_horizontal"><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="vertical"><TextViewandroid:id="@+id/tv_one"style="@style/badge_style"/><ImageViewandroid:layout_width="120dp"android:layout_height="120dp"android:src="@drawable/duck" /></LinearLayout><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="vertical"><TextViewandroid:id="@+id/tv_two"style="@style/badge_style" /><ImageView style="@style/duck_style" /></LinearLayout><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="vertical"><TextViewandroid:id="@+id/tv_three"style="@style/badge_style"/><ImageViewstyle="@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"><gradientandroid:endColor="#fe451d"android:startColor="#fe957f"android:type="linear" /><corners android:radius="180dp" />
</shape>

素材





运行结果

Android_广播机制实战演练(数鸭子)相关推荐

  1. Pytorch中的广播机制

    广播机制触发:当两个数组的shape不一样时候,1)程序会自动执行操作使得A.shape==B.shape, 2)对应位置进行相加 运算结果的shape是:A.shape和B.shape对应位置的最大 ...

  2. Numpy的广播机制详解(broadcasting)

    Numpy的广播机制详解(broadcasting) 广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行. 如果两个数 ...

  3. 【数据分析】reshape(-1,1)和numpy的广播机制

    在创建DataFrame的时候常常使用reshape来更改数据的列数和行数. reshape可以用于numpy库里的ndarray和array结构以及pandas库里面的DataFrame和Serie ...

  4. NumPy————NumPy广播机制的学习笔记

    1 致谢 感谢网友"FINTHON"的帮助, 原文链接如下: https://finthon.com/numpy-broadcast/ 2 前言 今天在学习K-means算法~ 想 ...

  5. 【Python学习记录】Numpy广播机制(broadcast)

    ✨ 博客主页:小小马车夫的主页 ✨ 所属专栏:Python学习记录 文章目录 一.什么是Numpy广播机制 二.Numpy广播应用 三.Numpy广播规则 一.什么是Numpy广播机制 在Numpy. ...

  6. 广播机制-BroadCastReceiver

    广播机制 1.广播机制概述 1.1生活中的广播机制 1.显示生活中的广播就比如说村里的大喇叭,车上的收音机接收的广播FM广播,学校里的校园广播都是常见的广播,安卓中的广播和生活中的广播是十分类似的. ...

  7. 数据分析 第二周 (条形图,散点图,直方图,numpy运算和数组广播机制)笔记

    文章目录 1.烟台市1月与6月日最高气温散点图(散点图) 2.内地票房前五名 上映次日票房比较(单次条形图) 3.内地票房前五名 上映前三日票房比较(多次条形图) 4. 250部经典影片时长统计 5. ...

  8. 【Python数据科学快速入门系列 | 04】Numpy四则运算、矩阵运算和广播机制的爱恨情仇

    这是机器未来的第43篇文章 原文首发地址:https://blog.csdn.net/RobotFutures/article/details/126493989 文章目录 1. 概述 2. 四则运算 ...

  9. Android 广播机制详解

    一.广播的简介 首先,当我们一听到广播这个词时.就可以想到小学是教室的广播.不错Android中的广播机制与我们生活中的广播是有异曲同工之妙的.Android中的发送广播也就像广播室播广播,可以让很多 ...

最新文章

  1. Mysql 导入导出csv 中文乱码问题的解决方法
  2. Jayway JsonPath实例
  3. USB Host Device And OTG
  4. “彪悍人生”罗永浩被法院限制消费,网友:期待王者归来
  5. Webpack 知识点总结
  6. opengl绘制的点不显示是什么原因_中考后为什么不允许复读?原因主要在以下5点,你都清楚吗?...
  7. Apache Ant使用过程的总结
  8. 拿来就能用!去哪儿网消息中间件 QMQ 详解 | 技术头条
  9. python import出错_python – ImportError:无法导入名称’app’
  10. pycharm的python解释器选择_pycharm中配置python解释器
  11. 项目开发文档编写规范【附文档模板】
  12. 雷士灯wifi控制方法_一种wifi无线控制的灯具系统的制作方法
  13. 大话西游2服务器维护公告,2017年02月23日停机维护公告
  14. mysql全量备份命令_mysql全量备份与增量备份
  15. 空气质量等级c语言编程,华中科技大学C语言课设空气质量检测信息管理系统技术分析.docx...
  16. 活动回顾 | Mini XMan线上快闪活动圆满结束!
  17. 浩哥的Linux学习笔记之cp命令
  18. 我们“看到”的物联网,未来真正走向领域是这些方面....
  19. 基于webassembly的前端视频编辑器(未写完)
  20. stm32项目平衡车详解(stm32F407)下

热门文章

  1. 重庆卫生副高考试成绩查询2021,2021年重庆卫生资格成绩查询时间及查分入口【6月4日起】...
  2. U盘格式化后数据能恢复吗?U盘格式化怎么恢复数据
  3. 《小王子》精彩章节——Chapter 21
  4. python爬虫手机验证码登录_python爬虫解决手机验证码问题
  5. tbc新服务器消息,TBC最新消息泄露:将分为4个阶段,详细内容分析
  6. 冯 . 诺依曼体系结构对计算机发展的限制
  7. CEF3:用CEF3实现最简单的浏览器
  8. 计算机教育中缺失的一课,劝学弟学妹们一句,一定要趁早补上,工作后会如有神助!
  9. Photoshop CS2 视频教程-PS色彩范围(转)
  10. 测试开发工具大全,看看有没有你使用的!