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;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值