Android5.0 ripple效果低版本的实现

Android5.0 按钮的波纹效果的确是十分炫酷的 
Android5.0 ripple效果低版本的实现_第1张图片

为了能使在低版本使用,我们需要使用一个类 MaterialRippleLayout 
导入类的方法

首先先创建 MaterialRippleLayout类,之后在values里创建attributes文件,drawables文件和在drawable里创建selector文件 
values/attributes.xml


<resources>
    <declare-styleable name="MaterialRippleLayout">
        <attr name="rippleColor" format="color" localization="suggested" />
        <attr name="rippleDimension" format="dimension" localization="suggested" />
        <attr name="rippleOverlay" format="boolean" localization="suggested" />
        <attr name="rippleAlpha" format="float" localization="suggested" />
        <attr name="rippleDuration" format="integer" localization="suggested" />
        <attr name="rippleFadeDuration" format="integer" localization="suggested" />
        <attr name="rippleHover" format="boolean" localization="suggested" />
        <attr name="rippleBackground" format="color" localization="suggested" />
        <attr name="rippleDelayClick" format="boolean" localization="suggested" />
        <attr name="ripplePersistent" format="boolean" localization="suggested" />
        <attr name="rippleInAdapter" format="boolean" localization="suggested" />
    declare-styleable>
resources>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

values/drawables.xml


<resources>
    <drawable name="transparent">#00FFFFFFdrawable>
    <drawable name="default_pressed">#00FFFFFFdrawable>
resources>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

这其中的颜色并没什么作用,只是为了给个默认的颜色,所有就这样写,具体颜色修改可以在布局文件中或者代码中修改

drawable/selector.xml



<selector xmlns:android="http://schemas.android.com/apk/res/android"
    android:exitFadeDuration="200">
    <item android:state_window_focused="false" android:drawable="@drawable/transparent"/>

    <item android:state_focused="true"  android:state_pressed="true"  android:state_enabled="false"
        android:drawable="@drawable/transparent"/>
    <item android:state_focused="true"  android:state_enabled="false"
        android:drawable="@drawable/transparent"/>
    <item android:state_focused="true"  android:state_pressed="true" android:state_enabled="true"
        android:drawable="@drawable/default_pressed"/>
    <item android:state_focused="false" android:state_pressed="true"
        android:drawable="@drawable/default_pressed"/>

selector>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

配置好这些,我们就可以使用了

通过xml文件的配置

<com.example.hzwangwentong.ripplelayout.MaterialRippleLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#ffff00"     //按钮背景颜色
    android:layout_marginTop="24dp"
    app:rippleOverlay="true"
    app:rippleColor="#03A9F4"   //波纹的颜色
    app:rippleAlpha="0.2"
    app:rippleDelayClick="false"
    app:rippleHover="true">

    

之后就在代码中给其添加监听就行了,为了使效果完美,需要将2个点击监听都要添加。

findViewById(R.id.ripple_layout_1).setOnClickListener(this);
findViewById(R.id.ripple_layout_1).setOnLongClickListener(this);
  • 1
  • 2
  • 1
  • 2

通过代码文件的配置 
我们在布局文件中创建一个button

之后在代码中

View view = findViewById(R.id.ripple_layout_2);
MaterialRippleLayout.on(view)
        .rippleColor(Color.parseColor("#D32F2F"))   //设置波纹的颜色  设置颜色必须这样设置,通过R.color.XXXX的设置是无效的
        .rippleAlpha(0.2f)
        .rippleHover(true)
        .create();

view.setOnLongClickListener(this);
view.setOnClickListener(this);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

当然还有其他的方法。 
.rippleBackground(Color.parseColor(“#D32F2F”)) 来设置按钮的背景色

具体的可以去类中查看。

最后是效果 
Android5.0 ripple效果低版本的实现_第2张图片

ripple的代码地址:http://pan.baidu.com/s/1gd0ctH5

你可能感兴趣的:(Android)