https://github.com/eluleci/FlatUI
这是我非常喜欢的一个库,现在来一探究竟。
因为项目久远,已经跑不起来了。。。 大致看下 Button。
// creating normal state drawable
ShapeDrawable normalFront = new ShapeDrawable(new RoundRectShape(attributes.getOuterRadius(), null, null));
normalFront.getPaint().setColor(attributes.getColor(2));
ShapeDrawable normalBack = new ShapeDrawable(new RoundRectShape(attributes.getOuterRadius(), null, null));
normalBack.getPaint().setColor(attributes.getColor(1));
normalBack.setPadding(0, 0, 0, bottom);
Drawable[] d = {normalBack, normalFront};
LayerDrawable normal = new LayerDrawable(d);
// creating pressed state drawable
ShapeDrawable pressedFront = new ShapeDrawable(new RoundRectShape(attributes.getOuterRadius(), null, null));
pressedFront.getPaint().setColor(attributes.getColor(1));
ShapeDrawable pressedBack = new ShapeDrawable(new RoundRectShape(attributes.getOuterRadius(), null, null));
pressedBack.getPaint().setColor(attributes.getColor(0));
if (bottom != 0) pressedBack.setPadding(0, 0, 0, bottom / 2);
Drawable[] d2 = {pressedBack, pressedFront};
LayerDrawable pressed = new LayerDrawable(d2);
就是用 LayerDrawable 实现的图层叠加,貌似是没有动画效果的。