2015-02-14 3 views
0

Я довольно новичок в разработке Android и да, я пробовал много, чтобы исправить это, прежде чем спрашивать.получить округлую высоту тени на FloatingActionButton (v21)

Так что я пытаюсь реализовать FloatingActionButton (только для v21 для простоты), и я просто не могу получить, чтобы высота тени была закруглена.

Вот строки кода у меня есть уже:

В основной деятельности .java (названный обзор):

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_overview); 
     ImageButton fabbutton = (ImageButton) findViewById(R.id.fab); 

     ViewOutlineProvider viewOutlineProvider = new ViewOutlineProvider() { 
     @Override 
     public void getOutline(View view, Outline outline) { 
      int size = getResources().getDimensionPixelSize(R.dimen.round_button_diameter); 
      outline.setOval(0, 0, size, size); 
     } 
}; 
fabbutton.setOutlineProvider(viewOutlineProvider); 

Основная деятельность .xml:

<ImageButton 
    android:id="@+id/fab" 
    android:layout_width="@dimen/round_button_diameter" 
    android:layout_height="@dimen/round_button_diameter" 
    android:layout_gravity="end|bottom" 
    android:background="@drawable/oval_ripple" 
    android:src="@android:drawable/ic_input_add" 
    android:tint="@android:color/white" 
    android:elevation="@dimen/elevation_low" 
    android:stateListAnimator="@anim/button_elevation" 
    android:layout_alignBottom="@+id/expandableListView" 
    android:layout_alignEnd="@+id/expandableListView" 
    android:layout_marginRight="@dimen/add_button_margin" 
    android:layout_marginBottom="@dimen/add_button_margin" 
    android:contentDescription="@string/fab" 
    android:cropToPadding="false" /> 

dimens.xml

<dimen name="round_button_diameter">56dp</dimen> 
<dimen name="add_button_margin">16dp</dimen> 
<dimen name="elevation_low">8dp</dimen> 
<dimen name="elevation_high">14dp</dimen> 

oval_ripple.xml

<ripple xmlns:android="http://schemas.android.com/apk/res/android" 
android:color="?android:colorControlHighlight"> 
<item> 
    <shape android:shape="oval"> 
     <solid android:color="#fff1d744"/> 
    </shape> 
</item> 

button_elevation.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_pressed="true"> 
    <objectAnimator 
     android:propertyName="translationZ" 
     android:duration="@android:integer/config_shortAnimTime" 
     android:valueFrom="8dp" 
     android:valueTo="14dp" 
     android:valueType="floatType"/> 
</item> 
<item> 
    <objectAnimator 
     android:propertyName="translationZ" 
     android:duration="@android:integer/config_shortAnimTime" 
     android:valueFrom="14dp" 
     android:valueTo="8dp" 
     android:valueType="floatType"/> 
</item> 

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

Поздравления из Германии и благодарность за ответы. :)

+0

Вы попробовали мое решение? –

ответ

0

Почему бы вам не использовать библиотеку?

Добавьте эту строку в вас build.gradle

dependencies { 
    ... 
    compile 'com.getbase:floatingactionbutton:1.3.0' 
    ... 
} 

и в макете использования XML-файла следующим образом:

<com.getbase.floatingactionbutton.FloatingActionButton 
    android:id="@+id/common_ring_button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentRight="true" 
    android:layout_marginBottom="10dp" 
    android:layout_marginEnd="10dp" 
    android:layout_marginRight="10dp" 
    fab:fab_colorNormal="#FF2222" 
    fab:fab_colorPressed="#FF0000" 
    fab:fab_icon="android:drawable/ic_input_add"/> 

Но вы помните, что вы должны положить FloatingButton внутри RelativeLayout

Если у вас возникли проблемы с запросом в комментарии :)

+0

Я действительно не знаю, как использовать библиотеки: D Я добавил ваш код, но знаю, что Android Studio говорит мне в «FloatingActionButton.class», что источник не найден –

+0

Добавили ли вы зависимости для build.gradle? –

+0

Да, я это сделал. После перезагрузки Android Studio это сработало. Знаете ли вы, как изменить цвет значка плюса? У меня есть изменение самого ресурса или есть ли строка xml? И как мне получить эффект пульсации сейчас? Спасибо за вашу помощь, я очень ценю это :) –