it-roy-ru.com

Android L рябь сенсорный эффект на форму?

У меня есть скругленный прямоугольник с возвышением, который отбрасывает тень, как в примере здесь: http://developer.Android.com/preview/material/views-shadows.html#shadows

Вот моя форма:

<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:shape="rectangle">
    <solid Android:color="@Android:color/white" />
    <corners Android:radius="6dp" />
</shape>

Я хочу получить приятный «пульсирующий» сенсорный эффект, который есть у всего остального, но когда он установлен в качестве фона представления, сенсорная обратная связь не предоставляется. Форма остается белой.

Итак, я сделал это в layer-list:

<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item>
        <shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
            Android:shape="rectangle">
            <solid Android:color="@Android:color/white" />
            <corners Android:radius="6dp" />
        </shape>
    </item>
    <item Android:drawable="?android:selectableItemBackground" />
</layer-list>

Теперь я получаю приятную обратную связь при касании, но есть проблема.

Контур закругленной прямоугольной формы был потерян. Он по-прежнему хорошо рисует белый прямоугольник с закругленными углами, но тень отбрасывается в виде неокругленного прямоугольника (квадратные края), и рябь проходит за пределы углов:

Bad corners

Здесь это не выглядит ужасно, но на устройстве это выглядит довольно уродливо и неприятно.

Есть ли способ это исправить? Кажется, я хочу получить раздел Outline первой ссылки, но я не могу понять, как это реализовать.

42
Steven Schoen

Попробуйте это:

ripple.xml

<?xml version="1.0" encoding="utf-8"?>
<ripple Android:color="@color/COLOR_WHILE_PRESSING" xmlns:Android="http://schemas.Android.com/apk/res/Android">
 <item Android:drawable="@drawable/background"></item>
</ripple>

background.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
 <solid Android:color="@color/BACKGROUND_COLOR" />
 <corners Android:radius="6dp" />
</shape>

Или, может быть, этот пост поможет вам: Android L FAB Button shadow

Я объяснил, как реализовать новую кнопку FAB, я также использовал схему для этого.

70
theyanu
<RelativeLayout
 Android:foreground="?android:attr/selectableItemBackground">

</RelativeLayout>
2
vishal gupta

нажмите здесь для получения полного исходного кода

Создать файл button.xml в папке для рисования

<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:state_pressed="true" Android:drawable="@color/colorPrimaryDark"/>
    <item Android:drawable="@color/colorPrimary"/>
</selector>

Создать файл button.xml в папке drawable-v21

<ripple xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:color="?android:colorControlHighlight">
    <item Android:drawable="@color/colorPrimary" />
</ripple>

вы можете установить button.xml в качестве фона вашего представления.

<TextView Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_marginTop="8dp"
    Android:background="@drawable/button"
    Android:clickable="true"
    Android:gravity="center"
    Android:padding="16dp"
    Android:text="Android Ripple Effect Custom"
    Android:textColor="#fff"
    Android:textSize="18sp" />

если вы хотите использовать собственный цвет для волнового эффекта вместо серого по умолчанию, вы можете заархивировать его, добавив colorControlHighlight в свой стиль.

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="colorControlHighlight">@color/colorPrimaryDark</item>
    </style>

</resources>
2
nirav kalola

кнопка с эффектом пульсации в Android-студии

       <com.xgc1986.ripplebutton.widget.RippleButton
        Android:id="@+id/Summit"
        Android:layout_width="260dp"
        Android:layout_height="50dp"
        Android:text="Login"
        Android:textColor="@color/white"
        Android:textStyle="bold"
        app:buttonColor="@color/Button"
        app:rippleColor="@color/white" />

Для получения дополнительной информации нажмите здесь http://androiddhina.blogspot.in/2015/04/Android-ripple-touch-effect-example.html

1
Dhina k

Это с рябью и список слоев.

<ripple xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:color="@color/colorRipple">
<item>
    <layer-list>
        <item>
            <shape Android:shape="rectangle">
                <solid Android:color="#349F37" />
                <corners Android:radius="6dp" />
                <stroke
                    Android:width="2dp"
                    Android:color="#50E751" />
            </shape>
        </item>
    </layer-list>
</item>

0
kelvincer