Закрытие панели инструментов дизайн фона - PullRequest
0 голосов
/ 18 января 2019

Я создал этот вид перед нажатием панели инструментов:

before pressing toolbar

Когда я нажимаю значок на панели инструментов, он отображается примерно так, когда я нажимаю на панели инструментов:

when I pressed on toolbar

Итак, на втором изображении я хочу закрыть свою панель инструментов в предыдущем состоянии, нажав одну из любых красных кнопок, то есть "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 для показа анимации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...