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; }}

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