java - Android中如何用Java创建涟漪效果

标签 java android xml android-5.0-lollipop ripple

我有ripple xml。但我不确定如何在 Java 中获得相同的效果。

<ripple
xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/blue_1"
/>

我想在 Java 中定义/创建/加载波纹,甚至设置颜色。 这意味着,在 java 中,我可以加载 XML 波纹,然后分配颜色。或者我可以用java做所有事情:Ripple = new Ripple 吗?

我尝试了此链接中的代码:https://github.com/romainguy/google-io-2014/blob/master/app/src/main/java/com/example/android/io2014/DetailActivity.java .

有一个名为 colorRipple 的方法。

private void colorRipple(int id, int bgColor, int tintColor) {
    View buttonView = findViewById(id);

    RippleDrawable ripple = (RippleDrawable) buttonView.getBackground();
    GradientDrawable rippleBackground = (GradientDrawable) ripple.getDrawable(0);
    rippleBackground.setColor(bgColor);

    ripple.setColor(ColorStateList.valueOf(tintColor));
}

我尝试了上面的代码,但它给了我 NPE。

最佳答案

您可以在运行时使用以下内容创建或修改 RippleDrawable:

ColorStateList csl = ColorStateList.valueOf(Color.BLUE);
RippleDrawable d = new RippleDrawable(csl, null, null);

// Change the color, if desired.
ColorStateList otherCsl = ColorStateList.valueOf(Color.RED);
d.setColor(otherCsl);

关于java - Android中如何用Java创建涟漪效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28817185/

相关文章:

c# - Monogame-音乐和声音效果无法同时播放

java - 是否可以在 Win XP 中调出 Java 控制台窗口?

java - 将循环重构为android中的流

android - 在自定义 ListView 中处理 imageButton 单击

android - Proguard 和 Android

.net - 将 html 标记转换为有效 XML 的脚本

java - 我怎样才能在 SAS 9.4 中获得像 OLAPDataSetInterface 这样的对象

java - spring什么时候可以使用cglib来创建代理了?

java - 寻找在 Java/Maven 中应用 XML 补丁的工具

c# - 为 Xml 序列化错误提供元素名称