Android Ripple按钮,带有弯曲背景,适用于Pre-Lollipop设备

时间:2017-02-15 09:25:06

标签: android android-studio material-design android-support-library android-4.4-kitkat

我需要按钮的涟漪效果。目前我在棒棒糖中使用波纹背景,在v21目录中使用xml向上设备,它工作正常,但我还需要为棒棒糖前设备提供连锁效果。

这是我的按钮。 [Button 1][1]

我使用了一些自定义库来获取棒棒糖前设备的连锁效果。例如,我按照how to create ripple effect for pre-lollipop使用了com.balysv:material-ripple:1.0.2库。在那里,他们使用this library,它使用自定义视图来包装按钮。

因此,当我将它用于棒棒糖前曲线形状的按钮时,结果将是这样的......

enter image description here

正如您所看到的,涟漪效应超出按钮笔划边界的一侧。有没有办法解决这个问题?

另外,有没有办法使用Android的默认支持库获取涟漪效应,而不是使用自定义第三方库来预制棒棒糖设备?

2 个答案:

答案 0 :(得分:0)

没有。您没有使用支持库在pre-lollipop上选择涟漪效果。您可以使用this库 - 易于使用。检查操作系统,然后如果你不喜欢这样就实现涟漪。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    // set layout background as ripple_drawable
} else {
    // Implement the 3rd party library
}

答案 1 :(得分:0)

使用https://github.com/ozodrukh/RippleDrawable

ripple.xml

<ripple xmlns:android="htp://schemas.android.com/apk/res/android"
android:color="yourRippleColor">
<!-- style for ripple -->
<item android:id="@android:id/mask">
<shape android:shape="rectangle">
<corners android:radius="yourButtonCornerRadius"/>
<solid android:color="#FF00FF"/>
</shape>
</item>
<!-- background -->
<item android:drawable="yourBackgroundForButton" />
</ripple>

Activity.java

Button bu=...;
bu.setBackground(LollipopDrawablesCompat.getDrawable(getResources(),R.drawable.ripple,getTheme());
bu.setOnTouchListener(new DrawableHotspotTouch((LollipopDrawable)bu.getBackground()));

在Samsung Galaxy Advance Duos,Android 4.4.2(api 19,KitKat)上进行了测试