Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 按钮式api 21_Android_Button_Styles - Fatal编程技术网

Android 按钮式api 21

Android 按钮式api 21,android,button,styles,Android,Button,Styles,我在api 21上看到了按钮的新动画: 但我想用蓝色来实现这一点,我在Drawables文件夹上的buttonstyle.xml中看到了另一个问题,即使用此自定义样式: <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="?attr/colorControlHighlight"> <item> <shape xmlns:a

我在api 21上看到了按钮的新动画:

但我想用蓝色来实现这一点,我在Drawables文件夹上的buttonstyle.xml中看到了另一个问题,即使用此自定义样式:

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="?attr/colorControlHighlight">
    <item>
        <shape xmlns:android="http://schemas.android.com/apk/res/android">
            <corners android:radius="2dp" />
            <solid android:color="@color/Blue" />
        </shape>
    </item>
</ripple>
但是我的min API是14,它崩溃了,因为我需要min 21才能使用ripple,我如何才能确定用户是否有android 5可以用蓝色显示此动画,以及用户是否有较低版本,但也可以用蓝色显示正常动画

谢谢

使用图书馆

buttonstyle.xml:

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/Blue" >
    <!-- @color/Blue is ripple color -->
    <!-- item(id=mask): image which will be filled by ripple -->
    <item 
        android:id="@android:id/mask">
        <!-- default button background image -->
        <inset
            android:insetLeft="@dimen/abc_button_inset_horizontal_material"
            android:insetTop="@dimen/abc_button_inset_vertical_material"
            android:insetRight="@dimen/abc_button_inset_horizontal_material"
            android:insetBottom="@dimen/abc_button_inset_vertical_material">
            <shape android:shape="rectangle">
                <corners android:radius="@dimen/abc_control_corner_material" />
                <!-- e0e0e0 is default backround color -->
                <!-- this solid element can be removed, but i dont test this -->
                <solid android:color="#e0e0e0" />
                <padding android:left="@dimen/abc_button_padding_horizontal_material"
                    android:top="@dimen/abc_button_padding_vertical_material"
                    android:right="@dimen/abc_button_padding_horizontal_material"
                    android:bottom="@dimen/abc_button_padding_vertical_material" />
            </shape>
        </inset>
    </item>
    <!-- item(none): default button background -->
    <item>
        <!-- default button background image -->
        <inset
            android:insetLeft="@dimen/abc_button_inset_horizontal_material"
            android:insetTop="@dimen/abc_button_inset_vertical_material"
            android:insetRight="@dimen/abc_button_inset_horizontal_material"
            android:insetBottom="@dimen/abc_button_inset_vertical_material">
            <shape android:shape="rectangle">
                <corners android:radius="@dimen/abc_control_corner_material" />
                <!-- e0e0e0 is default backround color -->
                <solid android:color="#e0e0e0" />
                <padding android:left="@dimen/abc_button_padding_horizontal_material"
                    android:top="@dimen/abc_button_padding_vertical_material"
                    android:right="@dimen/abc_button_padding_horizontal_material"
                    android:bottom="@dimen/abc_button_padding_vertical_material" />
            </shape>
        </inset>
    </item>
</ripple>

工作

旧版的api中没有涟漪,但是有没有选择让这两种样式和应用程序根据用户的api选择一种?因为现在,在安卓5仿真器中使用默认样式时,我可以看到API 21效果,如果我在安卓4.4仿真器中打开应用程序,我会使用正常效果,因此可以这样做,我只想更改颜色。谢谢你的回答。
//button is your button
button.setBackgroundDrawable(LollipopDrawablesCompat.getDrawable(getResources(), R.drawable.buttonstyle, getTheme()));
button.setOnTouchListener(new DrawableHotspotTouch((LollipopDrawable) button.getBackground()));