通过注册广播来监测网络的变化,包含wifi和数据网络的监测,添加了gif图片和菊花进度条。本来想上传一个完整测试的gif,但是只能上传小于5M的,哭了。下面上效果图和代码。

效果图

MainActivity文件

package com.example.wifi
//mitac-bu-
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.net.ConnectivityManager
import android.os.Bundle
import android.view.View
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import java.text.SimpleDateFormat
import java.util.*class MainActivity : AppCompatActivity() {private var intentFilter: IntentFilter? = nullprivate var netChangeReceiver: NetChangeReceiver? = nullprivate var mtvNet: TextView? = nulloverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)mtvNet = findViewById<View>(R.id.txt) as TextViewintentFilter = IntentFilter()intentFilter!!.addAction("android.net.conn.CONNECTIVITY_CHANGE")netChangeReceiver = NetChangeReceiver()registerReceiver(netChangeReceiver, intentFilter)}override fun onDestroy() {super.onDestroy()unregisterReceiver(netChangeReceiver)}internal inner class NetChangeReceiver : BroadcastReceiver() {override fun onReceive(context: Context?, intent: Intent?) {val connectivityManager =getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManagerval networkInfo = connectivityManager.getActiveNetworkInfo()mtvNet!!.append(""" $stringDate""".trimIndent())if (networkInfo != null && networkInfo.isConnected()) {if (networkInfo.getType() == (ConnectivityManager.TYPE_WIFI)) {mtvNet!!.append("\n当前是wifi")} else if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {mtvNet!!.append("\n当前是移动数据")}} else {mtvNet!!.append("\n当前无网络")}mtvNet!!.append("\n----------------------------------------------------")}}companion object {val stringDate: Stringget() {val currentTime = Date()val formatter = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")return formatter.format(currentTime)}}}

activity_main文件

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><TextViewandroid:id="@+id/txt"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Mitac"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent" /><ProgressBarandroid:id="@+id/loading"android:layout_width="50dp"android:layout_height="50dp"android:layout_centerInParent="true"android:layout_gravity="center"android:indeterminateBehavior="repeat"android:indeterminateDrawable="@drawable/anim"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintHorizontal_bias="0.072"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.499" /><pl.droidsonroids.gif.GifImageViewandroid:layout_width="65dp"android:layout_height="65dp"android:src="@drawable/gif2"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintHorizontal_bias="0.0"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.0" /><pl.droidsonroids.gif.GifImageViewandroid:layout_width="65dp"android:layout_height="65dp"android:src="@drawable/gif2"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintHorizontal_bias="0.997"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.998" /><pl.droidsonroids.gif.GifImageViewandroid:layout_width="65dp"android:layout_height="65dp"android:src="@drawable/gif2"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintHorizontal_bias="0.0"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.998" /><pl.droidsonroids.gif.GifImageViewandroid:layout_width="65dp"android:layout_height="65dp"android:src="@drawable/gif2"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintHorizontal_bias="0.997"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.0" /></androidx.constraintlayout.widget.ConstraintLayout>

菊花布局在drawable下创建个anim.xml

<?xml version="1.0" encoding="utf-8"?>
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"android:drawable="@drawable/loading"android:fromDegrees="0.0"android:pivotX="50.0%"android:pivotY="50.0%"android:toDegrees="360.0" />

项目的build.gradle下添加

buildscript {repositories {mavenCentral()}
}
allprojects {repositories {mavenCentral()}
}

APP的build.gradle下添加

implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.1'

AndroidManiFest中添加网络权限

 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

下面附上图


【android studio】注册广播监测网络(附加gif和菊花进度条)相关推荐

  1. Android 自定义View,自定义属性--自定义圆形进度条(整理)

    很多的时候,系统自带的View满足不了我们的功能需求,那么我们就需要自定义View来满足我们的需求 自定义View时要先继承View,添加类的构造方法,重写父类View的一些方法,例如onDraw,为 ...

  2. Android studio 注册页面ui设计

    小朋友,你是否有很多问号?这样的页面是如何设计出来的? 用到的东西其实非常非常简单,有手就行. 工具:android studio 用到的方法:<textview,<imageview,& ...

  3. Android studio中广播的用法

    目录 1.动态方法: 2.静态注册广播 3.发送和接收自定义广播 4.跨程序接收广播 广播有两种,静态广播和动态广播. 1.动态方法: 重写广播接收器,用来接受广播,并根据接受到的广播进行操作.可以在 ...

  4. Android LocalBroadcastManager 注册广播和直接registerReceiver的区别

    通过代码注册广播有两种方法 通过使用LocalBroadcastManager.getInstance(MainPagerActivity.this).registerReceiver(mReceiv ...

  5. Android 自定义View实现环形带刻度颜色渐变的进度条

    上次写了一篇Android 自定义View实现环形带刻度的进度条,这篇文章就简单了,只是在原来的基础上加一个颜色渐变. 按照惯例,我们先来看看效果图 一.概述 1.相比于上篇文章,这里我们的颜色渐变主 ...

  6. [Android]webview直接加载网页允许JS,进度条,当前应用内跳转

    webview,用于在应用里面直接加载网页 本代码参考了: 官方的webview实例介绍:https://developer.android.com/guide/tutorials/views/hel ...

  7. Android小项目之--前台界面与用户交互的对接 进度条与拖动条(附源码)

    都知道水果公司(苹果)是己尊重用户体验著称的公司,其设计的产品人性化十足,不得不令后来者赞叹,竞相模仿.iphone的成功就是其典型的案例,做为其移动系统的死对头 Google 想要在市场上分得一杯羹 ...

  8. android显示服务器端文件夹,Android上传文件到服务端并显示进度条

    最近在做上传文件的服务,简单看了网上的教程.结合实践共享出代码. 由于网上的大多数没有服务端的代码,这可不行呀,没服务端怎么调试呢. Ok,先上代码. Android 上传比较简单,主要用到的是 Ht ...

  9. Android开发之自定义菊花进度条对话框

    先看下效果: 写个进度条调用类: package com.xiayiye.yhsh.flowerdialog;import android.app.Activity; import android.a ...

最新文章

  1. 2014 年编程语言排名,人人都爱 TypeScript
  2. Android --- 从相册中选择图片或者拍着选择图片遇到的问题
  3. 多态(继承父类的非静态重写方法)
  4. 来谈谈Spring构造函数注入的循环依赖问题
  5. WP7开发第一课:软件生命周期(其二)
  6. Eclipse alt+/语法不提示的解决方法
  7. python——画伪彩图、设置彩色图例
  8. 使用融云 SDK 避坑指南之 iOS13 推送失败
  9. 三顾茅庐:从刘备面试孔明得出的选股经验
  10. 漫画的力量,你可能一无所知
  11. 国内镜像源使用时出现WARNING: The repository located at mirrors.aliyun.com is not a trusted or secure host and
  12. 关于Unity打不开弹出“由于找不到MSVCP140.dll,无法继续执行代码,重新安装程序可能会解决此问题”解决方案
  13. 尚硅谷Java零基础极速入门七天版笔记
  14. 你是资讯控吗?——Web2.0智识管理简册
  15. c语言多个附加说明符,C语言教程第三章.ppt
  16. pca图解读_利用R绘制PCA分析图(2)
  17. 在windows下编译Botan
  18. erp系统实现内控管理的优势!
  19. 动手学习深度学习感悟
  20. 十分钟理解线性代数的本质_“线性代数的本质”整理笔记1

热门文章

  1. SSM《程序设计基础》课程答疑系统的设计与实现 毕业设计-附源码261620
  2. 微信小程序生成海报失败问题解决方法
  3. 秒懂设计模式之工厂方法模式(Factory Method Pattern)
  4. 嵌入式分享合集122
  5. C++STL之哈希表
  6. Ripro子主题Eeesucai-child集成后台美化包源码QIW
  7. 数字图像处理之matlab实验(五):形态学图像处理
  8. javaScript Popup.js
  9. 银行安全用电监管云平台
  10. 无线数传GPRS DTU名词详解(TCP/IP、AT指令、GPRS DTU、心跳包)