2016-02-25 23 views
8
पर जावा त्रिगुट ऑपरेटर का उपयोग

मैं नहीं जानता कि जब मैं इस उदाहरण पर एक त्रिगुट ऑपरेटर का उपयोग क्यों, लेकिन मैं इस अजीब त्रुटि हो रही है:अजीब व्यवहार एंड्रॉयड

Screenshot of the strange behavior of setInterpolator

मुझे लगता है कि जिस तरह से संबंधित है कि जावा ने ऑपरेटर से परिणाम डाला लेकिन यह केवल कुछ विशिष्ट मामलों में होता है।

कोई स्पष्टीकरण के लिए धन्यवाद।

नोट: मैं एक के लिए खोज की है, लेकिन केवल एनपीई से संबंधित जवाब मिल सकता है।

-Edit-

एप्लिकेशन का उपयोग करता:

  • compileSdkVersion 23
  • buildToolsVersion '23 .0.2 '
  • minSdkVersion 14
  • targetSdkVersion 23
  • Android समर्थन लाइब्रेरी 23.2। 0

एंड्रॉइड स्टूडियो 2.0 बीटा 5 पर संबंधित ग्रेडल संस्करण

+2

जो एपीआई स्तर आप अपने अनुप्रयोग के लिए निर्धारित किया था? क्योंकि 'लीनियरइंटरपोलेटर' 'बेसइंटरपोलेटर' बढ़ाता है [[एपीआई स्तर 22 की आवश्यकता है] (http://developer.android.com/reference/android/view/animation/BaseInterpolator.html) –

+0

minSdkVersion को 22 में बदलें ... – brso05

+0

यह निश्चित रूप से चाहता है आप मिनी एपीआई संस्करण 22 पर सेट करते हैं। क्योंकि सार्वजनिक शून्य सेटइंटरपोलेटर (टाइमइंटरपोलेटर वैल्यू) लेकिन आप लाइन इंटररोलेटर –

उत्तर

11

कारण टेर्नरी ऑपरेटरों के काम के कारणों का कारण है।

यह ऑब्जेक्ट्स को पर ऑब्जेक्ट्स को हमेशा ऑब्जेक्ट्स दोनों के लिए सामान्य प्रकार सामान्य बनाता है। आपके मामले में यह BaseInterpolator, क्योंकि आपके targetSDK संस्करण 23 पर सेट किया जाता है।

लेकिन, के बाद से अपने minSDK 14 है, डाली सभी उपकरणों पर काम नहीं करेगा। इसलिए त्रुटि।

सुलझाने के लिए आपको दोनों वस्तुओं को TimeInterpolator की एक स्पष्ट डाली जोड़ सकते हैं।

0

मैं कोड का पालन करके इसे ठीक:

public class MyDecelerateInterpolator implements Interpolator { 

    private DecelerateInterpolator interpolator = null; 

    public MyDecelerateInterpolator() { 
     interpolator = new DecelerateInterpolator(); 
    } 

    public MyDecelerateInterpolator(float factor) { 
     interpolator = new DecelerateInterpolator(factor); 
    } 

    @Override 
    public float getInterpolation(float input) { 
     return interpolator.getInterpolation(input); 
    } 
} 
+0

इस समस्या के जवाब के साथ कुछ स्पष्टीकरण जोड़ें कि इस समस्या को वर्तमान समस्या को ठीक करने में ओपी की मदद कैसे करें –

+0

मैंने DeccelerateInterpolator का कोड पढ़ा है। यह बेसइंटरपोलेटर और चुड़ैल उपकरण इंटरपोलेटर लागू करता है। बेसइंटरपोलेटर ने कोई सार विधि नहीं जोड़ा है। इसका मतलब है कि इन दो वर्गों में getInterpolation (फ्लोट इनपुट) नामक एक ही सार विधि है। मुझे नहीं पता कि त्रुटि क्यों दिखाई देती है, लेकिन जब तक सार विधि समान होती है, हम एक वर्ग चुड़ैल को इंटरपोलेटर लागू कर सकते हैं और DecelerateInterpolator लपेट सकते हैं। इस प्रकार कोई और त्रुटि नहीं दिखाती है। –

संबंधित मुद्दे