Android移动应用开发——实验七——小鸭子报数(广播)

这篇具有很好参考价值的文章主要介绍了Android移动应用开发——实验七——小鸭子报数(广播)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

    掌握布局与控件的使用方法
    掌握有序广播机制,根据广播接收者的优先级顺序接收广播
    掌握广播拦截机制

通过合理布局来搭建界面,界面效果如下图所示。采用有序广播方式,将下方小鸭子优先级分别设置1000、800、600。
1、当点击大喇叭后弹出“有序报数”,下方小鸭子从左到右依次报数“1”、“2”、“3”;
2、将第二个小鸭子优先级设置为1000,注册位置调整到左边第一个小鸭子前边,当点击大喇叭后弹出“有序报数”,下方中间小鸭子首先报数“1”,之后左边小鸭子报数“2”,最后右边小鸭子报数“3”;
3、设计拦截机制,当点击大喇叭后弹出“有序报数”,下方中间小鸭子首先报数“1”,之后其余小鸭子不再报数。
鼓励使用有序广播机制和广播拦截机制,自主设计类似功能的实验案例。

Android移动应用开发——实验七——小鸭子报数(广播)

Android移动应用开发——实验七——小鸭子报数(广播)

Android移动应用开发——实验七——小鸭子报数(广播)

Android移动应用开发——实验七——小鸭子报数(广播)

activity_main.xml 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/count_ducks_bg"
    android:orientation="vertical">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="30dp"
        android:layout_marginTop="60dp">

        <ImageButton
            android:id="@+id/horn"
            android:layout_width="180dp"
            android:layout_height="150dp"
            android:layout_centerHorizontal="true"
            android:background="@drawable/horn" />

        <TextView
            android:id="@+id/content_left"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toLeftOf="@+id/horn"
            android:background="@drawable/content_left_bg"
            android:gravity="center"
            android:text="有序报数"
            android:textColor="@color/white"
            android:visibility="gone" />
    </RelativeLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="150dp"
        android:orientation="horizontal">

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="40dp"
            android:layout_marginRight="20dp"
            android:orientation="vertical">
            <TextView
                style="@style/tittle_style"
                android:id="@+id/duck_1"
                />

            <ImageView
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:background="@drawable/duck" />
        </LinearLayout>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="20dp"
            android:orientation="vertical">

            <TextView
                style="@style/tittle_style"
                android:id="@+id/duck_2"
                />
            <ImageView
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:background="@drawable/duck" />
        </LinearLayout>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="20dp"
            android:orientation="vertical">

            <TextView
                style="@style/tittle_style"
                android:id="@+id/duck_3"
                />
            <ImageView
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:background="@drawable/duck" />
        </LinearLayout>
    </LinearLayout>

</LinearLayout>

Android移动应用开发——实验七——小鸭子报数(广播)

style.xml 

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="tittle_style">
        <item name="android:background">@drawable/tittle</item>
        <item name="android:layout_width">20dp</item>
        <item name="android:layout_height">20dp</item>
        <item name="android:visibility">gone</item>
        <item name="android:gravity">center</item>
        <item name="android:layout_marginLeft">15dp</item>
        <item name="android:textColor">@color/white</item>
    </style>
</resources>

这是设置鸭子报数的TextView的格式。

tittle.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<!--    设置渐变颜色-->
    <gradient
        android:endColor="#fe451d"
        android:startColor="#fe957f"
        android:type="linear"/>
<!--    设置圆角-->
    <corners android:radius="180dp"/>
</shape>

这是style调用的背景格式。文章来源地址https://www.toymoban.com/news/detail-485915.html

MainActivity.java

package com.example.shiyan7;

import androidx.appcompat.app.AppCompatActivity;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    TextView duck1, duck2, duck3;
    ImageButton horn;
    TextView content_left;
    MyBroadCastReceiver1 myBroadCastReceiver1;
    MyBroadCastReceiver2 myBroadCastReceiver2;
    MyBroadCastReceiver3 myBroadCastReceiver3;
    private int num = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
        register_Receiver();
    }

    private void init() {
        duck1 = findViewById(R.id.duck_1);
        duck2 = findViewById(R.id.duck_2);
        duck3 = findViewById(R.id.duck_3);
        horn = findViewById(R.id.horn);
        content_left = findViewById(R.id.content_left);
        horn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                content_left.setVisibility(View.VISIBLE);
                horn.setClickable(false);
                Intent intent = new Intent();
                intent.setAction("Count_Duck");
                sendOrderedBroadcast(intent,null);
            }
        });
    }

    private void register_Receiver() {
        IntentFilter intentFilter1=new IntentFilter();
        intentFilter1.addAction("Count_Duck");
        intentFilter1.setPriority(1000);
//        intentFilter1.setPriority(800);
        myBroadCastReceiver1=new MyBroadCastReceiver1();
        registerReceiver(myBroadCastReceiver1,intentFilter1);
        IntentFilter intentFilter2=new IntentFilter();
        intentFilter2.addAction("Count_Duck");
        intentFilter2.setPriority(800);
//        intentFilter2.setPriority(1000);
        myBroadCastReceiver2=new MyBroadCastReceiver2();
        registerReceiver(myBroadCastReceiver2,intentFilter2);
        IntentFilter intentFilter3=new IntentFilter();
        intentFilter3.addAction("Count_Duck");
        intentFilter3.setPriority(600);
        myBroadCastReceiver3=new MyBroadCastReceiver3();
        registerReceiver(myBroadCastReceiver3,intentFilter3);


    }

    class MyBroadCastReceiver1 extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            num=num+1;
            duck1.setVisibility(View.VISIBLE);
            duck1.setText(num+"");
            Log.i("duck1","我收到了广播。");
            stop();
        }
    }

    class MyBroadCastReceiver2 extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            num=num+1;
            duck2.setVisibility(View.VISIBLE);
            duck2.setText(num+"");
            Log.i("duck2","我收到了广播。");
