Смотреть тень андроид



Я искал вокруг, и я не мог найти правильный способ сделать это. Я хочу иметь следующие теневые эффекты на мои взгляды:
enter image description here



enter image description here



честно говоря, я не знаю, если этот второй делается путем применения теневого эффекта. Есть идеи?

476   10  

10 ответов:

Я знаю, что на этот вопрос уже был дан ответ, но я хочу, чтобы вы знали, что я нашел drawable on Android Studio это очень похоже на фотографии, которые у вас есть в вопросе: Взгляните на это:

android:background="@drawable/abc_menu_dropdown_panel_holo_light"

это выглядит так:

enter image description here

надеюсь, что это будет полезно

Edit

опция выше предназначена для более старых версий Android Studio так что вы можете не найти его. Для более новых версии:

android:background="@android:drawable/dialog_holo_light_frame"

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

enter image description here

не забудьте сохранить его как (например: my_background.9.png)

читать документацию: Draw 9-patch

Edit 2

еще лучше и менее трудолюбивое решение-использовать CardView и set app:cardPreventCornerOverlap="false" для предотвращения виды для перекрытия границ:

<android.support.v7.widget.CardView
    android:id="@+id/card_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:cardCornerRadius="2dp"
    app:cardElevation="2dp"
    app:cardPreventCornerOverlap="false"
    app:contentPadding="0dp">

    <!-- your layout stuff here -->

</android.support.v7.widget.CardView>

также убедитесь, что вы включили последнюю версию в build.gradle ток

compile 'com.android.support:cardview-v7:26.0.0'

Я использую Android Studio 0.8.6 и я не мог найти:

android:background="@drawable/abc_menu_dropdown_panel_holo_light"

Так что я нашел это:

android:background="@android:drawable/dialog_holo_light_frame"

и выглядит это так:

enter image description here

создать card_background.xml в папке res / drawable со следующим кодом:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

<item>
    <shape android:shape="rectangle">
        <solid android:color="#BDBDBD"/>
        <corners android:radius="5dp"/>
    </shape>
</item>

<item
    android:left="0dp"
    android:right="0dp"
    android:top="0dp"
    android:bottom="2dp">
    <shape android:shape="rectangle">
        <solid android:color="#ffffff"/>
        <corners android:radius="5dp"/>
    </shape>
</item>
</layer-list>

затем добавьте следующий код к элементу, к которому вы хотите карту разметки

android:background="@drawable/card_background"

следующая строка определяет цвет тени для карты

<solid android:color="#BDBDBD"/>

CardView дает правда тень в android 5+ и он имеет библиотеку поддержки. Просто оберните свой взгляд с ним, и все готово.

<android.support.v7.widget.CardView>
     <MyLayout>
</android.support.v7.widget.CardView>

это требует следующей зависимости.

dependencies {
    ...
    compile 'com.android.support:cardview-v7:21.0.+'
}

положить фон @android:drawable/dialog_holo_light_frame, дает тень, но вы не можете изменить цвет фона или стиль границы, поэтому лучше воспользоваться его тенью, в то время как все еще можете поместить фон через layer-list

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!--the shadow comes from here-->
    <item
        android:bottom="0dp"
        android:drawable="@android:drawable/dialog_holo_light_frame"
        android:left="0dp"
        android:right="0dp"
        android:top="0dp">

    </item>

    <item
        android:bottom="0dp"
        android:left="0dp"
        android:right="0dp"
        android:top="0dp">
        <!--whatever you want in the background, here i preferred solid white -->
        <shape android:shape="rectangle">
            <solid android:color="@android:color/white" />

        </shape>
    </item>
</layer-list>

сохраните его в папке drawable под say shadow.xml

чтобы назначить его представлению, в файле макета xml установите его фон

android:background="@drawable/shadow"

используйте свойство elevation для достижения эффекта тени:

<View ...
    android:elevation="2dp"/>

Это только для использования после v21, проверьте эту ссылку:http://developer.android.com/training/material/shadows-clipping.html

Это может быть поздно, но для тех, кто все еще ищет ответ на этот вопрос, я нашел проект на Git hub, и это единственный, который действительно соответствует моим потребностям. android-materialshadowninepatch

просто добавьте эту строку в свою сборку.gradle dependency

compile 'com.h6ah4i.android.materialshadowninepatch:materialshadowninepatch:0.6.3'

ура. большой палец вверх для создателя ! happycodings

Если вам нужно правильно применить тени, то вы должны сделать следующее.

рассмотрим этот вид, определенный с фоном drawable:

<TextView
    android:id="@+id/myview"
    ...
    android:elevation="2dp"
    android:background="@drawable/myrect" />

рисуемый фон определяется как прямоугольник с закругленными углами:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle">
    <solid android:color="#42000000" />
    <corners android:radius="5dp" />
</shape>

это рекомендуемый способ применения теней проверить это https://developer.android.com/training/material/shadows-clipping.html#Shadows

используйте свойство elevation для shadow affect:

<YourView
    ...
    android:elevation="3dp"/>

используйте эту форму в качестве фона :

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@android:drawable/dialog_holo_light_frame"/>

    <item>
        <shape android:shape="rectangle">
            <corners android:radius="1dp" />
            <solid android:color="@color/gray_200" />
        </shape>
    </item>

</layer-list>

Comments

    Ничего не найдено.