Intereting Posts
एक एंड्रॉइड में .gif चित्रों को कैसे सजीव करना है? डिबगिंग मुद्दे (एंड्रॉइड एक्लिप्स) Google Play सेवाएं पुरानी हैं 4030500 की आवश्यकता होती है लेकिन 3266132 मिले अनुमति: अन्य ऐप्स के लिए इंजेक्शन के लिए INJECT_EVENTS एंड्रॉइड: होम बटन को कैसे नियंत्रित किया जाए एंड्रॉइड में, क्या मैं लेआउट एक्सएमएल में संपत्ति से छवि का उपयोग कर सकता हूं? एकाधिक एप्लिकेशन एंड्रॉइड: मैनिफेस्ट में नाम टैग किसी अन्य वर्ग से एक विधि पासिंग एंड्रॉइड के लिए coredata बराबर क्या है एंड्रॉइड – गतिविधि वर्ग में टैबहोस्ट काम कर रहा है प्रत्येक 500 एमएमएस के बाद कैमरा पूर्वावलोकन फ्रेम कैसे प्राप्त करें क्या किसी विशेष प्रकार के इंटेंट फिल्टर सक्षम ऐप को क्वेरी करने का कोई तरीका है? एडीबी शेल सेटप्रॉप का उपयोग करके एंड्रॉइड डिवाइस पर टाइमज़ोन को बदलने में असमर्थ एंड्रॉइड – Google मानचित्र एपीआई v2 – सहायतामैफ्रैगमेंट त्रुटियाँ एडीबी ने नेक्सस 5 डिवाइस नहीं दिखाया है

Android में एक ऑन-टच ACTION_MOVE ईवेंट की गति प्राप्त करें

यह करना बहुत सरल बात है। उपयोगकर्ता स्क्रीन पर अपनी उंगली डालता है और स्क्रीन के चारों ओर उसे ड्रैग करता है ऑन-टच पर दो घटनाएं चलती हैं:

  • MotionEvent.ACTION_DOWN
  • MotionEvent.ACTION_MOVE

अब, मैं ACTION_MOVE इशारा की गति की गणना कैसे कर सकता हूं? उपयोगकर्ता एक इशारे के दौरान उंगली धीमा या तेज करता है, इसलिए मुझे लगता है कि मुझे दो इंटरमीडिएट स्पर्श बिंदुओं के बीच की गति की गणना करने की आवश्यकता है: आखिरी टच पॉइण्टएक्स, आखिरी टच की गई PointY और event.getX (), event.getY ()

क्या किसी ने इसे पहले किया है ?

Solutions Collecting From Web of "Android में एक ऑन-टच ACTION_MOVE ईवेंट की गति प्राप्त करें"

@Override public boolean onTouchEvent(MotionEvent event, MapView mapView) { if(event.getAction() == MotionEvent.ACTION_DOWN) { oldX = event.getX(); oldY = event.getY(); //start timer } else if (event.getAction() == MotionEvent.ACTION_UP) { //long timerTime = getTime between two event down to Up newX = event.getX(); newY = event.getY(); float distance = Math.sqrt((newX-oldX) * (newX-oldX) + (newY-oldY) * (newY-oldY)); float speed = distance / timerTime; } } 

मानक VelocityTracker क्लास का उपयोग करके आपको क्या हासिल किया जा सकता है। यहां आंदोलन पर नज़र रखने के दौरान उपयोगकर्ता इनपुट के लिए Google के सर्वश्रेष्ठ अभ्यास पर अधिक विवरण। नीचे दिए गए अधिकांश कोड (जो कि प्रत्येक औरत / चाल के एक्स और वाई अक्ष पर गति को प्रदर्शित करके VelocityTracker का उपयोग दर्शाता है) पिछले संसाधन लिंक से लिया जाता है:

 import android.os.Bundle; import android.app.Activity; import android.support.v4.view.VelocityTrackerCompat; import android.view.MotionEvent; import android.view.VelocityTracker; import android.widget.TextView; public class MainActivity extends Activity { private VelocityTracker mVelocityTracker = null; private TextView mTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mTextView = new TextView(this); mTextView.setText("Move finger on screen to get velocity."); setContentView(mTextView); } @Override public boolean onTouchEvent(MotionEvent event) { int index = event.getActionIndex(); int action = event.getActionMasked(); int pointerId = event.getPointerId(index); switch (action) { case MotionEvent.ACTION_DOWN: if (mVelocityTracker == null) { // Retrieve a new VelocityTracker object to watch the velocity // of a motion. mVelocityTracker = VelocityTracker.obtain(); } else { // Reset the velocity tracker back to its initial state. mVelocityTracker.clear(); } // Add a user's movement to the tracker. mVelocityTracker.addMovement(event); break; case MotionEvent.ACTION_MOVE: mVelocityTracker.addMovement(event); // When you want to determine the velocity, call // computeCurrentVelocity(). Then call getXVelocity() // and getYVelocity() to retrieve the velocity for each pointer ID. mVelocityTracker.computeCurrentVelocity(1000); // Log velocity of pixels per second // Best practice to use VelocityTrackerCompat where possible. mTextView.setText("X velocity: " + VelocityTrackerCompat.getXVelocity(mVelocityTracker, pointerId) + "\nY velocity: " + VelocityTrackerCompat.getYVelocity(mVelocityTracker, pointerId)); break; case MotionEvent.ACTION_UP: break; case MotionEvent.ACTION_CANCEL: // Return a VelocityTracker object back to be re-used by others. mVelocityTracker.recycle(); break; } return true; } } 

यह एक प्रश्न है कि आप इस गणना को कैसे सही करना चाहते हैं।

हालांकि मूल प्रक्रिया प्रत्येक संबंधित ACTION_DOWN, ACTION_UP युगल का टाइमस्टैम्प प्राप्त करना है और अंतर की गणना करना है।

फिर आपको कवर पिक्सल निर्धारित करने की आवश्यकता है। यह साधारण त्रिकोणमिति के साथ किया जा सकता है

जब आपके पास समय अंतर और आच्छादित पिक्सल होते हैं, तो आप दो बिंदुओं (नीचे और ऊपर) के औसत के रूप में पिक्सल प्रति गति की गणना कर सकते हैं।

आप ऐसा प्रत्येक बिंदु के लिए कर सकते हैं जब बेहतर परिणाम प्राप्त करने के लिए उंगली स्क्रीन पर बढ़ रही है

इस उदाहरण से टच ईवेंट के साथ कैनवस में छवि स्पर्श ईवेंट का समय प्राप्त करें और गति प्राप्त करने के लिए समय और दूरी की गणना करें