>

Android Programming/Java를 처음 사용합니다. 이미 class 가있을 때 동작 방향을 추가하는 방법을 알고 싶었습니다.  MainActvity로 확장 하시겠습니까?

   package #####app.myapplication;
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.view.MotionEvent;
import android.view.GestureDetector;
import android.support.v4.view.GestureDetectorCompat;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements GestureDetector.OnGestureListener,GestureDetector.OnDoubleTapListener{
    private GestureDetectorCompat mygesture;
    private static final int SWIPE_MIN_DISTANCE = 120;
    private static final int SWIPE_MAX_OFF_PATH = 250;
    private static final int SWIPE_THRESHOLD_VELOCITY = 200;
    @Override
    public boolean onSingleTapConfirmed(MotionEvent motionEvent) {
        return false;
    }
    @Override
    public boolean onDoubleTap(MotionEvent motionEvent) {
        return false;
    }
    @Override
    public boolean onDoubleTapEvent(MotionEvent motionEvent) {
        return false;
    }
    @Override
    public boolean onDown(MotionEvent motionEvent) {
        return false;
    }
    @Override
    public void onShowPress(MotionEvent motionEvent) {
    }
    @Override
    public boolean onSingleTapUp(MotionEvent motionEvent) {
        return false;
    }
    @Override
    public boolean onScroll(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
        return false;
    }
    @Override
    public void onLongPress(MotionEvent motionEvent) {
    }

       @Override
        public boolean onFling(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
            }
        @Override
        public void onPointerCaptureChanged(boolean hasCapture) {
        }

        @Override
        public boolean onTouchEvent(MotionEvent event) {
            this.mygesture.onTouchEvent(event);
            return super.onTouchEvent(event);
        }
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Context context = getApplicationContext();
            CharSequence text = "Welcome to ####";
            int duration = Toast.LENGTH_SHORT;
            Toast toast = Toast.makeText(context, text, duration);
            toast.show();
            WebView vedant = (WebView) findViewById(R.id.vedant);
            vedant.loadUrl("http://##.ml");
            WebSettings webSettings = vedant.getSettings();
            webSettings.setJavaScriptEnabled(true);
            vedant.setWebViewClient(new WebViewClient());
            this.mygesture = new GestureDetectorCompat(this,this);
            mygesture.setOnDoubleTapListener(this);

        }
    }

제스처 방향을 사용하려면 다음을 수행해야합니다.

@Override
    public boolean onFling(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
        float velocityY) {
            try {
                if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH){
                    return false;
                }
                // right to left swipe
                if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
                        && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
                    onLeftSwipe();
                }
                // left to right swipe
                else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
                        && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
                    onRightSwipe();
                }
            } catch (Exception e) {
            }
            return false;
        }
        return false;
    }

그러나 다른 클래스 SimpleOnGestureListener 를 확장해야합니다. . 내가 SimpleOnGestureListener 까지 확장 할 수 없었기 때문에  나는 interface 를 만들 수 있다고 생각  그런 다음 구현하십시오. 가능합니까? 그렇다면 어떻게해야합니까?

  • 답변 # 1

    내가 올바르게 이해한다면, 당신은 GestureDetectorCompat  2 개의 매개 변수 사용 :

    컨텍스트

    리스너 ( GestureDetector.OnGestureListener ) )

    지금 당신은 mygesture = new GestureDetectorCompat(this,this); 를  어디 this  당신의 활동입니다. 그러나 왜 당신의 활동이 청취자가되기를 원합니까? 분리 된 클래스에서 리스너를 만들 수 있습니다.

    그러면 할 수있는 일 :

    주요 활동

    this.mygesture = new GestureDetectorCompat(this, new MyGestureListener());
    
    

    MyGestureListener

    public class MyGestureListener extends SimpleOnGestureListener {
        @Override
        public boolean onFling(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
           // ... 
           // Your code
        }
    }
    
    

관련 자료

  • 이전 php - 워드 프레스 - woocommerce 독일어 템플릿 수정
  • 다음 pyspark - Spark Dataframe API를 사용하여 열 내의 특정 문자 수