Mar*_*arc 18 animation android android-activity android-design-library androiddesignsupport
我正在使用com.android.support:design:23.1.0库中的浮动操作按钮(fab)组件来生成我的应用程序的工厂.
但是我第一次使用fab.hide()加载一个新活动,并在点击一个按钮后尝试通过fab.show()显示图标,那么fab没有动画.这仅在加载新活动后第一次发生.当我多次尝试隐藏并显示按钮时,它会正常动画.
这是什么问题?在加载活动后立即对其进行动画制作也很有魅力.
活动中的Java:
fabSend = (FloatingActionButton) findViewById(R.id.fabSend);
fabSend.hide();
CompoundButton.OnCheckedChangeListener changeChecker = new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked){
// FAB on
fabSend.show();
} else {
// FAB off
fabSend.hide();
}
}
};
Run Code Online (Sandbox Code Playgroud)
Layout.xml
<android.support.design.widget.FloatingActionButton
android:id="@+id/fabSend"
app:borderWidth="0dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_alignParentBottom="true"
android:layout_marginRight="@dimen/fab_margin"
android:layout_marginBottom="54dp"
android:src="@drawable/ic_check_white_24dp" />
Run Code Online (Sandbox Code Playgroud)
des*_*her 41
我遇到了同样的问题.在我的fab xml中visibility="gone",我试图通过代码显示fab fab.show() - 并且动画第一次没有工作.我把xml改成了visibility="invisible",问题解决了.
终于解决了这个问题.我设计了一个新类来延迟处理揭示动画.抓住它,初始化它,你很高兴.我发现了一个非常类似于标准fab.show()的动画,延迟50ms.
public static void showFabWithAnimation(final FloatingActionButton fab, final int delay) {
fab.setVisibility(View.INVISIBLE);
fab.setScaleX(0.0F);
fab.setScaleY(0.0F);
fab.setAlpha(0.0F);
fab.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
fab.getViewTreeObserver().removeOnPreDrawListener(this);
fab.postDelayed(new Runnable() {
@Override
public void run() {
fab.show();
}
}, delay);
return true;
}
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3576 次 |
| 最近记录: |