FloatingActionButton class mainly extends the VisibilityAwareImageButton
which extends the imagebutton
. So, from scratch when you start you should start from extending imagebutton. Then when you get VisibilityAwareImageButton
you can create your FloatingButton
class. Code for VisibilityAwareImageButton
is given below
package android.support.design.widget;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ImageButton;
class VisibilityAwareImageButton extends ImageButton {
private int mUserSetVisibility;
public VisibilityAwareImageButton(Context context) {
this(context, null);
}
public VisibilityAwareImageButton(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public VisibilityAwareImageButton(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
mUserSetVisibility = getVisibility();
}
@Override
public void setVisibility(int visibility) {
internalSetVisibility(visibility, true);
}
final void internalSetVisibility(int visibility, boolean fromUser) {
super.setVisibility(visibility);
if (fromUser) {
mUserSetVisibility = visibility;
}
}
final int getUserSetVisibility() {
return mUserSetVisibility;
}
}
How they created the Floating button:
well the source code is available in below link from google
https://android.googlesource.com/platform/frameworks/support/+/master/design/src/android/support/design/widget/FloatingActionButton.java?autodive=0%2F%2F
And the VisibilityAwareImageButton
code is taken from below link
https://github.com/android/platform_frameworks_support/blob/master/design/base/android/support/design/widget/VisibilityAwareImageButton.java