Я создал этот вид перед нажатием панели инструментов:
Когда я нажимаю значок на панели инструментов, он отображается примерно так, когда я нажимаю на панели инструментов:
Итак, на втором изображении я хочу закрыть свою панель инструментов в предыдущем состоянии, нажав одну из любых красных кнопок, то есть "btn1" или "btn2". Как я могу это сделать?
Моя основная активность:
public class Attendence extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_attendence);
Toolbar toolbar = (Toolbar)findViewById(R.id.toolbars);
setSupportActionBar(toolbar);
toolbar.setNavigationOnClickListener(new IconNavigationClickListener(this,findViewById(R.id.nested_view_scroll)
,new BounceInterpolator(),this.getResources().getDrawable(R.drawable.icon),
this.getResources().getDrawable(R.drawable.arrow_down)));
}
}
Мой класс IconNavigationClickListener равен
public class IconNavigationClickListener implements View.OnClickListener {
private AnimatorSet animatorSet = new AnimatorSet();
private Context context;
private View sheet;
private Interpolator interpolator;
private int height;
private boolean backdropshow = false;
private Drawable openIcon;
private Drawable closeIcon;
public IconNavigationClickListener(Context context, View sheet) {
this(context,sheet,null);
}
public IconNavigationClickListener(Context context, View sheet, @Nullable Interpolator interpolator){
this(context,sheet,interpolator,null,null);
}
public IconNavigationClickListener(Context context, View sheet, @Nullable Interpolator interpolator,@Nullable Drawable openIcon, @Nullable Drawable closeIcon)
{
this.context = context;
this.sheet = sheet;
this.interpolator = interpolator;
this.openIcon = openIcon;
this.closeIcon = closeIcon;
DisplayMetrics displayMetrics = new DisplayMetrics();
((Activity)context).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
height = displayMetrics.heightPixels;
height = (int) (height/1.5);
}
@Override
public void onClick(View v) {
onclickListener(v);
}
public void onclickListener(View v)
{
backdropshow =! backdropshow;
animatorSet.removeAllListeners();
animatorSet.end();
animatorSet.cancel();
updateIcon(v);
final int translateY = height - context.getResources().getDimensionPixelSize(R.dimen.shr_product_grid_reveal_height);
ObjectAnimator animator = ObjectAnimator.ofFloat(sheet,"TranslationY",backdropshow ? translateY : 0);
animator.setDuration(900);
if(interpolator != null)
{
animator.setInterpolator(interpolator);
}
animatorSet.play(animator);
animator.start();
}
private void updateIcon(View v){
if(openIcon != null && closeIcon !=null)
{
if(!(v instanceof ImageView)){
throw new IllegalArgumentException("UpdateIcon() must be call on imageView");
}
if(backdropshow){
((ImageView)v).setImageDrawable(closeIcon);
}else{
((ImageView)v).setImageDrawable(openIcon);
}
}
}
}
Я использовал Above Class для показа анимации