Android材质圆形button

http://imgur.com/KafNkf8 Android L

那么,怎么会有人去实现Android L中展示的圆形button呢? 还有什么是圆形button的技术名称,XML代码将不胜感激。

该button被称为FAB(浮动操作button),制作起来相当简单。

Activity.java

public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layoutfab); //Outline int size = getResources().getDimensionPixelSize(R.dimen.fab_size); Outline outline = new Outline(); outline.setOval(0, 0, size, size); findViewById(R.id.fab).setOutline(outline); } } 

anim.xml

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

dimens.xml

 <resources> <dimen name="fab_size">56dp</dimen> <dimen name="button_elevation">2dp</dimen> <dimen name="button_press_elevation">4dp</dimen> </resources> 

和您的布局文件来定义FABbutton。

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <ImageButton android:id="@+id/fab" android:layout_alignParentRight="true" android:layout_alignParentBottom="true" android:layout_width="@dimen/fab_size" android:layout_height="@dimen/fab_size" android:layout_gravity="bottom|right" android:layout_marginRight="16dp" android:layout_marginBottom="16dp" android:background="@drawable/ripple" android:stateListAnimator="@anim/anim" android:src="@drawable/ic_action_add" android:elevation="4dp" /> </RelativeLayout> 

最后,当你按下button时,波纹会受到影响。 ripple.xml

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

享受你的新FAB。 请记住这仅适用于Android L!

编辑这已更新在: https : //stackoverflow.com/a/24548910/4352176

有一个更容易和所有版本(V7)的方式:

 <ImageButton style="@style/AppTheme" android:layout_width="60dp" android:layout_height="60dp" android:text="New Button" android:id="@+id/OkBt" android:elevation="10dp" android:src="@drawable/ic_keyboard_return_black_36dp" android:background="@drawable/circle" /> 

看风格=“@风格/ AppTheme”我为老版本设定的风格是:

 <style name="AppTheme" parent="AppTheme.Base"/> <style name="AppTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar"> 

对于Android棒棒糖是:

 <style name="AppTheme" parent="android:Theme.Material.Light.DarkActionBar"> 

可绘制圆的形状是:

 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="#81D4FA"/> </shape> 

它适用于所有的Android版本,它自动使棒棒糖的圆阴影。

你需要为它定义另一个drawable。 实际上这很简单,但是没有logging。

 <?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="?android:colorControlHighlight"> <item> <shape android:shape="oval"> <solid android:color="?android:colorAccent" /> </shape> </item> </ripple> 

我从这里得到这个: https : //github.com/romainguy/google-io-2014/blob/7c174c7901d8cd2601807dcd17f3df7ed88fbee9/app/src/main/res/drawable/info_background.xml

不要忘记设置高程和轮廓