带FAB按钮的Android过渡
根据这些指导原则,我想在活动开始和结束时显示/隐藏我的FAB按钮。带FAB按钮的Android过渡,android,transition,Android,Transition,根据这些指导原则,我想在活动开始和结束时显示/隐藏我的FAB按钮。 我使用共享元素活动转换来显示我的详细活动,如下所示: CardAdapter.java @Override public void onBindViewHolder(CardViewHolder holder, int position) { [...] holder.getBinding().setVariable(BR.handler, mHandler); holder.getBinding()
我使用共享元素活动转换来显示我的详细活动,如下所示:
CardAdapter.java
@Override
public void onBindViewHolder(CardViewHolder holder, int position) {
[...]
holder.getBinding().setVariable(BR.handler, mHandler);
holder.getBinding().executePendingBindings();
}
java
public class CardHandler {
private Activity mActivity;
CardHandler(Activity activity) {
mActivity = activity;
}
public void onCardClick(View view, Module module) {
final Context context = view.getContext();
final Intent intent = new Intent(context, DetailActivity.class);
intent.putExtra(DetailActivity.MODULE, module);
View image = view.findViewById(R.id.card_image);
View description = view.findViewById(R.id.card_description);
Pair<View, String> p1 = Pair.create(image, "image");
Pair<View, String> p2 = Pair.create(description, "description");
ActivityOptionsCompat options = ActivityOptionsCompat
.makeSceneTransitionAnimation(mActivity, p1, p2);
context.startActivity(intent, options.toBundle());
}
}
隐藏方法无法正常工作,在转换期间,我的fab按钮与我的布局重叠
它可以与mActivity对象一起使用?我尝试过做FloatingActionButton fab=(FloatingActionButton)mActivity.findViewById(R.id.fab_action);fab.show();在context.startActivity之前(intent,options.toBundle());它返回空点您可以从开始新活动的位置隐藏。fab按钮仅出现在my DetailActivity中,my CardAdapter仅包含带有CardView列表的RecyclerView。您可以创建在activity中隐藏和显示fab的方法,并将activity对象传递给您。您可以根据需要使用activity对象隐藏和显示FAB。它可以在MacActivity对象中使用?我尝试使用FloatingActionButton FAB=(FloatingActionButton)MacActivity.findViewById(R.id.FAB_action);fab.show();在context.startActivity之前(intent,options.toBundle());它返回空点您可以从开始新活动的位置隐藏。fab按钮仅出现在my DetailActivity中,my CardAdapter仅包含带有CardView列表的RecyclerView。您可以创建在activity中隐藏和显示fab的方法,并将activity对象传递给您。您可以使用活动对象根据需要隐藏和显示晶圆厂。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ViewDataBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_detail);
// Enable back button
setSupportActionBar((Toolbar) findViewById(R.id.toolbar));
if (null != getSupportActionBar()) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
// Retrieve module from extra
final Module module = getIntent().getParcelableExtra(MODULE);
// Bind module data
binding.setVariable(BR.module, module);
mFabAction = (FloatingActionButton) findViewById(R.id.fab_action);
addTransitionEnterListener();
}
private boolean addTransitionEnterListener() {
final Transition transition = getWindow().getSharedElementEnterTransition();
if (transition == null) return false;
transition.addListener(new Transition.TransitionListener() {
@Override
public void onTransitionEnd(Transition transition) {
mFabAction.show();
transition.removeListener(this);
addTransitionReturnListener();
}
});
return true;
}
private boolean addTransitionReturnListener() {
final Transition transition = getWindow().getSharedElementReturnTransition();
if (transition == null) return false;
transition.addListener(new Transition.TransitionListener() {
@Override
public void onTransitionStart(Transition transition) {
mFabAction.hide();
transition.removeListener(this);
}
});
return true;
}