通过注册广播来监测网络的变化,包含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? = null
private var netChangeReceiver: NetChangeReceiver? = null
private var mtvNet: TextView? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
mtvNet = findViewById<View>(R.id.txt) as TextView
intentFilter = 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 ConnectivityManager
val 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: String
get() {
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">
<TextView
android: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" />
<ProgressBar
android: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.GifImageView
android: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.GifImageView
android: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.GifImageView
android: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.GifImageView
android: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" />
下面附上图