//            abortBroadcast();
//            Log.i("duck2","我拦截了广播。");
            stop();
        }
    }

    class MyBroadCastReceiver3 extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            num=num+1;
            duck3.setVisibility(View.VISIBLE);
            duck3.setText(String.valueOf(num));
            Log.i("duck3","我收到了广播。");
            stop();
        }
    }

    private void stop() {
        try {
            Thread.sleep(500);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(myBroadCastReceiver1);
        unregisterReceiver(myBroadCastReceiver2);
        unregisterReceiver(myBroadCastReceiver3);
    }
}

到了这里,关于Android移动应用开发——实验七——小鸭子报数(广播)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 移动应用开发环境搭建Android Studio

    记得提前开启电脑虚拟化支持,具体方法可自行百度 查看是否启用虚拟化 JDK安装与卸载 由于Andriod开发使用的语言是javaKotlin,这里使用的是java语言所以需要先安装java的开发环境 所有开发 Android 应用程序需要的工具都是开源的,并且可以从互联网上下载 Android Studio 是谷歌推

    2023年04月08日
    浏览(60)
  • 如何开发移动应用:iOS和Android的比较

    移动应用开发领域一直以来都备受关注,而iOS和Android作为两大主要的移动操作系统,各自拥有强大的生态系统和开发工具。在本文中,我们将比较iOS和Android移动应用开发的关键方面,以帮助开发者选择合适的平台,或者了解在不同平台上开发应用时需要考虑的因素。 iOS iO

    2024年02月07日
    浏览(42)
  • 移动应用开发之路 05 Android Studio 简单登录界面制作

    学校开了一门移动应用开发课程,我一开始兴趣盎然,但是看到使用的环境是 Java 8 的时候心就凉了一半,在询问老师的意见之后决定使用现在比较常用的Android Studio完成学习,特此记录自学之路。 这篇是一个总结性质的文章,主要为了熟练运用之前讲过的几个UI控件。小项目

    2024年02月08日
    浏览(52)
  • 移动开发最佳实践:为 Android 和 iOS 构建成功应用的策略

    您可以将本文作为指南,确保您的应用程序符合可行的最重要标准。请注意,这份清单远非详尽无遗;您可以加以利用,并添加一些自己的见解。 要制作一个成功的应用程序,你需要了解你是为谁制作的。从创建用户角色开始–基于人口统计、行为模式、动机和目标,对理想

    2024年02月13日
    浏览(36)
  • Flutter与Android开发:构建跨平台移动应用的新选择

    本文内容提纲如下: 介绍Flutter技术:Flutter是一种由Google推出的开源UI工具包,用于构建高性能、跨平台的移动应用。文章将介绍Flutter的基本概念、特点和优势,包括其快速的开发速度、一致的用户界面和丰富的UI组件库等。 Flutter与Android开发的对比:文章将对比Flutter与传统

    2023年04月21日
    浏览(55)
  • 移动应用开发 试题 复习

    1、Android 开发中常用的数据库是( ) A、 SQLite B、 Oracle C、 MySql D、 SQL Server A.SQLite 2、从其他应用中读取共享的数据库数据时,需要用到的是 query 方法,返回的是 Curser 数 据,那么这个方法是哪个对象的方法。( ) A、 SQLiteDatabase B、 SQLiteOpenHelper C、 ContentProvider D、 Content

    2024年02月13日
    浏览(30)
  • 第一篇【传奇开心果系列】beeware开发移动应用:轮盘抽奖移动应用

    一、项目目标 使用beeware的toga写传奇开心果轮盘抽奖安卓手机应用和苹果手机应用 二、开发传奇开心果轮盘抽奖安卓应用编程思路 要使用Beeware的Toga库来编写一个传奇开心果轮盘抽奖安卓应用,你需要按照以下步骤进行操作: 安装Beeware:首先,你需要安装Beeware的开发工具包

    2024年01月20日
    浏览(46)
  • 移动应用开发期末复习(自用复习勿转)

    主要考察实验中的通知:notification,service。数据库的增删改查操作结合界面的一些操作。 Android是一种基于Linux的软件平台和操作系统,采用了软件堆层(Software Stack)的架构,由下往上分别是Linux内核层、硬件抽象层、系统运行时库层(又称为中间件层)、应用程序框架层和系

    2024年02月05日
    浏览(35)
  • 移动应用开发介绍及iOS方向学习路线(HUT移动组版)

    ​ 作为一个HUT移动组待了一坤年(两年半)多的老人,在这里为还在考虑进哪个组的萌新们以及将来进组的新朋友提供一份关于移动应用开发介绍以及学习路线的白话文,因为我是iOS方向的,所以学习路线就只介绍iOS了,希望这篇文章对你了解移动应用开发有帮助。 ​ 从字

    2024年02月04日
    浏览(34)
  • Flutter:跨平台移动应用开发的未来

    Flutter的背景和概述 Flutter是由Google开发的一个开源UI工具包,用于构建漂亮、快速且高度可定制的移动应用程序。它于2017年首次发布,并迅速引起了开发者们的关注。Flutter采用了一种全新的方法来构建用户界面,通过使用自绘UI技术,可以实现高性能的跨平台应用开发。 Fl

    2024年01月22日
    浏览(79)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包