5

जब डिवाइस अभिविन्यास बदलता है तो मैं एक छविबटन घुमाता हूं। इसे 90, 180, 270 और 360 कोणों के लिए घूमना चाहिए और इसके सापेक्ष लेआउट स्थिर रहना चाहिए ताकि केवल बटन चल जाएं। यह कैसे किया जा सकता है? मैंने कुछ शोध किया है लेकिन मुझे कुछ भी नहीं मिला जो मेरी मदद कर सकता है।लेआउट घुमाने के बिना अभिविन्यास परिवर्तन करते समय बटन घुमाने के लिए कैसे?

+0

आपको टुकड़ों को तोड़ना है: 1 रोटेशन पर गतिविधि का मनोरंजन रोकें। 2. रोटेशन पकड़ना। 3. दृश्य को घूर्णन .... इन टुकड़ों में से प्रत्येक के पास पहले से ही एक जवाब है, यहां SO पर ... यह विश्वास करना मुश्किल है कि आपको कुछ भी नहीं मिला ... – Selvin

+0

मुझे नहीं पता था कि मेरा विभाजन कैसे करें उन टुकड़ों में सवाल। मैं एंड्रॉइड और जावा के लिए एक नया हूँ। मुझे अभी भी एक समस्या है क्योंकि मेरी गतिविधि अभिविन्यास निश्चित है और मुझे एक्सेलेरोमीटर के साथ अभिविन्यास का पता लगाना है और यह नहीं पता कि इसे कैसे किया जाए। –

उत्तर

2

आप इस तरह ओवरराइड द्वारा एक ओरिएंटेशन परिवर्तन का पता लगाने कर सकते हैं:

public void rotateView(View view) { 
    Button button = (Button) view.findViewById(R.id.some_button); 
    RotateAnimation rotateAnimation = new RotateAnimation(0, 360); 
    rotateAnimation.setDuration(2000); 
    button.startAnimation(rotateAnimation); 
} 
:

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    //call your rotate method here 
} 

फिर एक बार आप उन्मुखीकरण परिवर्तन घटना का पता लगाने के लिए, आप एक एनिमेटेड रोटेशन इस तरह एक बटन पर प्रदर्शन कर सकते हैं

आप RotateAnimation के कन्स्ट्रक्टर में प्रारंभ और समापन कोण सेट कर सकते हैं, फिर एनीमेशन को कितनी देर तक लेना चाहिए (मिलीसेकंड में) अवधि निर्धारित करें। फिर आप उस दृश्य पर startAnimation() पर कॉल करें जिसे आप एनिमेट करना चाहते हैं।

+0

धन्यवाद, @drschultz, आपका जवाब बहुत अच्छा है, समस्या यह है कि मेरी गतिविधि अभिविन्यास तय की गई है और कॉन्फ़िगरेशन हमेशा एक ही परिणाम देता है। अगर मैं जानता था कि इस मुद्दे से कैसे संपर्क किया जाए तो मैंने यह कहा होगा। SensorEventListener के साथ धुरी एक्स और वाई के साथ अभिविन्यास का पता लगाने के बारे में कोई विचार? –

+1

यदि आपका डिस्प्ले ओरिएंटेशन लॉक है और घुमाया नहीं जा सकता है, तो दुर्भाग्य से आपको सेंसर डेटा का उपयोग करके अपने घूर्णन मूल्यों की गणना करने की आवश्यकता होगी। यही वह जगह है जहां चीजें काफी जटिल होती हैं। आप [यहां दस्तावेज़ों में एंड्रॉइड सेंसर] के बारे में पढ़ सकते हैं (http://developer.android.com/guide/topics/sensors/sensors_overview.html), और कुछ कोड उदाहरण देखने के लिए, आप स्टैक ओवरफ़्लो पर कुछ अच्छे उत्तर पा सकते हैं जैसे [यह सवाल यहां] (http://stackoverflow.com/questions/27106607/get-rotation-and-display-in-degrees)। लेकिन अगर आपको अभी भी सेंसर सामान के साथ मदद की ज़रूरत है तो मैं एक नया प्रश्न खोलूंगा। – NoChinDeluxe

+0

इस प्रश्न के लिए, मैं कृपया पूछूंगा कि आप मेरा जवाब स्वीकार करते हैं क्योंकि यह आपके मूल प्रश्न का उत्तर देता है (और भविष्य में अन्य लोगों को इसी तरह के प्रश्न के साथ मदद कर सकता है)। फिर, यदि आपको सेंसर डेटा को कार्यान्वित करने के तरीके के बारे में सहायता चाहिए तो आप एक नया प्रश्न खोल सकते हैं। – NoChinDeluxe

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