适配版本
Android 4.0及以上
1.工程配置
将Plugin_SDK_Android_v2.0.jar导入到工程中,并且引用
配置Android Manifest权限
权限列表
权限说明
代码
是否必选
允许网络连接
android.permission.INTERNET
必选
访问设备状态
android.permission.REAN_PHONE_STATE
可选
访问WiFi状态
android.permission.ACCESS_WIFI_STATE
可选
访问网络定位
android.permission.ACCESS_COARSE_LOCATION
可选(如果用到不传递城市参数的方法,此权限为必选,否则无法使用对应的方法 )
访问GPS定位
android.permission.ACCESS_FINE_LOCATION
可选(如果用到不传递城市参数的方法,此权限为必选,否则无法使用对应的方法 )
悬浮窗权限
android.permission.SYSTEM_ALERT_WINDOW
可选(如果用到悬浮的控件,此权限必选,否则无法显示悬浮窗)
引用库
> * implementation 'com.squareup.okhttp3:okhttp:3.9.0'(3.9.0+)
> * implementation 'com.google.code.gson:gson:2.6.2'(2.6.2+)
混淆
请在您的混淆文件中加入如下代码,请注意您引用的版本
####排除OKHTTP
-dontwarn com.squareup.**
-dontwarn okio.**
-keep public class org.codehaus.* { *; }
-keep public class java.nio.* { *; }
排除sdk
-keep public class .weather.cj.widget.bean.** { *; }
-keep public class .weather.cj.widget.view.** { *; }
2.调用说明
####(1)在application初始化的方法里或者activity的onCreate方法里初始化用户的key和location,例:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/**
* 初始化
*
* @param key 用户的ID
* @param location 地址详解,若不传或为空则调用Android源生定位
*/
WeatherConfig.init("key","location");
}
####(2)布局文件里使用非悬浮sdk控件
android:id="@+id/horizon_view"
android:layout_width="match_parent"
android:layout_height="60dp"/>
android:id="@+id/ll_view"
android:layout_width="match_parent"
android:layout_height="60dp"/>
android:id="@+id/rl_view"
android:layout_width="match_parent"
android:layout_height="60dp"/>
android:id="@+id/vertical_view"
android:layout_width="80dp"
android:layout_height="wrap_content" />
(3)显示控件
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WeatherConfig.init("key","location");
//横向布局
horizonView = findViewById(R.id.horizon_view);
//左侧大布局
llView = findViewById(R.id.ll_view);
//右侧大布局
rlView = findViewById(R.id.rl_view);
//竖向布局
verticalView = findViewById(R.id.vertical_view);
//设置取消默认背景
horizonView.setDefaultBack(false);
//设置文字颜色
horizonView.setViewTextColor(Color.BLACK);
//设置布局的背景圆角角度,颜色,边框宽度,边框颜色
llView.setStroke(5, Color.parseColor("#313a44"), 1, Color.BLACK);
//设置控件内边距
horizonView.setViewPadding(paddingL, paddingT, paddingR, paddingB);
rlView.setViewPadding(paddingL, paddingT, paddingR, paddingB);
llView.setViewPadding(paddingL, paddingT, paddingR, paddingB);
verticalView.setViewPadding(paddingL, paddingT, paddingR, paddingB);
//设置布局相对位置,默认居中 可选:Gravity.LEFT | Gravity.CENTER_VERTICAL | Gravity.RIGHT | Gravity.CENTER;
horizonView.setViewGravity(gravity);
//添加地址文字到布局
horizonView.addLocation(textSize, textColor);
//添加天气文字到布局
horizonView.addCond(textSize, textColor);
//添加天气图标到布局
horizonView.addWeatherIcon(size);
//添加温度文字到布局
horizonView.addTemp(textSize, textColor);
//添加风力文字到布局
horizonView.addWind(textSize, textColor);
//添加风向图标到布局
horizonView.addWindIcon(size);
//添加AQI文字到布局
horizonView.addAqiText(textSize, textColor);
//添加空气质量文字到布局
horizonView.addAqiQlty(textSize);
//添加空气质量数字到布局
horizonView.addAqiNum(textSize);
//添加预警图标到布局
horizonView.addAlarmIcon(size);
//添加预警文字到布局
horizonView.addAlarmTxt(textSize);
/**
* 左侧大布局和右侧大布局添加组件时,第一个参数需要传递想要把组件添加到的父布局,
* 例如把地址文字添加到左上布局: rlView.addLocation(leftTopLayout, textSize, textColor);
*/
//获取左侧大布局
LinearLayout leftLayout = llView.getLeftLayout();
//获取右上布局
LinearLayout rightTopLayout = llView.getRightTopLayout();
//获取右下布局
LinearLayout rightBottomLayout = llView.getRightBottomLayout();
//第一个参数为需要加入的布局
//第二个参数为文字大小,单位:sp
//第三个参数为文字颜色,默认白色
//添加温度描述到左侧大布局
llView.addTemp(leftLayout,40, Color.WHITE);
//添加温度图标到右上布局,第二个参数为图标宽高(宽高1:1,单位:dp)
llView.addWeatherIcon(rightTopLayout,14);
//添加预警图标到右上布局
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.addCond(rightBottomLayout,14, Color.WHITE);
//添加风向图标到右下布局
llView.addWindIcon(rightBottomLayout,14);
//添加风力描述到右下布局
llView.addWind(rightBottomLayout,14, Color.WHITE);
//设置控件的对齐方式,默认居中
llView.setViewGravity(HeContent.GRAVITY_LEFT);
//获取右侧大布局
LinearLayout rightLayout = rlView.getRightLayout();
//获取左上布局
LinearLayout leftTopLayout = rlView.getLeftTopLayout();
//获取左下布局
LinearLayout leftBottomLayout = rlView.getLeftBottomLayout();
//第一个参数为需要加入的布局
//第二个参数为文字大小,单位:sp
//第三个参数为文字颜色,默认白色
rlView.addLocation(leftTopLayout, textSize, textColor);
rlView.addAqiText(leftTopLayout,14);
rlView.addAqiQlty(leftTopLayout,14);
rlView.addAqiNum(leftTopLayout,14);
rlView.addAlarmIcon(leftTopLayout,14);
rlView.addAlarmTxt(leftTopLayout,14);
rlView.addWeatherIcon(leftTopLayout,14);
rlView.addWindIcon(leftBottomLayout,14);
rlView.addWind(leftBottomLayout,14, Color.WHITE);
rlView.addCond(leftBottomLayout,14, Color.WHITE);
rlView.addTemp(rightLayout,40, Color.WHITE);
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);
//显示控件
horizonView.show();
verticalView.show();
rlView.show();
llView.show();
}
####(4)使用悬浮控件
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//location若不传或为空则调用Android源生定位
WeatherConfig.init("key","location");
//初始化悬浮控件
SuspendView suspendView = new SuspendView(this);
//显示悬浮控件
suspendView.show();
}
####(5)如果需要跳转h5界面,需要在AndroidManifest文件添加如下代码
...
...
3.属性方法参照
###3.1 属性介绍
属性
说明
类型
默认
location
地址详解
String
无
viewGravity
内容显示对齐方式
ViewGravity(String类型)
center
padding
view的内边距
dimension
0dp
paddingLeft
view的左边距
dimension
0dp
paddingTop
view的上边距
dimension
0dp
paddingRight
view的右边距
dimension
0dp
paddingBottom
view的下边距
dimension
0dp
viewTextColor
view中的字体颜色
color
Color.WHITE
地址详解,location参数
权限说明
代码
不传递地址参数
自动采用android源生定位
城市ID:城市列表
location=101010100
根据请求自动判断,根据用户的请求获取IP,通过 IP 定位并获取城市数据
location=auto_ip(固定参数)
####ViewGravity
String
插件内容水平方向显示对齐方式
WeatherContent.GRAVITY_CENTER
内容居中
WeatherContent.GRAVITY_LEFT
内容居左
WeatherContent.GRAVITY_RIGHT
内容居右
###3.2 方法介绍
方法名
参数详解
作用
WeatherConfig.init(“key”);
参数1:key
初始化
WeatherConfig.init(“key”, location);
参数1:key 参数2:location(请参照地址详解)
初始化
setDefaultBack(boolean defaultBack)
参数1:是否展示默认天气图片背景(true:展示,false:透明背景)
设置是否展示默认的图片背景
setStroke(int radius, int backColor, int strokeWidth, int strokeColor)
参数1:圆角大小(单位:dp) 参数2:背景颜色 参数3:边框宽度(单位:px) 参数4:边框颜色
设置控件的边框
setViewGravity(String viewGravity)
参数1:控件对齐方式(默认居中)
设置控件对齐方式
setViewPadding(int paddingLeft, int paddingTop, int paddingRight, int paddingBottom)
参数1-4:控件左上右下内边距
设置控件内边距
addLocation(int textSize, int textColor)
参数1:文字大小(单位:sp) 参数2:文字颜色
添加地址描述文字
addLocation(int textSize, int textColor, int l, int t, int r, int b)
参数1:文字大小(单位:sp) 参数2:文字颜色 参数3-6:控件的左上右下内边距
addLocation(LinearLayout layout, int textSize, int textColor)
参数1:加入此控件的父布局 参数2:文字大小(单位:sp) 参数3:文字颜色
addLocation(LinearLayout layout, int textSize, int textColor, int l, int t, int r, int b)
参数1:加入此控件的父布局 参数2:文字大小(单位:sp) 参数3:文字颜色 参数4-7:控件的左上右下内边距
addTemp(int textSize, int textColor)
参数1:文字大小(单位:sp) 参数2:文字颜色
添加温度描述
addTemp(int textSize, int textColor, int l, int t, int r, int b)
参数1:文字大小(单位:sp) 参数2:文字颜色 参数3-6:控件的左上右下内边距
addTemp(LinearLayout layout, int textSize, int textColor)
参数1:加入此控件的父布局 参数2:文字大小(单位:sp) 参数3:文字颜色
addTemp(LinearLayout layout, int textSize, int textColor, int l, int t, int r, int b)
参数1:加入此控件的父布局 参数2:文字大小(单位:sp) 参数3:文字颜色 参数4-7:控件的左上右下内边距
addAqiText(int textSize, int textColor)
参数1:文字大小(单位:sp) 参数2:文字颜色
添加文字:AQI
addAqiText(int textSize, int textColor, int l, int t, int r, int b)
参数1:文字大小(单位:sp) 参数2:文字颜色 参数3-6:控件的左上右下内边距
addAqiText(LinearLayout layout, int textSize)
参数1:加入此控件的父布局 参数2:文字大小(单位:sp) 参数3:文字颜色
addAqiText(LinearLayout layout, int textSize, int l, int t, int r, int b)
参数1:加入此控件的父布局 参数2:文字大小(单位:sp) 参数3:文字颜色 参数4-7:控件的左上右下内边距
addWind(int textSize, int textColor)
参数1:文字大小(单位:sp) 参数2:文字颜色
添加风力描述
addWind(int textSize, int textColor, int l, int t, int r, int b)
参数1:文字大小(单位:sp) 参数2:文字颜色 参数3-6:控件的左上右下内边距
addWind(LinearLayout layout, int textSize, int textColor)
参数1:加入此控件的父布局 参数2:文字大小(单位:sp) 参数3:文字颜色
addWind(LinearLayout layout, int textSize, int textColor, int l, int t, int r, int b)
参数1:加入此控件的父布局 参数2:文字大小(单位:sp) 参数3:文字颜 参数4-7:控件的左上右下内边距
addCond(int textSize, int textColor)
参数1:文字大小(单位:sp) 参数2:文字颜色
添加天气描述
addCond(int size, int textColor, int l, int t, int r, int b)
参数1:文字大小(单位:sp) 参数2:文字颜色 参数3-6:控件的左上右下内边距
addCond(LinearLayout layout, int textSize, int textColor)
参数1:加入此控件的父布局 参数2:文字大小(单位:sp) 参数3:文字颜色
addCond(LinearLayout layout, int size, int textColor, int l, int t, int r, int b)
参数1:加入此控件的父布局 参数2:文字大小(单位:sp) 参数3:文字颜色 参数4-7:控件的左上右下内边距
addAlarmTxt(int textSize)
参数1:文字大小(单位:sp)
添加预警文字描述
addAlarmTxt(int textSize, int l, int t, int r, int b)
参数1:文字大小(单位:sp) 参数2-5:控件的左上右下内边距
addAlarmTxt(LinearLayout layout, int textSize)
参数1:加入此控件的父布局 参数2:文字大小(单位:sp)
addAlarmTxt(LinearLayout layout, int textSize, int l, int t, int r, int b)
参数1:加入此控件的父布局 参数2:文字大小(单位:sp) 参数3-6:控件的左上右下内边距
addAqiQlty(int textSize)
参数1:文字大小(单位:sp)
添加空气质量文字描述
addAqiQlty(int textSize, int l, int t, int r, int b)
参数1:文字大小(单位:sp) 参数2-5:控件的左上右下内边距
addAqiQlty(LinearLayout layout, int textSize)
参数1:加入此控件的父布局 参数2:文字大小(单位:sp)
addAqiQlty(LinearLayout layout, int textSize, int l, int t, int r, int b)
参数1:加入此控件的父布局 参数2:文字大小(单位:sp) 参数3-6:控件的左上右下内边距
addAqiNum(int textSize)
参数1:文字大小(单位:sp)
添加空气质量数值描述
addAqiNum(int textSize, int l, int t, int r, int b)
参数1:文字大小(单位:sp) 参数2-5:控件的左上右下内边距
addAqiNum(LinearLayout layout, int textSize)
参数1:加入此控件的父布局 参数2:文字大小(单位:sp)
addAqiNum(LinearLayout layout, int textSize, int l, int t, int r, int b)
参数1:加入此控件的父布局 参数2:文字大小(单位:sp) 参数3-6:控件的左上右下内边距
addWeatherIcon(int mWidth)
参数1:图标宽高(单位:dp)
添加天气图标
addWeatherIcon(int mWidth, int l, int t, int r, int b)
参数1:图标宽高(单位:dp) 参数2-5:控件的左上右下内边距
addWeatherIcon(LinearLayout layout, int mWidth)
参数1:加入此控件的父布局 参数2:图标宽高(单位:dp)
addWeatherIcon(LinearLayout layout, int mWidth, int l, int t, int r, int b)
参数1:加入此控件的父布局 参数2:图标宽高(单位:dp) 参数3-6:控件的左上右下内边距
addWindIcon(int mWidth)
参数1:图标宽高(单位:dp)
添加风向图标
addWindIcon(int mWidth, int l, int t, int r, int b)
参数1:图标宽高(单位:dp) 参数2-5:控件的左上右下内边距
addWindIcon(LinearLayout layout, int mWidth)
参数1:加入此控件的父布局 参数2:图标宽高(单位:dp)
addWindIcon(LinearLayout layout, int mWidth, int l, int t, int r, int b)
参数1:加入此控件的父布局 参数2:图标宽高(单位:dp) 参数3-6:控件的左上右下内边距
addAlarmIcon(int mWidth)
参数1:图标宽高(单位:dp)
添加预警图标
addAlarmIcon(int mWidth, int l, int t, int r, int b)
参数1:图标宽高(单位:dp) 参数2-5:控件的左上右下内边距
addAlarmIcon(LinearLayout layout, int mWidth)
参数1:加入此控件的父布局 参数2:图标宽高(单位:dp)
addAlarmIcon(LinearLayout layout, int mWidth, int l, int t, int r, int b)
参数1:加入此控件的父布局 参数2:图标宽高(单位:dp) 参数3-6:控件的左上右下内边距