Horizontal Sliding layout in Sketchware

 

Code:-

final LinearLayout _layout = (LinearLayout)_forelayout;
        final LinearLayout _backview = (LinearLayout) _backlayout;
_layout.setTranslationZ(1);
        _backview.post(new Runnable() {
            @Override
            public void run() {
                final boolean[] closed = {true};
                final int[] current = {0};
                final int value = 0-_backview.getWidth();
                _backview.setTranslationX(value);

                LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,_layout.getHeight());
                _layout.setLayoutParams(params);

                ((android.view.ViewGroup)_layout.getParent()).setClickable(true);
                ((android.view.ViewGroup)_layout.getParent()).setFocusable(true);
                ((android.view.ViewGroup)_layout.getParent()).setOnTouchListener(new View.OnTouchListener() {
                    @Override
                    public boolean onTouch(View v, MotionEvent event) {
                        switch (event.getAction()){
                            case MotionEvent.ACTION_DOWN:{
                                if (closed[0]){
                                    current[0] = (int) event.getX();
                                }else {
                                    current[0] = (int) event.getX()+(_backview.getWidth());
                                }
                            }
                            case MotionEvent.ACTION_MOVE:{
                                if (event.getX()-current[0]>value&event.getX()-current[0]<0){
                                    _layout.setTranslationX(event.getX()-current[0]);
                                }

                                if (event.getX()-current[0]<value){
                                    _layout.setTranslationX(value);
                                }
                                if (event.getX()-current[0]>0){
                                    _layout.setTranslationX(0);
                                }
                                break;
                            }
                            case MotionEvent.ACTION_UP:{
                                int value_2 = (int) (event.getX()-current[0]);
                                if (value_2>(value/2)){
                                    ObjectAnimator animator = new ObjectAnimator();
                                    animator.setTarget(_layout);
                                    animator.setPropertyName("translationX");
                                    animator.setFloatValues(0);
                                    animator.setDuration(200);
                                    animator.setInterpolator(new android.view.animation.DecelerateInterpolator());
                                    animator.start();
                                    closed[0] = true;
                                }else {
                                    ObjectAnimator animator = new ObjectAnimator();
                                    animator.setTarget(_layout);
                                    animator.setPropertyName("translationX");
                                    animator.setFloatValues(value);
                                    animator.setDuration(200);
                                    animator.setInterpolator(new android.view.animation.DecelerateInterpolator());
                                    animator.start();
                                    closed[0] = false;
                                }
                                break;
                            }
                        }
                        return false;
                    }
                });
            }
        });

Comments

Post a Comment