Android自定义悬浮按钮效果实现,带移动效果
2018-07-20 来源:open-open
一个带动画效果的悬浮按钮。从下往上显示,从上往下消失。
代码比较简单,实现原理也比较简单。
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; } }
标签: 代码
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
最新资讯
热门推荐