Brand

双平台SDK工具包

小巧    简单    便捷

 

iOS 天气插件SDK

适应全规格空气质量实况和预报,支持多种语言

版本号:2.0

更新日期:2020-07-01

Android 天气插件SDK

适应全规格空气质量实况和预报,支持多种语言

版本号:2.0

更新日期:2020-07-01

Android天气插件

适配版本

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 cn.com.weather.cj.widget.bean.** { *; }
-keep public class cn.com.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控件


<!--横向布局-->
<cn.com.weather.cj.widget.view.HorizonView
    android:id="@+id/horizon_view"
    android:layout_width="match_parent"
    android:layout_height="60dp"/>

<!--左侧大布局右侧上下双横向布局-->
<cn.com.weather.cj.widget.view.LeftLargeView
    android:id="@+id/ll_view"
    android:layout_width="match_parent"
    android:layout_height="60dp"/>

<!--右侧大布局左侧上下双横向布局-->
<cn.com.weather.cj.widget.view.RightLargeView
    android:id="@+id/rl_view"
    android:layout_width="match_parent"
    android:layout_height="60dp"/>

<!--竖向布局-->
<cn.com.weather.cj.widget.view.VerticalView
    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文件添加如下代码

<application>
...
<activity android:name="cn.com.weather.cj.widget.view.SdkWebViewActivity" />
...
</application>

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:控件的左上右下内边距