Swipe To Choose Android

后端 未结 6 856
半阙折子戏
半阙折子戏 2020-12-04 10:17

I want to make view like below image... swipe to choose in ANDROID.

\"enter

i

6条回答
  •  北海茫月
    2020-12-04 11:07

    Create four new global float variable x_cord, y_cord, x_cordIn & y_cordIn.

    ainerLayout.setOnTouchListener(new OnTouchListener() {
    
        private long startClickTime;
        private float x1;
        private float y1;
        private float x2;
        private float y2;
        private float _dx;
        private float _dy;
    
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            boolean defaultResult = v.onTouchEvent(event);
            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    x_cord = x_cordIn = event.getRawX();
                    y_cord = y_cordIn = event.getRawY();
    
                    x1 = (int) event.getRawX();
                    y1 = (int) event.getRawY();
    
                    this.startClickTime = Calendar.getInstance().getTimeInMillis();
                    return true;
    
                case MotionEvent.ACTION_MOVE:
                    x_cord = event.getRawX();
                    y_cord = event.getRawY();
    
                    float xPos = myRelView.getX() - (x_cordIn - x_cord);
                    float yPos = myRelView.getY() - (y_cordIn - y_cord);
    
                    CardView_new.this.setX(xPos);
                    CardView_new.this.setY(yPos);
    
                    if (x_cord >= screenCenter) {
    
                        /**
                         * rotate image 
                         * */
                        CardView_new.this.setRotation((float) (xPos * (Math.PI / 32)));
    
                        if (x_cord > (screenCenter + (screenCenter / 2))) {
                            buttonLike.setAlpha(1);
                            buttonDislike.setAlpha(0);
                            if (x_cord > (windowwidth - (screenCenter / 4))) {
                                Likes = 2;
                                moveIs = true;
                            } else {
                                Likes = 0;
                                moveIs = true;
                            }
    
                        } else {
                            Likes = 0;
                            buttonLike.setAlpha(0);
                            moveIs = false;
                        }
                        buttonDislike.setAlpha(0);
                    } else {
                        // rotate
                        /**
                         * rotate image 
                         * */
    
                        CardView_new.this.setRotation((float) (xPos * (Math.PI / 32)));
    
                        if (x_cord < (screenCenter / 2)) {
                            buttonDislike.setAlpha(1);
                            buttonLike.setAlpha(0);
                            if (x_cord < (screenCenter / 4)) {
                                Likes = 1;
                                moveIs = true;
                            } else {
                                Likes = 0;
                                moveIs = true;
                            }
    
                        } else {
                            Likes = 0;
                            buttonDislike.setAlpha(0);
                            moveIs = false;
                        }
                        buttonLike.setAlpha(0);
                    }
    
                    return true;
                case MotionEvent.ACTION_UP:
                    x_cord = (int) event.getRawX();
                    y_cord = (int) event.getRawY();
    
                    buttonDislike.setAlpha(0);
                    buttonLike.setAlpha(0);
    
                    x2 = event.getRawX();
                    y2 = event.getRawY();
    
                    _dx = x2 - x1;
                    _dy = y2 - y1;
    
                    long l = Calendar.getInstance().getTimeInMillis()
                            - this.startClickTime;
                    if ((l < 400L)
                            && distance(x1, y1, x2, y2) < MAX_CLICK_DISTANCE) {
    
                        Log.e("start Activity", "start activity");
    
                        CardView_new.this.setX(0);
                        CardView_new.this.setY(0);
                        CardView_new.this.setRotation(0);
    
                        if (moveIs == false) {
                            Intent i = new Intent((Activity) getContext(),
                                    DetailsActivity.class);
    
                            ((Activity) getContext()).startActivity(i);
                        }
    
                        return true;
                    } else if (Likes == 0) {
                        CardView_new.this.setX(0);
                        CardView_new.this.setY(0);
                        CardView_new.this.setRotation(0);
                        if (moveIs) {
                            moveIs = true;
                            return true;
                        } else {
                            moveIs = false;
                            return false;
                        }
                    } else if (Likes == 1) {
                        parentView.removeView(CardView_new.this);
                        CardView_new.this.mOnCardDimissedDelegate
                                .onLike(CardView_new.this);
                        Log.e("Likes==1", "Likes==1");
                        moveIs = true;
                        return true;
                    } else if (Likes == 2) {
                        parentView.removeView(CardView_new.this);
    
                        CardView_new.this.mOnCardDimissedDelegate
                                .onDislike(CardView_new.this);
                        Log.e("Likes==2", "Likes==2");
                        moveIs = true;
                        return true;
                    }
    
                default:
                    return false;
            }
        }
    });
    

提交回复
热议问题