android信号强弱动画,Android自定义View展示Wifi信号强弱指示方法示例
前言
最近因为工作的需要,要自定义展示Wifi信号强弱的需要,就通过利用系统广播的方式实现了一个自定义View——WifiStateView,下面话不多说了,感兴趣的朋友们一起来看看详细的介绍吧。
实现的效果图如下所示:
用不同的图片来表示Wifi信号的强弱,可以自定义Wifi信号等级
图标简陋了点,根据需要来替换即可
/**
* 作者: 叶应是叶
* 时间: 2017/8/22 18:25
* 描述:
*/
public class WifiStateView extends AppCompatImageView {
private WifiManager wifiManager;
private WifiHandler wifiHandler;
//没有开启Wifi或开启了Wifi但没有连接
private static final int LEVEL_NONE = 0;
//Wifi信号等级(最弱)
private static final int LEVEL_1 = 1;
//Wifi信号等级
private static final int LEVEL_2 = 2;
//Wifi信号等级
private static final int LEVEL_3 = 3;
//Wifi信号等级(最强)
private static final int LEVEL_4 = 4;
private final String TAG = "WifiStateView";
private static class WifiHandler extends Handler {
//虚引用
private WeakReference stateViewWeakReference;
WifiHandler(WifiStateView wifiStateView) {
stateViewWeakReference = new WeakReference<>(wifiStateView);
}
@Override
public void handleMessage(Message msg) {
WifiStateView wifiStateView = stateViewWeakReference.get();
if (wifiStateView == null) {
return;
}
switch (msg.what) {
case LEVEL_1:
wifiStateView.setImageResource(R.drawable.wifi_1);
break;
case LEVEL_2:
wifiStateView.setImageResource(R.drawable.wifi_2);
break;
case LEVEL_3:
wifiStateView.setImageResource(R.drawable.wifi_3);
break;
case LEVEL_4:
wifiStateView.setImageResource(R.drawable.wifi_4);
break;
case LEVEL_NONE:
default:
wifiStateView.setImageResource(R.drawable.wifi_none);
break;
}
}
}
private BroadcastReceiver wifiStateReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.e(TAG, "action " + intent.getAction());
switch (intent.getAction()) {
case WifiManager.WIFI_STATE_CHANGED_ACTION:
if (wifiManager.getWifiState() == WifiManager.WIFI_STATE_DISABLING) {
wifiHandler.sendEmptyMessage(LEVEL_NONE);
}
break;
case WifiManager.RSSI_CHANGED_ACTION:
if (wifiManager.getWifiState() == WifiManager.WIFI_STATE_DISABLED) {
wifiHandler.sendEmptyMessage(LEVEL_NONE);
return;
}
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int level = WifiManager.calculateSignalLevel(wifiInfo.getRssi(), 5);
Log.e(TAG, "level:" + level);
wifiHandler.sendEmptyMessage(level);
break;
}
}
};
public WifiStateView(Context context) {
this(context, null);
}
public WifiStateView(Context context, @Nullable AttributeSet attrs) {
this(context, attrs, 0);
}
public WifiStateView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
wifiHandler = new WifiHandler(this);
}
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
IntentFilter intentFilter = new IntentFilter();
//Wifi连接状态变化
intentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
//Wifi信号强度变化
intentFilter.addAction(WifiManager.RSSI_CHANGED_ACTION);
getContext().registerReceiver(wifiStateReceiver, intentFilter);
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
wifiHandler.removeCallbacksAndMessages(null);
getContext().unregisterReceiver(wifiStateReceiver);
}
}
这里提供代码下载:
总结
以上就是这篇文章的全部内容了,希望本文的内容对各位Android开发者们的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
android信号强弱动画,Android自定义View展示Wifi信号强弱指示方法示例相关推荐
- Android 雪花飘落动画效果 自定义View
在码农的世界里,优美的应用体验,来源于程序员对细节的处理以及自我要求的境界,年轻人也是忙忙碌碌的码农中一员,每天.每周,都会留下一些脚印,就是这些创作的内容,有一种执着,就是不知为什么,如果你迷茫,不 ...
- android录音波浪动画_Android自定义View实现波浪动画
本文实例为大家分享了Android自定义View实现波浪动画的具体代码,供大家参考,具体内容如下 效果演示 代码调用与实现效果 xml中调用 android:layout_width="ma ...
- android录音波浪动画_Android 自定义 view 实现波浪动画进度条
最近在做项目时需要实现这样一种动画,类似于波浪形的进度动画,粗略的看了一下,发现好像类似于正余弦曲线实现的,但是Android 没有相关的API,所以需要我们动手画出来,所以现在在此记录一下学习过程, ...
- Android自定义view摇杆,Android自定义View实现游戏摇杆键盘的方法示例
前言 本文主要给大家介绍的是关于Android自定义View实现游戏摇杆键盘的相关内容,为什么会有这篇文章呢?因为在之前的一个项目,操作方向的方式为上下左右,左上需要同时按住左键和右键的方式进行操作. ...
- Android属性动画与自定义View——实现vivo x6更新系统的动画效果
晚上好,现在是凌晨两点半,然后我还在写代码.电脑里播放着<凌晨两点半>,晚上写代码,脑子更清醒,思路更清晰. 今天聊聊属性动画和自定义View搭配使用,前面都讲到自定义View和属性动画, ...
- Android 气泡动画(自定义View类)
Android 气泡动画(自定义View类) 一.前言 二.代码 1. 随机移动的气泡 2.热水气泡 一.前言 最近有需求制作一个水壶的气泡动画,首先在网上查找了一番,找到了一个文章. https:/ ...
- Android软件开发之盘点自定义View界面大合集(二)
Android软件开发之盘点自定义View界面大合集(二) - 雨松MOMO的程序世界 - 51CTO技术博客 雨松MOMO带大家盘点Android 中的自定义View界面的绘制 今天我用自己写的一个 ...
- Carson带你学Android:源码解析自定义View Draw过程
前言 自定义View是Android开发者必须了解的基础 网上有大量关于自定义View原理的文章,但存在一些问题:内容不全.思路不清晰.无源码分析.简单问题复杂化 等 今天,我将全面总结自定义View ...
- android+直播点赞,Android自定义View实现直播点赞特效的方法
Android自定义View实现直播点赞特效的方法 发布时间:2020-07-30 09:24:13 来源:亿速云 阅读:77 作者:小猪 这篇文章主要讲解了Android自定义View实现直播点赞特 ...
最新文章
- 构建企业级业务高可用的延时消息中台
- explode php 报错,PHP函数explode和split的区别
- python 释放变量所指向的内存_通俗易懂的Python垃圾回收机制及内存管理
- linux 网卡是块设备吗,什么是网络块设备(Network Block Device)?
- 万事开头难!Python 初学者最容易犯的几个错误
- python怎么设置颜色深浅变化_Python赋值、深浅copy
- 最常问的MySQL面试题集合
- 法国 计算机金融 大学,捷报|GPA3.0,计算机转申金融,斩获法国顶级商学院录取!...
- Loadrunner11录制过程中报错:由于另一个程序正在运行中,此操作无法完成
- php pdo 显示二进制,php – 在MySQL PDO中显示警告
- 美发布《2025年的数学科学》报告
- 11.PHP-FPM pool
- libpcap中主要函数使用介绍
- js生成xlsx/xls格式文件并下载到本地
- Friendster,linkedin,orkut,liring对SNS的求索
- wiresshark抓包
- diamond运算符
- 基于SpringBoot 适合学习的开源社区平台
- Springboot redis多数据源过期监听案例
- signaltap采集数据到matlab,一种matlab调用signaltap采集数据的方法
热门文章
- L1-043 阅览室
- Win2008 R2安装.NET Framework 4的windows6.1-KB958488-V6001-x6
- 基于MiniFly魔改的共轴双旋翼无人机
- 实变函数论学习笔记(二)集合的势
- [第五届蓝桥杯省赛C++A/B组]蚂蚁感冒
- 关于 txt 格式文件默认 浏览器打开乱码
- 只需一部手机,新手做自媒体不想出镜拍视频,推荐这4个领域
- 导入技能要素三大类_【师出教育】试讲七大技能剖析带你突破面试
- idea中使dll文件,jar包生效
- java 取整取余_Java取整、取余