RapidFloatingActionButton 安卓前端组件开源项目

我要开发同款
匿名用户2015年05月04日
32阅读
开发技术Java
所属分类AndroidUI组件、手机/移动开发、Android UI 组件
授权协议Apache

作品详情

RapidFloatingActionButton是FloatingActionButton的快速实现,RapidFloatingActionButton(以下简称RFAB)  

使用方式:

依赖:AndroidBucket:基础工具包AndroidInject:注解框架

activity_main.xml:<com.wangjie.rapidfloatingactionbutton.RapidFloatingActionLayout      xmlns:rfal="https://schemas.android.com/apk/res-auto"      android:id="@+id/activity_main_rfal"      android:layout_width="match_parent"      android:layout_height="match_parent"      rfal:rfal_frame_color="#ffffff"      rfal:rfal_frame_alpha="0.7"      >  <com.wangjie.rapidfloatingactionbutton.RapidFloatingActionButton          xmlns:rfab="https://schemas.android.com/apk/res-auto"          android:id="@+id/activity_main_rfab"          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:layout_alignParentRight="true"          android:layout_alignParentBottom="true"          android:layout_marginRight="15dp"          android:layout_marginBottom="15dp"          android:padding="8dp"          rfab:rfab_size="normal"          rfab:rfab_drawable="@drawable/rfab__drawable_rfab_default"          rfab:rfab_color_normal="#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.wangjie.rapidfloatingactionbutton.RapidFloatingActionLayout>

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

属性解释RapidFloatingActionLayout:rfal_frame_color: 展开RFAB时候最外覆盖层的颜色,默认是纯白色  rfal_frame_alpha: 展开RFAB时候最外覆盖层的透明度(0 ~ 1),默认是0.7RapidFloatingActionButton: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轴偏移量。默认是0MainActivity:@AILayout(R.layout.activity_main)public class MainActivity extends AIActionBarActivity implements RapidFloatingActionContentLabelList.OnRapidFloatingActionContentListener {    @AIView(R.id.activity_main_rfal)    private RapidFloatingActionLayout rfaLayout;    @AIView(R.id.activity_main_rfab)    private RapidFloatingActionButton rfaBtn;    private RapidFloatingActionButtonHelper rfabHelper;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        RapidFloatingActionContentLabelList rfaContent = new RapidFloatingActionContentLabelList(context);        rfaContent.setOnRapidFloatingActionContentListener(this);        List<RFACLabelItem> items = new ArrayList<>();        items.add(new RFACLabelItem<Integer>()                        .setLabel("Github: wangjiegulu")                        .setResId(R.drawable.ic_launcher)                        .setIconNormalColor(0xffd84315)                        .setIconPressedColor(0xffbf360c)                        .setWrapper(0)        );        items.add(new RFACLabelItem<Integer>()                        .setLabel("tiantian.china.2@gmail.com")                        .setResId(R.drawable.ic_launcher)                        .setIconNormalColor(0xff4e342e)                        .setIconPressedColor(0xff3e2723)                        .setWrapper(1)        );        items.add(new RFACLabelItem<Integer>()                        .setLabel("WangJie")                        .setResId(R.drawable.ic_launcher)                        .setIconNormalColor(0xff056f00)                        .setIconPressedColor(0xff0d5302)                        .setWrapper(2)        );        items.add(new RFACLabelItem<Integer>()                        .setLabel("Compose")                        .setResId(R.drawable.ic_launcher)                        .setIconNormalColor(0xff283593)                        .setIconPressedColor(0xff1a237e)                        .setWrapper(3)        );        rfaContent                .setItems(items)                .setIconShadowRadius(ABTextUtil.dip2px(context, 5))                .setIconShadowColor(0xff999999)                .setIconShadowDy(ABTextUtil.dip2px(context, 5))        ;        rfabHelper = new RapidFloatingActionButtonHelper(                context,                rfaLayout,                rfaBtn,                rfaContent        ).build();    }    @Override    public void onRFACItemLabelClick(int position, RFACLabelItem item) {        Toast.makeText(getContext(), "clicked label: " + position, Toast.LENGTH_SHORT).show();        rfabHelper.toggleContent();    }    @Override    public void onRFACItemIconClick(int position, RFACLabelItem item) {        Toast.makeText(getContext(), "clicked icon: " + position, Toast.LENGTH_SHORT).show();        rfabHelper.toggleContent();    }}

除了xml中设置的RapidFloatingActionLayout和RapidFloatingActionButton之外,还需要RapidFloatingActionContent的实现类来填充和指定RFAB的内容和形式。这里提供了一个快速的RapidFloatingActionContent的实现解决方案:RapidFloatingActionContentLabelList。你可以加入多个item(RFACLabelItem,当然,不建议加太多的item,导致超过一个屏幕),然后设置每个item的颜色、图标、阴影甚至动画。它的效果可参考最上面的效果图片或者Google的Inbox的效果。除此之外,你还需要使用RapidFloatingActionButtonHelper来把以上所有零散的组件组合起来。

关于扩展:

如果你不喜欢默认提供的RapidFloatingActionContentLabelList,理论上你可以扩展自己的内容样式。方法是继承com.wangjie.rapidfloatingactionbutton.RapidFloatingActionContent,然后初始化内容布局和样式,并调用父类的setRootView(xxx);方法即可。如果你需要增加动画,可以重写如下方法:

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

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

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论