簡體   English   中英

如何從類創建接口

[英]How to create an interface from a class

我是Android編程/ Java的新手,我想知道當我已經有一個擴展到MainActvity的class時應該如何添加手勢Directions?

    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 ,然后實現它。 那可能嗎。 如果可以,怎么辦?

如果我理解正確,則您有一個帶有2個參數的GestureDetectorCompat

  • 上下文
  • 偵聽器( 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
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM