欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Android自定义悬浮按钮效果实现,带移动效果,android自定义,一个带动画效果的悬浮按钮

来源: javaer 分享于  点击 39404 次 点评:189

Android自定义悬浮按钮效果实现,带移动效果,android自定义,一个带动画效果的悬浮按钮


一个带动画效果的悬浮按钮。从下往上显示,从上往下消失。

代码比较简单,实现原理也比较简单。

public class MainActivity extends Activity {    private Button btn_hide,btn_show;    private Floatingbutton floatingButton ;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);         btn_hide=(Button)findViewById(R.id.btn_hide);            btn_show=(Button)findViewById(R.id.btn_show);             floatingButton = (Floatingbutton) findViewById(R.id.button_floating_action);            btn_hide.setOnClickListener(new OnClickListener() {                @Override                public void onClick(View v) {                    // TODO Auto-generated method stub                     floatingButton.hide();                }            });            btn_show.setOnClickListener(new OnClickListener() {                @Override                public void onClick(View v) {                    // TODO Auto-generated method stub                     floatingButton.show();                }            });    }}public class Floatingbutton extends ImageButton {    private Boolean isShow = false;     private static final int TRANSLATE_DURATION_MILLIS = 200;    private final Interpolator mInterpolator = new AccelerateDecelerateInterpolator();    public Floatingbutton(Context context) {        super(context);    }    public Floatingbutton(Context context, AttributeSet attrs) {        super(context, attrs);        init(context, attrs);    }    public Floatingbutton(Context context, AttributeSet attrs, int defStyle) {        super(context, attrs, defStyle);        init(context, attrs);    }    public void init(Context context, AttributeSet attrs) {        show();    }    public void show() {        if (!isShow) {            isShow = true;            toggle();        }    }    public void hide() {        if (isShow) {            isShow = false;            toggle();        }    }    private void toggle() {          int height = getHeight();          int translationY = isShow ? 0 : height + getMarginBottom();          animate().setInterpolator(mInterpolator)          .setDuration(TRANSLATE_DURATION_MILLIS)          .translationY(translationY);    }    private int getMarginBottom() {        int marginBottom = 0;        final ViewGroup.LayoutParams layoutParams = getLayoutParams();        if (layoutParams instanceof ViewGroup.MarginLayoutParams) {            marginBottom = ((ViewGroup.MarginLayoutParams) layoutParams).bottomMargin;        }        return marginBottom;    }}
相关栏目:

用户点评