RapidFloatigActioButto是FloatigActioButto的快速实现,RapidFloatigActioButto(以下简称RFAB)
使用方式:依赖:AdroidBucket:基础工具包AdroidIject:注解框架
activity_mai.xml:<com.wagjie.rapidfloatigactiobutto.RapidFloatigActioLayout xmls:rfal="https://schemas.adroid.com/apk/res-auto" adroid:id="@+id/activity_mai_rfal" adroid:layout_width="match_paret" adroid:layout_height="match_paret" rfal:rfal_frame_color="#ffffff" rfal:rfal_frame_alpha="0.7" > <com.wagjie.rapidfloatigactiobutto.RapidFloatigActioButto xmls:rfab="https://schemas.adroid.com/apk/res-auto" adroid:id="@+id/activity_mai_rfab" adroid:layout_width="wrap_cotet" adroid:layout_height="wrap_cotet" adroid:layout_aligParetRight="true" adroid:layout_aligParetBottom="true" adroid:layout_margiRight="15dp" adroid:layout_margiBottom="15dp" adroid:paddig="8dp" rfab:rfab_size="ormal" rfab:rfab_drawable="@drawable/rfab__drawable_rfab_default" rfab:rfab_color_ormal="#37474f" rfab:rfab_color_pressed="#263238" rfab:rfab_shadow_radius="7dp" rfab:rfab_shadow_color="#999999" rfab:rfab_shadow_dx="0dp" rfab:rfab_shadow_dy="5dp" /></com.wagjie.rapidfloatigactiobutto.RapidFloatigActioLayout>在需要增加RFAB最外层使用<com.wagjie.rapidfloatigactiobutto.RapidFloatigActioLayout>,按钮使用<com.wagjie.rapidfloatigactiobutto.RapidFloatigActioButto>
属性解释RapidFloatigActioLayout:rfal_frame_color: 展开RFAB时候最外覆盖层的颜色,默认是纯白色 rfal_frame_alpha: 展开RFAB时候最外覆盖层的透明度(0 ~ 1),默认是0.7RapidFloatigActioButto:rfab_size: RFAB的尺寸大小,只支持两种尺寸(Material Desig规范): ormal: 直径56dp mii: 直径40dp rfab_drawable: RFAB中间的图标,默认是一个"+"图标 rfab_color_ormal: 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轴偏移量。默认是0MaiActivity:@AILayout(R.layout.activity_mai)public class MaiActivity exteds AIActioBarActivity implemets RapidFloatigActioCotetLabelList.ORapidFloatigActioCotetListeer { @AIView(R.id.activity_mai_rfal) private RapidFloatigActioLayout rfaLayout; @AIView(R.id.activity_mai_rfab) private RapidFloatigActioButto rfaBt; private RapidFloatigActioButtoHelper rfabHelper; @Override protected void oCreate(Budle savedIstaceState) { super.oCreate(savedIstaceState); RapidFloatigActioCotetLabelList rfaCotet = ew RapidFloatigActioCotetLabelList(cotext); rfaCotet.setORapidFloatigActioCotetListeer(this); List<RFACLabelItem> items = ew ArrayList<>(); items.add(ew RFACLabelItem<Iteger>() .setLabel("Github: wagjiegulu") .setResId(R.drawable.ic_laucher) .setIcoNormalColor(0xffd84315) .setIcoPressedColor(0xffbf360c) .setWrapper(0) ); items.add(ew RFACLabelItem<Iteger>() .setLabel("tiatia.chia.2@gmail.com") .setResId(R.drawable.ic_laucher) .setIcoNormalColor(0xff4e342e) .setIcoPressedColor(0xff3e2723) .setWrapper(1) ); items.add(ew RFACLabelItem<Iteger>() .setLabel("WagJie") .setResId(R.drawable.ic_laucher) .setIcoNormalColor(0xff056f00) .setIcoPressedColor(0xff0d5302) .setWrapper(2) ); items.add(ew RFACLabelItem<Iteger>() .setLabel("Compose") .setResId(R.drawable.ic_laucher) .setIcoNormalColor(0xff283593) .setIcoPressedColor(0xff1a237e) .setWrapper(3) ); rfaCotet .setItems(items) .setIcoShadowRadius(ABTextUtil.dip2px(cotext, 5)) .setIcoShadowColor(0xff999999) .setIcoShadowDy(ABTextUtil.dip2px(cotext, 5)) ; rfabHelper = ew RapidFloatigActioButtoHelper( cotext, rfaLayout, rfaBt, rfaCotet ).build(); } @Override public void oRFACItemLabelClick(it positio, RFACLabelItem item) { Toast.makeText(getCotext(), "clicked label: " + positio, Toast.LENGTH_SHORT).show(); rfabHelper.toggleCotet(); } @Override public void oRFACItemIcoClick(it positio, RFACLabelItem item) { Toast.makeText(getCotext(), "clicked ico: " + positio, Toast.LENGTH_SHORT).show(); rfabHelper.toggleCotet(); }}除了xml中设置的RapidFloatigActioLayout和RapidFloatigActioButto之外,还需要RapidFloatigActioCotet的实现类来填充和指定RFAB的内容和形式。这里提供了一个快速的RapidFloatigActioCotet的实现解决方案:RapidFloatigActioCotetLabelList。你可以加入多个item(RFACLabelItem,当然,不建议加太多的item,导致超过一个屏幕),然后设置每个item的颜色、图标、阴影甚至动画。它的效果可参考最上面的效果图片或者Google的Ibox的效果。除此之外,你还需要使用RapidFloatigActioButtoHelper来把以上所有零散的组件组合起来。
关于扩展:如果你不喜欢默认提供的RapidFloatigActioCotetLabelList,理论上你可以扩展自己的内容样式。方法是继承com.wagjie.rapidfloatigactiobutto.RapidFloatigActioCotet,然后初始化内容布局和样式,并调用父类的setRootView(xxx);方法即可。如果你需要增加动画,可以重写如下方法:
public void oExpadAimator(AimatorSet aimatorSet);public void oCollapseAimator(AimatorSet aimatorSet);把需要的Aimator增加到aimatorSet中即可另外,作者也会不定期增加更多的RapidFloatigActioCotet的扩展
评论