[Android]RapidFloatingActionButton架構正式出爐,floatingactionbutton

來源:互聯網
上載者:User

[Android]RapidFloatingActionButton架構正式出爐,floatingactionbutton

以下內容為原創,歡迎轉載,轉載請註明

來自天天部落格:http://www.cnblogs.com/tiantianbyconan/p/4474748.html

RapidFloatingActionButton

Google推出了MaterialDesign的設計語言,其中FloatingActionButton就是一部分,但是Google卻沒有提供一個官方的FloatingActionButton控制項,網上找了幾個試用了下,但是始終沒有找到合適的,所以,自己動手豐衣足食了。

RapidFloatingActionButton(以下簡稱RFAB)是Floating Action Button的快速實現。

Github地址:https://github.com/wangjiegulu/RapidFloatingActionButton


  

使用方式:

依賴:
AndroidBucket(https://github.com/wangjiegulu/AndroidBucket):基礎工具包
AndroidInject(https://github.com/wangjiegulu/androidInject):註解架構

NineOldAndroids(https://github.com/JakeWharton/NineOldAndroids):相容低版本的動畫架構

activity_main.xml:
 1 <com.wangjie.rapidfloatingactionbutton.RapidFloatingActionLayout 2       xmlns:rfal="http://schemas.android.com/apk/res-auto" 3       android:id="@+id/activity_main_rfal" 4       android:layout_width="match_parent" 5       android:layout_height="match_parent" 6       rfal:rfal_frame_color="#ffffff" 7       rfal:rfal_frame_alpha="0.7" 8       > 9   <com.wangjie.rapidfloatingactionbutton.RapidFloatingActionButton10           xmlns:rfab="http://schemas.android.com/apk/res-auto"11           android:id="@+id/activity_main_rfab"12           android:layout_width="wrap_content"13           android:layout_height="wrap_content"14           android:layout_alignParentRight="true"15           android:layout_alignParentBottom="true"16           android:layout_marginRight="15dp"17           android:layout_marginBottom="15dp"18           android:padding="8dp"19           rfab:rfab_size="normal"20           rfab:rfab_drawable="@drawable/rfab__drawable_rfab_default"21           rfab:rfab_color_normal="#37474f"22           rfab:rfab_color_pressed="#263238"23           rfab:rfab_shadow_radius="7dp"24           rfab:rfab_shadow_color="#999999"25           rfab:rfab_shadow_dx="0dp"26           rfab:rfab_shadow_dy="5dp"27           />28 </com.wangjie.rapidfloatingactionbutton.RapidFloatingActionLayout>

在需要增加RFAB最外層使用<com.wangjie.rapidfloatingactionbutton.RapidFloatingActionLayout>,按鈕使用<com.wangjie.rapidfloatingactionbutton.RapidFloatingActionButton>

屬性解釋RapidFloatingActionLayout:
  rfal_frame_color: 展開RFAB時候最外覆蓋層的顏色,預設是純白色  rfal_frame_alpha: 展開RFAB時候最外覆蓋層的透明度(0 ~ 1),預設是0.7
RapidFloatingActionButton:
 rfab_size: RFAB的尺寸大小,只支援兩種尺寸(Material Design規範):          normal: 直徑56dp          mini: 直徑40dp  rfab_drawable: RFAB中間的表徵圖,預設是一個"+"表徵圖  rfab_color_normal: RFAB背景的普通狀態下的顏色。預設是白色  rfab_color_pressed: RFAB背景的觸摸按下狀態的顏色。預設顏色是"#dddddd"  rfab_shadow_radius: RFAB的陰影半徑。預設是0,表示沒有陰影  rfab_shadow_color: RFAB的陰影顏色。預設是透明,另外如果rfab_shadow_radius為0,則該屬性無效  rfab_shadow_dx: RFAB的陰影X軸位移量。預設是0  rfab_shadow_dy: RFAB的陰影Y軸位移量。預設是0
MainActivity:
 1 @AILayout(R.layout.activity_main) 2 public class MainActivity extends AIActionBarActivity implements RapidFloatingActionContentLabelList.OnRapidFloatingActionContentListener { 3  4     @AIView(R.id.activity_main_rfal) 5     private RapidFloatingActionLayout rfaLayout; 6     @AIView(R.id.activity_main_rfab) 7     private RapidFloatingActionButton rfaBtn; 8     private RapidFloatingActionButtonHelper rfabHelper; 9 10     @Override11     protected void onCreate(Bundle savedInstanceState) {12         super.onCreate(savedInstanceState);13 14         RapidFloatingActionContentLabelList rfaContent = new RapidFloatingActionContentLabelList(context);15         rfaContent.setOnRapidFloatingActionContentListener(this);16         List<RFACLabelItem> items = new ArrayList<>();17         items.add(new RFACLabelItem<Integer>()18                         .setLabel("Github: wangjiegulu")19                         .setResId(R.drawable.ic_launcher)20                         .setIconNormalColor(0xffd84315)21                         .setIconPressedColor(0xffbf360c)22                         .setWrapper(0)23         );24         items.add(new RFACLabelItem<Integer>()25                         .setLabel("tiantian.china.2@gmail.com")26                         .setResId(R.drawable.ic_launcher)27                         .setIconNormalColor(0xff4e342e)28                         .setIconPressedColor(0xff3e2723)29                         .setWrapper(1)30         );31         items.add(new RFACLabelItem<Integer>()32                         .setLabel("WangJie")33                         .setResId(R.drawable.ic_launcher)34                         .setIconNormalColor(0xff056f00)35                         .setIconPressedColor(0xff0d5302)36                         .setWrapper(2)37         );38         items.add(new RFACLabelItem<Integer>()39                         .setLabel("Compose")40                         .setResId(R.drawable.ic_launcher)41                         .setIconNormalColor(0xff283593)42                         .setIconPressedColor(0xff1a237e)43                         .setWrapper(3)44         );45         rfaContent46                 .setItems(items)47                 .setIconShadowRadius(ABTextUtil.dip2px(context, 5))48                 .setIconShadowColor(0xff999999)49                 .setIconShadowDy(ABTextUtil.dip2px(context, 5))50         ;51 52         rfabHelper = new RapidFloatingActionButtonHelper(53                 context,54                 rfaLayout,55                 rfaBtn,56                 rfaContent57         ).build();58 59     }60 61     @Override62     public void onRFACItemLabelClick(int position, RFACLabelItem item) {63         Toast.makeText(getContext(), "clicked label: " + position, Toast.LENGTH_SHORT).show();64         rfabHelper.toggleContent();65     }66 67     @Override68     public void onRFACItemIconClick(int position, RFACLabelItem item) {69         Toast.makeText(getContext(), "clicked icon: " + position, Toast.LENGTH_SHORT).show();70         rfabHelper.toggleContent();71     }72 }

除了xml中設定的RapidFloatingActionLayoutRapidFloatingActionButton之外,還需要RapidFloatingActionContent的實作類別來填充和指定RFAB的內容和形式。
這裡提供了一個快速的RapidFloatingActionContent的實現解決方案:RapidFloatingActionContentLabelList。你可以加入多個item(RFACLabelItem,當然,不建議加太多的item,導致超過一個螢幕),然後設定每個item的顏色、表徵圖、陰影、label的背景圖片、字型大小顏色甚至動畫。
它的效果可參考最上面的片或者Google的Inbox的效果。
除此之外,你還需要使用RapidFloatingActionButtonHelper來把以上所有零散的組件組合起來。

關於擴充:

如果你不喜歡預設提供的RapidFloatingActionContentLabelList,理論上你可以擴充自己的內容樣式。方法是繼承com.wangjie.rapidfloatingactionbutton.RapidFloatingActionContent,然後初始化內容布局和樣式,並調用父類的setRootView(xxx);方法即可。如果你需要增加動畫,可以重寫如下方法:

public void onExpandAnimator(AnimatorSet animatorSet);public void onCollapseAnimator(AnimatorSet animatorSet);

把需要的Animator增加到animatorSet中即可
另外,作者也會不定期增加更多的RapidFloatingActionContent的擴充

License
Copyright 2015 Wang JieLicensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License at   http://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License.

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.