CircularFloatingActionMenu动画

时间:2016-11-06 07:27:23

标签: java android xml animation floating-action-button

我已经设置了FAB动画的修复高度和宽度。当设备屏幕分辨率很小时显示为大的问题。

以下设备屏幕分辨率看起来不错:

enter image description here 设备屏幕下方分辨率太小:    enter image description here

在代码段

下面
FloatingActionButton fab, fab1, fab2, fab3;`
private boolean FAB_Status = false,

// Initilize FAB button

fab = (FloatingActionButton) getView().findViewById(R.id.fab);
fab1 = (FloatingActionButton) getView().findViewById(R.id.fab_1);
fab2 = (FloatingActionButton) getView().findViewById(R.id.fab_2);
fab3 = (FloatingActionButton) getView().findViewById(R.id.fab_3);

执行点击操作以在FAB中显示SubActionButton:

fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            if (FAB_Status == false) {
                //Display FAB menu
                expandFAB();
                FAB_Status = true;
            } else {
                //Close FAB menu
                hideFAB();
                FAB_Status = false;
            }
        }
    });

用于扩展FAB的用户定义方法:

  private void expandFAB() {
    //Floating Action Button 1
    fab.setImageResource(R.drawable.ic_fab_click);
    FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) fab1.getLayoutParams();
    layoutParams.rightMargin += (int) (fab1.getWidth() * 1.7);
    layoutParams.bottomMargin += (int) (fab1.getHeight() * 0.25);
    fab1.setLayoutParams(layoutParams);
    fab1.startAnimation(show_fab_1);
    fab1.setClickable(true);

    //Floating Action Button 3 
    FrameLayout.LayoutParams layoutParams2 = (FrameLayout.LayoutParams) fab2.getLayoutParams();
    layoutParams2.rightMargin += (int) (fab2.getWidth() * 1.5);
    layoutParams2.bottomMargin += (int) (fab2.getHeight() * 1.5);
    fab2.setLayoutParams(layoutParams2);
    fab2.startAnimation(show_fab_2);
    fab2.setClickable(true);

    //Floating Action Button 3
    FrameLayout.LayoutParams layoutParams3 = (FrameLayout.LayoutParams) fab3.getLayoutParams();
    layoutParams3.rightMargin += (int) (fab3.getWidth() * 0.25);
    layoutParams3.bottomMargin += (int) (fab3.getHeight() * 1.7);
    fab3.setLayoutParams(layoutParams3);
    fab3.startAnimation(show_fab_3);
    fab3.setClickable(true);
}

用于隐藏FAB的用户定义方法:

private void hideFAB() {
    fab.setImageResource(R.drawable.ic_content_add);
    //Floating Action Button 1
    FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) fab1.getLayoutParams();
    layoutParams.rightMargin -= (int) (fab1.getWidth() * 1.7);
    layoutParams.bottomMargin -= (int) (fab1.getHeight() * 0.25);
    fab1.setLayoutParams(layoutParams);
    fab1.startAnimation(hide_fab_1);
    fab1.setClickable(false);

    //Floating Action Button 2
    if (expertStatus != null && expertStatus.equals("A")) {
        FrameLayout.LayoutParams layoutParams2 = (FrameLayout.LayoutParams) fab2.getLayoutParams();
        layoutParams2.rightMargin -= (int) (fab2.getWidth() * 1.5);
        layoutParams2.bottomMargin -= (int) (fab2.getHeight() * 1.5);
        fab2.setLayoutParams(layoutParams2);
        fab2.startAnimation(hide_fab_2);
        fab2.setClickable(false);
    }


    //Floating Action Button 3
    FrameLayout.LayoutParams layoutParams3 = (FrameLayout.LayoutParams) fab3.getLayoutParams();
    layoutParams3.rightMargin -= (int) (fab3.getWidth() * 0.25);
    layoutParams3.bottomMargin -= (int) (fab3.getHeight() * 1.7);
    fab3.setLayoutParams(layoutParams3);
    fab3.startAnimation(hide_fab_3);
    fab3.setClickable(false);
}

这是关于我已将高度和宽度设置为固定的问题,如

 layoutParams3.rightMargin -= (int) (fab3.getWidth() * 0.25);
 ayoutParams3.bottomMargin -= (int) (fab3.getHeight() * 1.7);

我想根据屏幕分辨率动态设置。

0 个答案:

没有答案