我正在寻找RippleDrawable的源代码,这里提到https://developer.android.com/preview/material/animations.html#touch
实际上它必须退出,因为它在Android L中用于涟漪动画。
但是,也许这是我的错,我无法找到它......
感谢您的帮助。
这是我发现的解压缩android.jar
: - ((
public class RippleDrawable extends LayerDrawable
{
public RippleDrawable(Drawable content, Drawable mask)
{
super((Drawable[])null); throw new RuntimeException("Stub!"); }
public void setAlpha(int alpha) { throw new RuntimeException("Stub!"); }
public void setColorFilter(ColorFilter cf) { throw new RuntimeException("Stub!"); }
public int getOpacity() { throw new RuntimeException("Stub!"); }
protected boolean onStateChange(int[] stateSet) { throw new RuntimeException("Stub!"); }
protected void onBoundsChange(Rect bounds) { throw new RuntimeException("Stub!"); }
public boolean setVisible(boolean visible, boolean restart) { throw new RuntimeException("Stub!"); }
public boolean isStateful() { throw new RuntimeException("Stub!"); }
public void setColor(ColorStateList color) { throw new RuntimeException("Stub!"); }
public void inflate(Resources r, XmlPullParser parser, AttributeSet attrs, Resources.Theme theme) throws XmlPullParserException, IOException { throw new RuntimeException("Stub!"); }
public boolean setDrawableByLayerId(int id, Drawable drawable) { throw new RuntimeException("Stub!"); }
public void setPaddingMode(int mode) { throw new RuntimeException("Stub!"); }
public void applyTheme(Resources.Theme t) { throw new RuntimeException("Stub!"); }
public boolean canApplyTheme() { throw new RuntimeException("Stub!"); }
public void setHotspot(float x, float y) { throw new RuntimeException("Stub!"); }
public void setHotspotBounds(int left, int top, int right, int bottom) { throw new RuntimeException("Stub!"); }
public void draw(Canvas canvas) { throw new RuntimeException("Stub!"); }
public Rect getDirtyBounds() { throw new RuntimeException("Stub!"); }
public Drawable.ConstantState getConstantState() { throw new RuntimeException("Stub!"); }
}
答案 0 :(得分:3)
要了解其工作原理,您需要在头脑中分离构建和运行环境。
为了构建您的程序,您只需要针对Android API的定义进行构建。 Google发布的android.jar只包含定义API的存根。例如,API库中有许多标有“@hide”注释的公共方法。那些方法根本没有放到android.jar中。另外,正如您所注意到的,大多数方法的主体只是抛出运行时异常。
android.jar文件不是您的应用程序的一部分。在运行时,您的应用程序会绑定到手机上安装的真实Android库。它包括各种API方法的实际实现。
运行时可用的代码可在AOSP项目中找到。
不幸的是,谷歌尚未放弃L代码。如果没有从支持L的设备中提取android库并对其进行反编译,则无法查看RippleDrawable
的代码
无赖!