摘要:
1. 直接自定义。通过attrs.getAttributeXXXValue获取 2. 定义在attrs.xml文件中,通过Context.ObtainStyledAttributes和TypeArray.getxxx获取 阅读全文
摘要:
Android view的padding是view的一部分,可以点击,背景色也覆盖padding; margin则不属于view,不能点击,背景色也不覆盖。 如果想结合二者,让view的主体有背景,边缘没有背景色,同时整个view又可以点击,怎么方便呢? 很简单的不凡是使用InsetDrawable 阅读全文
摘要:
onFinishInflate在parse完xml后被调用。所以此时查看其子view,只有在xml中静态定义的。 阅读全文
摘要:
对于Android UI类的单元测试,以前写的有些代码就是sleep 10秒,然后肉眼检查下。这样子在自动化测试中没有用。
今天修改了下代码,其实肉眼检查也就是检查pixel的颜色,所以可以直接获取view的某个点的颜色,然后跟期望值比较就行了。 阅读全文
摘要:
android:targetSdkVersion的工作原理 阅读全文
摘要:
用个例子来解释下最近遇到一个问题。在android sqlite3命令行中执行create table t(a)创建表。这里不指定a的具体类型。然后执行insert into t values(0)。如果我在sqlite3命令行中使用"select * from t where a = 0",能查询... 阅读全文
摘要:
总结下在Android的actionbar中实现点击一个按钮出现子菜单(包括spinner)的各种方法。 阅读全文
摘要:
利用Android VpnService技术实现免root流量防火墙。 阅读全文
摘要:
重构代码时经常遇到一个子方法(或者类)有复杂的if-else,可以处理多种情况。此时该方法的调用者貌似很简单,只需要简单的调用该方法即可。但事实上,所有的复杂逻辑都落到该子方法钟。结果导致子方法的本来互不关联的调用者也变得互相耦合。即,我只想因为调用者A修改子方法,则因为子方法被修改,其他调用者都可... 阅读全文
摘要:
gravity用来描述当前view的内容在view中的位置。例如 那么hello就会出现在按钮的最下方。如果当前view是个view group,例如 那按钮会出现在layout的最下方。对这个例子,也就是屏幕的最下方。如果把button的宽高都改为match_parent那对于 button... 阅读全文