Android Support Design 控件 FloatingActionButton

 经常刚可以看到悬浮控件,比如印象笔记的下面那个绿色的悬浮按钮,这个控件非常简单也是来自Design Support Library中同理需要在Android studio中加入依赖库:design库

具体操作可以参考我前一篇http://blog.****.net/xsf50717/article/details/49405309

使用起来也很简单,下面是效果图

Android Support Design 控件 FloatingActionButton最下角是我真机的悬浮按钮,直接忽略吧

首先就是布局文件

[html] view plain copy
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:app="http://schemas.android.com/apk/res-auto"  
  3.     xmlns:tools="http://schemas.android.com/tools"  
  4.     android:layout_width="match_parent"  
  5.     android:layout_height="match_parent"  
  6.     tools:context=".MainActivity">  
  7.   
  8.     <ListView  
  9.         android:id="@+id/id_lv_msgs"  
  10.         android:layout_width="match_parent"  
  11.         android:layout_height="match_parent"  
  12.   
  13.   
  14.         />  
  15.   
  16.     <android.support.design.widget.FloatingActionButton  
  17.         android:id="@+id/id_fab_toSend"  
  18.         android:layout_width="wrap_content"  
  19.         android:layout_height="wrap_content"  
  20.         android:layout_alignParentBottom="true"  
  21.         android:layout_centerHorizontal="true"  
  22.         android:layout_marginBottom="@dimen/fab_margin"  
  23.         android:src="@drawable/icon_to_send"  
  24.         app:backgroundTint="#0ddcff"  
  25.         app:borderWidth="0dp">  
  26.   
  27.   
  28.     </android.support.design.widget.FloatingActionButton>  
  29.   
  30. </RelativeLayout>  

加入了app空间的一些属性

这里要注意的是:
在5.x的设备上运行,你会发现一些问题(测试系统5.0):
【没有阴影】记得设置app:borderWidth="0dp"。
按上述设置后,阴影出现了,但是竟然有矩形的边界(未设置margin时,可以看出)
需要设置一个margin的值。在5.0之前,会默认就有一个外边距(不过并非是margin,只是效果相同)。
因此

    添加属性app:borderWidth="0dp"
    对于5.x设置一个合理的margin,在values dimen文件
<dimen name="fab_margin">16dp</dimen>

要是还想炫酷点可以在自己设置selector+shape加点特效

主文件也很简单

[java] view plain copy
  1. package com.elvis.floatactionbuttondemo;  
  2.   
  3. import android.os.Bundle;  
  4. import android.support.design.widget.FloatingActionButton;  
  5. import android.support.v7.app.AppCompatActivity;  
  6. import android.view.Menu;  
  7. import android.view.MenuItem;  
  8. import android.view.View;  
  9. import android.widget.ArrayAdapter;  
  10. import android.widget.ListView;  
  11. import android.widget.Toast;  
  12.   
  13. public class MainActivity extends AppCompatActivity {  
  14.     private ListView mLvMsgs;  
  15.     private FloatingActionButton mFabToSend;  
  16.   
  17.   
  18.     @Override  
  19.     protected void onCreate(Bundle savedInstanceState) {  
  20.         super.onCreate(savedInstanceState);  
  21.         setContentView(R.layout.activity_main);  
  22.         initViews();  
  23.         intiEvent();  
  24.     }  
  25.   
  26.     private void intiEvent() {  
  27.   
  28.         mFabToSend.setOnClickListener(new View.OnClickListener() {  
  29.             @Override  
  30.             public void onClick(View v) {  
  31.                 Toast.makeText(getApplicationContext(), "CLICK", Toast.LENGTH_SHORT).show();  
  32.             }  
  33.         });  
  34.     }  
  35.   
  36.     private void initViews() {  
  37.         mLvMsgs = (ListView) findViewById(R.id.id_lv_msgs);  
  38.         mFabToSend = (FloatingActionButton) findViewById(R.id.id_fab_toSend);  
  39.         mLvMsgs.setAdapter(new ArrayAdapter<String>(this,R.layout.item_msg,COUNTRIES));  
  40.     }  
  41.     //数据  
  42.     private  static final String[] COUNTRIES=new String[]{"A","B","C","D"};  
  43.   
  44.     @Override  
  45.     public boolean onCreateOptionsMenu(Menu menu) {  
  46.         // Inflate the menu; this adds items to the action bar if it is present.  
  47.         getMenuInflater().inflate(R.menu.menu_main, menu);  
  48.         return true;  
  49.     }  
  50.   
  51.     @Override  
  52.     public boolean onOptionsItemSelected(MenuItem item) {  
  53.         // Handle action bar item clicks here. The action bar will  
  54.         // automatically handle clicks on the Home/Up button, so long  
  55.         // as you specify a parent activity in AndroidManifest.xml.  
  56.         int id = item.getItemId();  
  57.   
  58.         //noinspection SimplifiableIfStatement  
  59.         if (id == R.id.action_settings) {  
  60.             return true;  
  61.         }  
  62.   
  63.         return super.onOptionsItemSelected(item);  
  64.     }  
  65. }  

比较简单,不贴demo了


转载:http://blog.****.net/xsf50717/article/details/49407867