一个带动画效果的悬浮按钮。从下往上显示,从上往下消失。
代码比较简单,实现原理也比较简单。
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; } }
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/3270.html