注解:
-
1:
从git上clone的时候,分两个工程,一个是皮肤包工程,一个是对应的类库 -
2:
skin系类都是皮肤包,开发locker时候在对应的皮肤包中开发,
AmberLocker 是locker的类库,开发新功能的时候需要在此类库中开发、
一.首先是拿到组长给的任务.
-
1:
-
2: 以上信息到公司的ftp上自己获取,登录ftp方法。查看widget的文档
3: 包名对应的是,你要创建的module的包名
4: 下载下来的名字,对应的是你的应用的名字
5: Daisy位置,对应的是你在那个工程下创建module
6: weather6day 是的module的名字
二.找资源,然后分析
1:了解对应的信息就可以上手进行开发了,拿到你的任务首先去ftp上下载对应的资源,有operation 和out_put这是我们需要的。
2: operation 对应的是你要做出来的效果图,可以按照效果图进行写你的布局。里面会有你用到的icon。还有一些store的图片。
3:out_put 对应的是你在布局文件可能用到的图片,比如背景图片等
4:了解了你要做的是什么样的locker,然后就是去找一个和你的相似的locker(当然你也可以完全的自己开发,可能效率会慢一些。)
我们可以去daisy上寻找和自己的locker相似的。(daisy是我司的一个自己搭建的自动化的打包平台。点击查看那查看图片可以查看到对应的预览图)。
三.正式开发
1:完成前面的步骤,你就可以找到一个和你相似的module了(我们可以去daisy上找和自己的locker相似的)。复制一份并修改module的名字。还有就是包名。Icon。还有store的图片
2:有的你的当前的module的天气icon不一致,那么你就要找到和你要做的module一样的,然后进行替换
3:开始写布局。
四.总结一下
1: 首先是找到一个和你相似的module,然后复制一下。放到对应的组中。
2: 更换应用的icon(ic_72的放到drawable_hdpi,ic_512放到drawablex-xxhdpi)。天气icon(很多天气图标和用到的图片都需要放到drawablex-xxhdpi)其他的资源文件就自己用到什么自己去ftp上找。
3: 修改包名。分别在每个类的package 和AndroidManifest.xml 还有build.gradle中的包名。
4: 以上工作都做完,可以先尝试运行你的自己module,可能会遇到问题,对应的自己看logcat报错信息。如果能正常运行,完美。
5: 在你可以正常运行你的module的前提下,现在你就可以正常的进行开发了,开发会用到很多数据,每个数据都是用反射的方式获取的,所以我们只需要设置对应的id就可以完成数据的获取,按照你的效果图来画布局。要是有其他的功能,询问设计师,自己实现。
五.完成开发,检验
1: 完成效果图的布局,没有什么问题,拿给设计师检查。
2: 如果没有问题的话,开始进行屏幕适配(因为我们的locker要面对不同手机型号的用户,让不同手机用户的体验效果都是一样的,这就是我们要适配的目的,适配的机型有xxxhdpi,xxhdpi,xhdpe,hdpi如果有特殊的机型,要单独创建文件夹进行适配)
3: 当然不可能做的一次就满足设计师的要求,设计师说那里有问题,我们就改那里。(设计师是我们的衣食父母我们不能得罪),修改之后再去给设计师检查,直到满意为止
六.提交代码
第一种是用视图的方式
- 1: 右键你的module找到GIT
-
2:
点击Add,然后就是导航栏找到,VCS上升的箭头点击
- 3:
commit 你的代码。在commit Message写上注释,你提交的内容
-
4:
点击commit
之后选择commitandpush 就完
七.恭喜你完成以上过程,就是完成了开发任务
八.打包应用。在daisy
1: 上传到gitlib之后,我们要去daisy上进行打包
2: 打包的时候会出错,也会成功,。成功就下载下来传到测试组,进行测试,测试通过的话,就开启下一个任务。如果不通过的话,就修改对应的bug,修改够重复git提交的步骤,
3: 出错的话,会把错误报告发送到你的企业邮箱。自行查看,并改正直到打包完成。重复成功的步骤就可以。
LOCKER说明,几个常用的方法:
-
1:
Constants.class:天气icon的资源定义。
MainActivity.class:getLockIconIdByWeatherString 方法 显示布局的方法,可以在内写一些实现效果。
getLockIconIdByWeatherString 这是icon天气的方法,对应前面的Constants
getLockBackgroundIdByWeatherString 获得背景图片的方法
getNumberViewByInteger 密码锁调用的方法
public View getNumberViewByInteger(final Context mainContext, final Context thisContext, Integer
numBackViewText) {
根据numBackViewText 返回不同的View(10是 删除view)
(View 自行设置点击事件)
必须包括一个textView @+id/lock_screen_pass_text_num(用于设置库中的逻辑 必须
match_parent match_parent
如果不需要数字但是必须有 可以设置alpha 0.0 但是不可以invisible or gone)
}
getPatternViewByInteger 手势开发调用的方法。
-
2:
Valus config.xml
<bool name="useDefaultPattern">false</bool> 是否使用默认的手势解锁方式
<color name="patternLineColor">#66ffffff</color> 连线的颜色
<dimen name="patternLineStrokeWidth">10dp</dimen> 线的宽度
<bool name="patternLineIsUp">false</bool> 先是否在图案的上面
<bool name="patternFullyUseCustom">true</bool> 是否完全自定义密码盘
<integer name="lockDirectionFrom">1</integer> 解锁方式。
-1:需要自行设置解锁方式;
1(默认):向右侧滑动;
2:向左侧滑动;
8:向上方滑动;
<span id="locker_id">LOCKER说明,几个常用ID:</span>
-
1: 根标签:@+id/lock_screen_root_layout
当前时间:@+id/lock_screen_text_time
日期:@+id/lock_screen_text_date
城市: @+id/lock_screen_text_city
当前天气icon:@+id/lock_screen_img_icon
高温:@+id/lock_screen_text_high_temp
低温:@+id/lock_screen_text_low_temp
当前温度: @+id/lock_screen_text_curr_temp
天气布局(点击后进入主应用):@+id/lock_screen_layout_weather
体感温度:@+id/lock_screen_text_curr_feel
风向:@+id/lock_screen_text_wind_direction
风速:@+id/lock_screen_text_wind_speed
日出:@+id/lock_screen_text_sunrise
日落:@+id/lock_screen_text_sunset
湿度:@+id/lock_screen_text_humidity
压强:@+id/lock_screen_text_pressure
广告的总布局(RelativeLayout):@+id/lock_screen_layout_weather
adMob广告布局:@+id/lock_screen_ad_admob_layout
native广告布局:@+id/lock_screen_ad_layout
native adAction: @+id/lock_screen_ad_action
native description: @+id/lock_screen_ad_description
native adicon: @+id/lock_screen_ad_icon
native adTitle: @+id/lock_screen_ad_title
天预报名称:@+id/lock_screen_day1_name
天预报图标:@+id/lock_screen_day1_icon
天预报低温:@+id/lock_screen_day1_low_temp
天预报高温:@+id/lock_screen_day1_high_temp在config 配置对应的属性就可以改变效果