Android小插件 —— 天气插件
前言
最近项目中需要实现一个展示天气信息的功能,就去搜索相关的天气API接口,拿到接口后本地进行解析展示即可。在搜索的过程中,发现了一个很好用的天气插件,无需自己请求天气API以及布局天气信息UI,真是省时、省力,更重要的是,还是免费的!免费的!免费的!(开心o( ̄▽ ̄)ブ)那么接下来我们就开始认识一下这个插件吧!
一、介绍
和风天气开发平台 https://dev.qweather.com/
这个平台提供了移动端的天气数据SDK、Web端的天气数据Web
API以及免费的天气插件,可以在任意网站、APP中使用,几乎不需要开发。我们今天就来试试Android上天气插件的使用。
二、准备工作
1、生成密钥key和下载jar包。
2、工程配置
(1)将jar包添加到项目的libs目录下,右击jar包选择Add as library。
(2)项目的AndroidManifeist.xml文件中添加权限
注意:如果添加了位置相关的权限,Android6.0以上仍然需要动态申请该位置权限。
<!--允许网络连接,必选--><uses-permission android:name="android.permission.INTERNET"/><!--访问设备状态,必选--><uses-permission android:name="android.permission.READ_PHONE_STATE"/><!--访问网络定位(可选),如果使用系统定位,该权限为必选--><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/><!--访问GPS定位(可选),如果使用系统定位,该权限为必选--><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/><!--悬浮窗权限(可选),如果使用悬浮窗功能,该权限为必选--><uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/><!--访问WiFi状态,可选--><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
(3)项目级别的build.gradle文件中,引用相关库。
//引用库implementation 'com.squareup.okhttp3:okhttp:3.9.0'implementation 'com.google.code.gson:gson:2.6.2'
(4)如果要开启混淆,则还需要在混淆文件proguard-rules.pro中添加以下规则
#排除OKHTTP
-dontwarn com.squareup.**
-dontwarn okio.**
-keep public class org.codehaus.* { *; }
-keep public class java.nio.* { *; }#排除sdk
-keep public class com.qweather.plugin.bean.** { *; }
-keep public class com.qweather.plugin.view.** { *; }
说明:我在创建工程的时候,使用的是Android Studio4.2.1版本,工程创建成功后,gradle.properties中只有如图中的两行,这导致我在调用插件代码的运行APP时候,会报找不到如下图“Caused by: java.lang.ClassNotFoundException: Didn’t find class “android.support.v4.app.ActivityCompat” on path:…”的错误。
后面一顿操作,发现需要在gradle.properties文件中添加下面一句话就不会报错了,看这个注释的意思大概就是“自动将第三方库转换以使用AndroidX”,至此终于可以安心使用插件了。
三、SDK使用
1、初始化
/** 初始化* @param key 用户的KEY (密钥key)* @param location 城市信息,若不传或为空则调用Android源生定位** 上述location属性,如不传递location,则采用android原生定位,* 需开启android.permission.ACCESSCOARSELOCATION 和* android.permission.ACCESSFINELOCATION权限*/QWeatherConfig.init("key","location");QWeatherConfig.init("key");
2、布局及显示
天气插件布局一共有4种,分别为横向布局、左1右2横向布局、右1左2横向布局,以及纵向布局。
(1)横向布局
<com.qweather.plugin.view.HorizonViewandroid:id="@+id/horizon_view"android:layout_width="match_parent"android:layout_height="60dp" />
QWeatherConfig.init("密钥key");HorizonView horizonView = findViewById(R.id.horizon_View);//设置控件显示默认的背景图片llView.setDefaultBack(true);//添加地址文字描述,第一个参数为文字大小,单位:sp ,第二个参数为文字颜色,默认白色horizonView.addLocation(14, Color.WHITE);//添加预警图标,参数为图标大小,单位:dphorizonView.addAlarmIcon(14);//添加预警文字horizonView.addAlarmTxt(14);//添加温度描述horizonView.addTemp(14, Color.WHITE);//添加天气图标horizonView.addWeatherIcon(14);//添加天气描述horizonView.addCond(14, Color.WHITE);//添加风向图标horizonView.addWindIcon(14);//添加风力描述horizonView.addWind(14, Color.WHITE);//添加文字:AQIhorizonView.addAqiText(14, Color.WHITE);//添加空气质量描述horizonView.addAqiQlty(14);//添加空气质量数值描述horizonView.addAqiNum(14);//添加降雨图标horizonView.addRainIcon(14);//添加降雨描述horizonView.addRainDetail(14, Color.WHITE);//设置控件的对齐方式,默认居中horizonView.setViewGravity(HeContent.GRAVITY_CENTER);//设置控件的内边距,默认为0horizonView.setViewPadding(10, 10, 10, 10);//显示控件horizonView.show();
(2)左1右2横向布局
<com.qweather.plugin.view.LeftLargeViewandroid:id="@+id/ll_view"android:layout_width="match_parent"android:layout_height="60dp"/>
QWeatherConfig.init("密钥key");LeftLargeView llView = findViewById(R.id.ll_view);//获取左侧大布局LinearLayout leftLayout = llView.getLeftLayout();//获取右上布局LinearLayout rightTopLayout = llView.getRightTopLayout();//获取右下布局LinearLayout rightBottomLayout = llView.getRightBottomLayout();//设置控件显示默认的背景图片llView.setDefaultBack(true);//添加温度描述到左侧大布局//第一个参数为需要加入的布局//第二个参数为文字大小,单位:sp//第三个参数为文字颜色,默认白色llView.addTemp(leftLayout, 40, Color.WHITE);//添加温度图标到右上布局,第二个参数为图标宽高(宽高1:1,单位:dp)llView.addWeatherIcon(rightTopLayout, 14);//添加天气描述到右上布局llView.addCond(rightTopLayout, 14, Color.WHITE);//添加预警图标到右上布局llView.addAlarmIcon(rightTopLayout, 14);//添加预警描述到右上布局llView.addAlarmTxt(rightTopLayout, 14);//添加文字AQI到右上布局llView.addAqiText(rightTopLayout, 14);//添加空气质量到右上布局llView.addAqiQlty(rightTopLayout, 14);//添加空气质量数值到右上布局llView.addAqiNum(rightTopLayout, 14);//添加地址信息到右上布局llView.addLocation(rightTopLayout, 14, Color.WHITE);//添加风向图标到右下布局llView.addWindIcon(rightBottomLayout, 14);//添加风力描述到右下布局llView.addWind(rightBottomLayout, 14, Color.WHITE);//添加降雨图标到右下布局llView.addRainIcon(rightBottomLayout, 14);//添加降雨描述到右下布局llView.addRainDetail(rightBottomLayout, 14, Color.WHITE);//设置控件的对齐方式,默认居中llView.setViewGravity(HeContent.GRAVITY_LEFT);//显示布局llView.show();
(3)右1左2横向布局
<com.qweather.plugin.view.RightLargeViewandroid:id="@+id/rl_view"android:layout_width="match_parent"android:layout_height="60dp"/>
QWeatherConfig.init("密钥key");RightLargeView rlView = findViewById(R.id.rl_view);//获取右侧大布局LinearLayout rightLayout = rlView.getRightLayout();//获取左上布局LinearLayout leftTopLayout = rlView.getLeftTopLayout();//获取左下布局LinearLayout leftBottomLayout = rlView.getLeftBottomLayout();//取消默认背景rlView.setDefaultBack(false);//设置布局的背景圆角角度,颜色,边框宽度边框颜色rlView.setStroke(0, Color.GRAY, 1, Color.WHITE);//添加地址文字描述到左上布局// 第一个参数为需要加入的布局,// 第二个参数文字大小,单位:sp ,// 第三个参数为文字颜色,默认白色rlView.addLocation(leftTopLayout, 14, Color.WHITE);//添加文字:AQIrlView.addAqiText(leftTopLayout, 14);//添加空气质量描述rlView.addAqiQlty(leftTopLayout, 14);//添加空气质量数值描述rlView.addAqiNum(leftTopLayout, 14);//添加预警图标,参数为图标大小,单位:dprlView.addAlarmIcon(leftTopLayout, 14);//添加预警文字rlView.addAlarmTxt(leftTopLayout, 14);//添加天气图标rlView.addWeatherIcon(leftTopLayout, 14);//添加到左下布局//添加降雨图标rlView.addRainIcon(leftBottomLayout, 14);//添加降雨描述rlView.addRainDetail(leftBottomLayout, 14, Color.WHITE);//添加风向图标rlView.addWindIcon(leftBottomLayout, 14);//添加风力描述rlView.addWind(leftBottomLayout, 14, Color.WHITE);//添加天气描述rlView.addCond(leftBottomLayout, 14, Color.WHITE);//添加温度描述rlView.addTemp(rightLayout, 40, Color.WHITE);//设置控件的对齐方式,默认居中rlView.setViewGravity(HeContent.GRAVITY_RIGHT);rlView.show();
(4)纵向布局
<com.qweather.plugin.view.VerticalViewandroid:id="@+id/vertical_view"android:layout_width="75dp"android:layout_height="match_parent"/>``````cQWeatherConfig.init("密钥key");VerticalView verticalView = findViewById(R.id.vertical_view);//默认布局背景verticalView.setDefaultBack(true);verticalView.addLocation(14, Color.WHITE);verticalView.addTemp(14, Color.WHITE);verticalView.addWeatherIcon(14);verticalView.addCond(14, Color.WHITE);verticalView.addWindIcon(14);verticalView.addWind(14, Color.WHITE);verticalView.addAqiText(14, Color.WHITE);verticalView.addAqiQlty(14);verticalView.addAqiNum(14);verticalView.addAlarmIcon(14);verticalView.addAlarmTxt(14);verticalView.addRainIcon(14);verticalView.addRainDetail(14, Color.WHITE);verticalView.show();
3、高级设置
(1)设置背景颜色
控件默认背景是根据天气变化展示不同的背景图片
上面“右1左2横向布局”就是自定义的背景,如下面部分代码
//取消默认背景rlView.setDefaultBack(false);//设置布局的背景圆角角度,颜色,边框宽度边框颜色rlView.setStroke(0, Color.GRAY, 1, Color.WHITE);
(2)链接到H5
如需点击控件跳转到天气详情H5界面需要在AndroidManifest.xml配置如下代码:
<activity
android:name="com.qweather.plugin.view.SdkWebViewActivity" />
这里有个问题需要注意下,如果不想链接到H5界面,因为控件内部已经绑定了点击事件,此时如果不小心点击到控件,程序就会闪退。
(3)使用天气悬浮控件
QWeatherConfig.init("密钥key");//初始化悬浮控件SuspendView suspendView = new SuspendView(this);//显示悬浮控件suspendView.show();
(4)替换天气图标
1、在文件目录app/src/main下创建资源文件夹assets
2、在app/src/main/assets文件夹放入文件名对应天气代码的图标,文件名:白天是天气代码+d,晚上是天气代码+n后缀为.png,例如:100d.png,100n.png,请参考天气图标
3、在初始化的时候调用下列方法
//替换天气图标为本地图标QWeatherConfig.changeWeatherIcon();
Android小插件 —— 天气插件相关推荐
- android 系统天气插件,天气插件平台-天气预报插件-免费天气预报代码—中国天气网...
适配版本 Android 4.0及以上 1.工程配置 将Plugin_SDK_Android_v2.0.jar导入到工程中,并且引用 配置Android Manifest权限 权限列表 权限说明 代码 ...
- android 显示天气插件下载,Android天气插件
Android天气插件 天气插件Android SDK,包括实况天气.空气质量.灾害预警.生活指数等天气内容,支持在Android应用任意位置加入天气内容,并可生成天气频道页面. 下载 # 适配版本 ...
- android 小插件下载地址,万能小组件小部件
万能小组件小部件,优质的手机桌面美化工具,您可以自由编辑组件内容,例如时钟.日历.相册.背景.天气等等,还可以快速设置锁屏壁纸,打造专属于自己的个性桌面,简单又好用!非常炫酷哦! 万能小组件小部件介绍 ...
- 心知天气Android开发,H5 实现天气效果(心知天气插件)
H5 实现天气效果(心知天气插件) H5 实现天气效果(心知天气插件) 先上效果图 鼠标移上去的效果展示 核心代码如下: (function(a,h,g,f,e,d,c,b){b=function() ...
- 如何在 Linux 中使用类似智能手机外观的 Conky 天气插件
如何在 Linux 中使用类似智能手机外观的 Conky 天气插件 智能手机都拥有一些平滑地融入手机外观的天气小插件,现在幸亏有了 Flair Weather Conky,你便可以在你的 Linux ...
- XM7 FOR ANDROID,如何使用Android Studio开发Gradle插件
缘由 首先说明一下为什么会有这篇文章.前段时间,插件化以及热修复的技术很热,Nuwa热修复的工具NuwaGradle,携程动态加载技术DynamicAPK,还有希望做最轻巧的插件化框架的Small.这 ...
- Android studio 常用的插件
Android studio 常用的插件 Exynap Effortless Android Development [官网地址]( http://exynap.com/) ![Effortless ...
- Halo博客网站添加天气插件
一.前言 小编最近使用Halo搭建了一个个人博客网站,样子很是精美,直接下载主题即用,用过Halo的都说好.最近看别的博主网站下面有天气预报,今天小编百度了一会,觉得2345天气插件比较符合小编的审美 ...
- android切环境插件,Android Studio 2.0 - 插件太旧,请更新到更新版本,或设置ANDROID_DAILY_OVERRIDE环境变量...
Android Studio 2.0 - 插件太旧,请更新到更新版本,或设置ANDROID_DAILY_OVERRIDE环境变量 我更新了Android Studio 2.0版并正常使用. 当我今天创 ...
- Android热修复及插件化原理
1.前言 热修复一直是这几年来很热门的话题,主流方案大致有两种,一种是微信Tinker的dex文件替换,另一种是阿里的Native层的方法替换.这里重点介绍Tinker的大致原理. 2.类加载机制 介 ...
最新文章
- Ubuntu 13.04 安装 OpenCV 及试用
- python怎么样才算入门编程-新手如何入门Python编程
- 算法与面试之-如何准备算法面试
- Java多线程--使用future进行异步编程
- angular_ui-router ——依赖注入
- 06- 本地方法接口
- JAVA多线程(一)线程安全问题产生的原因
- 复制书稿(信息学奥赛一本通-T1278)
- 【mysql系列】细谈explain执行计划之“谜”
- PHP判断用户是否登录
- php中绘制图像的手册,推荐功能超级强大的PHP画图库JpGraph
- 前端工程精粹(二):静态资源管理与模板框架
- TCP/UDP调试工具
- 计算机磁盘管理只有C盘怎么办,新电脑只有C盘怎么办?手把手教你给硬盘分区!...
- 【Python】实现B站MP4格式音频与视频合并,ffmpeg一个命令即可
- html怎么插入 ppt课件,PPT课件怎么插入声音?
- Nahimic应用程序初始化失败
- ValueError: tile cannot extend outside image
- IDA反汇编/反编译静态分析iOS模拟器程序(六)交叉引用
- 那些黑科技感爆棚的可视化大屏,是怎么做出来的?模板直接套用
热门文章
- C# 控制台应用程序
- 一次让你搞懂Android应用签名
- 极通Aipcconn已停止工作问题处理方法
- 废粉盒在哪里_复印机提示“废粉盒满”“请及时更换废粉盒”
- 手机上计算机开n次方,手机计算器还能这样用,99%的人都不知道
- MATLAB热障涂层成像,微波检测热障涂层孔隙率的可行性研究
- 【代码质量】C/C++代码静态分析与常用分析软件工具
- python123平台第三周作业答案_python123第一周作业
- 华硕笔记本禁用触控板方法
- 支持超过4000字节的varchar2类型