前言
平时打Dota时经常会随机英雄玩,碰到不熟悉的英雄就尴尬了,需要从游戏切回桌面百度查询该英雄的出装和加点攻略等,无奈来回切不方便,所以下了第三方Dota攻略APP在手机上查看,方便是方便,就是第三方APP广告太多,而且布局排列都不太习惯,所以就自己做了一款Dota攻略APP。
平时打Dota时经常会随机英雄玩,碰到不熟悉的英雄就尴尬了,需要从游戏切回桌面百度查询该英雄的出装和加点攻略等,无奈来回切不方便,所以下了第三方Dota攻略APP在手机上查看,方便是方便,就是第三方APP广告太多,而且布局排列都不太习惯,所以就自己做了一款Dota攻略APP。
最早接触productFlavors是开发第三方Android OS的时候,由于要给不同的厂商做定制,并且适配不同的硬件平台,所以发版本的时候,经常要切换项目分支,然后逐个编译APK。然而有了productFlavors就可以简化这一步操作,不用切换项目分支就可以编译调试不同项目版本的APK,并且可以快速打包所有项目版本的APK。
下面来看下具体用法,在build.gradle(Module:app)中添加productFlavors和flavorDimensions,其中productFlavors用来定义不同特性的产品,flavorDimensions用来定义维度(至少需要定义1个维度)。
在Android网络请求调试过程中经常会碰到各种各样的问题,此时就需要通过抓取网络请求包来分析定位问题,通过网络请求包可以知晓请求头,请求参数,服务器状态响应码及响应内容等。抓取网络请求包的方式有多种,今天主要介绍网络抓包利器:Wireshark。
打开Wireshark,点击菜单“捕获选项”按钮,弹出对话框如下,选中对应的网卡,然后点击“开始”按钮, 开始抓包。(注:Wireshark是捕获机器上某一块网卡的网络包,当机器上有多块网卡的时候,需要选择一个网卡)
分享一个之前开发的Android倒计时特效.初始需求如下:以转盘形式设置倒计时时间,开始计时后,转盘箭头每秒转动一定角度,直至倒计时结束.Demo效果如下,拖动转盘箭头设置倒计时时间(一圈对应60秒),彩色部分对应当前倒计时剩余时间.由于渐变色的那段圆弧是随着倒计时时间不断缩小的,所以考虑先绘制一个渐变色圆环,再在渐变色圆环上覆盖灰色圆弧,最后在整个圆环视图顶层覆盖一个白色刻度环(其中灰色圆弧根据倒计时时间进度不断绘制弧度大小).
最近项目中用到bringToFront()这个方法,在自己的三星S4手机(Android 4.2版本,android-17)上调试怎么都不生效,于是查看源码(android-23),发现Android 4.4之前的版本如果使用这个方法,必须得加上requestLayout()和invalidate()才能生效.先看下View.java中bringToFront()的实现,发现它调用的是ViewGroup.java的bringChildToFront(View child)方法.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16/**
* Change the view's z order in the tree, so it's on top of other sibling
* views. This ordering change may affect layout, if the parent container
* uses an order-dependent layout scheme (e.g., LinearLayout). Prior
* to {@link android.os.Build.VERSION_CODES#KITKAT} this
* method should be followed by calls to {@link #requestLayout()} and
* {@link View#invalidate()} on the view's parent to force the parent to redraw
* with the new child ordering.
*
* @see ViewGroup#bringChildToFront(View)
*/
public void bringToFront() {
if (mParent != null) {
mParent.bringChildToFront(this);
}
}