दिलचस्प पोस्ट
एक अप्रत्यक्ष आलेख में चक्र UIImage बेस 64 स्ट्रिंग एन्कोडिंग में चेतावनी डायलॉग के पीछे पृष्ठभूमि को धुंधला करें एब्स्ट्रक्शन वी.एस. जानकारी छिपाना वी.एस. बाएं और दाएं पक्षों पर बॉक्स-छाया कैसे प्राप्त करें जीएसएन्स टाइप टूनेशन कैसे काम करता है? एक्सएमएल में स्ट्रिंग एस्केप MySQL एक्सटेंशन को बहिष्कृत किया गया है और भविष्य में निकाल दिया जाएगा: इसके बजाय mysqli या PDO का उपयोग करें jQuery hasClass () – एक से अधिक वर्ग की जांच करें मार्ग गूगल मैप्स v2 एंड्रॉइड पर इंटरैक्टिव पॉलिनी कैसे आकर्षित करें अजाक्स विधि कॉल नोड के लिए प्रत्येक विधि। चाइल्डनोड्स? सी # 3.0 सामान्य प्रकार अनुमान – फ़ंक्शन पैरामीटर के रूप में एक प्रतिनिधि को गुजर रहा है डबल क्लिक के साथ विस्टा पर जार निष्पादित करना कमांड प्रॉम्प्ट विंडो में क्लिपबोर्ड सामग्री पेस्ट करने के लिए कीबोर्ड शॉर्टकट (Win XP)

एंड्रॉइड: ओरिएंटेशन का पता लगाया गया बदला

मुझे अपने आवेदन में एक ओरिएंटेशन परिवर्तन का पता लगाने की आवश्यकता है, लेकिन मैं अपने लेआउट को चित्र से परिदृश्य तक नहीं बदलना चाहता हूं वर्तमान में मैं OrientationEventListener ईवेंट लिस्टनर का उपयोग कर रहा हूं, हालांकि उन्मुखीकरण कोण का पता लगाने में पर्याप्त नहीं है। मैं यह जानना चाहता हूं कि उपयोगकर्ता को चित्र से परिदृश्य या वाइसवर्सा में बदल दिया गया है, और यह सिर्फ पता नहीं है कि अभिविन्यास कोण 90 या 270 है।

मैं एक ही पहचान करना चाहता हूं कि एंड्रॉइड गतिविधि की ओरिएंटेशन को बदलता है। मैंने onConfigurationChanged ओवरराइड करने की कोशिश की और बदल गया है कि क्या ओरिएंटेशन का परिदृश्य / चित्र है, हालांकि यह अभी भी परिदृश्य में मेरी गतिविधि लेआउट बदलता है।

क्या कॉन्फ़िगरेशन पर उपयोग करने का कोई तरीका बदल गया है लेकिन चित्र में बने रहने के लिए लेआउट को लागू करना है?
OrientationEventListener का उपयोग किए बिना OrientationEventListener परिवर्तन का पता लगाने का एक और तरीका क्या है? आखिरकार मैं अपनी खुद की अभिविन्यास बदल एल्गोरिथ्म, इस पर कोई विचार लागू कर सकते हैं? if(90-THRESHOLD <= orientation <= 90+THRESHOLD) से अधिक जटिल होना आवश्यक है, तो मैं यह जानना चाहता हूं कि उपयोगकर्ता ने पूरे आंदोलन को बनाया- पोर्ट्रेट-> लैंडस्केप या लैंडस्केप-> पोर्ट्रेट

सहायता के लिए धन्यवाद,
फिलिपे

Solutions Collecting From Web of "एंड्रॉइड: ओरिएंटेशन का पता लगाया गया बदला"

ठीक है, एंड्रॉइड एपीआई का उपयोग करने की कोशिश करने के बाद और जो मैं ज़रूरत नहीं कर पा रहा हूं, मैंने अपना खुद का एल्गोरिथ्म कार्यान्वित किया और वास्तव में यह जटिल नहीं था: मैंने एक ओरिएंटेशन एवेन्टएलिस्टर का इस्तेमाल किया और गणना की गई है कि अगर ओरिएंटेशन 4 अभिविन्यास अंक में है ( मेरे कोड में मैं केवल LANDSCAPE_RIGHT और PORTRAIT_UP पता लगाता हूं:

 orientationListener = new OrientationEventListener(context, SensorManager.SENSOR_DELAY_UI) { public void onOrientationChanged(int orientation) { if(canShow(orientation)){ show(); } else if(canDismiss(orientation)){ dismiss(); } } }; @Override public void onResume(){ super.onResume(); orientationListener.enable(); } @Override public void onPause(){ super.onPause(); orientationListener.disable(); } private boolean isLandscape(int orientation){ return orientation >= (90 - THRESHOLD) && orientation <= (90 + THRESHOLD); } private boolean isPortrait(int orientation){ return (orientation >= (360 - THRESHOLD) && orientation <= 360) || (orientation >= 0 && orientation <= THRESHOLD); } public boolean canShow(int orientation){ return !visible && isLandscape(orientation); } public boolean canDismiss(int orientation){ return visible && !dismissing && isPortrait(orientation); } 

हाय screamingnoises यह क्या आप के लिए देख रहे हैं?

 // Set background image, rotatable View view = getWindow().getDecorView(); int orientation = getResources().getConfiguration().orientation; if (Configuration.ORIENTATION_LANDSCAPE == orientation) { //Do SomeThing; // Landscape } else { //Do SomeThing; // Portrait } 

मैंने अभिविन्यास परिवर्तन का पता लगाने के लिए निम्न गतिविधि बनाई, मेरी गतिविधि को मूल अभिविन्यास रखते हुए:

 public class SensorOrientationChangeNotifier { public final String TAG = getClass().getSimpleName(); private ArrayList<WeakReference<SensorOrientationChangeNotifier.Listener>> mListeners = new ArrayList<WeakReference<SensorOrientationChangeNotifier.Listener>>(3); private int mOrientation = 0; private SensorEventListener mSensorEventListener; private SensorManager mSensorManager; private static SensorOrientationChangeNotifier mInstance; public static SensorOrientationChangeNotifier getInstance() { if (mInstance == null) mInstance = new SensorOrientationChangeNotifier(); return mInstance; } private SensorOrientationChangeNotifier() { mSensorEventListener = new NotifierSensorEventListener(); Context applicationContext = GlobalData.getInstance().getContext(); mSensorManager = (SensorManager) applicationContext.getSystemService(Context.SENSOR_SERVICE); } /** * Call on activity reset() */ private void onResume() { mSensorManager.registerListener(mSensorEventListener, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL); } /** * Call on activity onPause() */ private void onPause() { mSensorManager.unregisterListener(mSensorEventListener); } private class NotifierSensorEventListener implements SensorEventListener { @Override public void onSensorChanged(SensorEvent event) { float x = event.values[0]; float y = event.values[1]; int newOrientation = mOrientation; if (x < 5 && x > -5 && y > 5) newOrientation = 0; else if (x < -5 && y < 5 && y > -5) newOrientation = 90; else if (x < 5 && x > -5 && y < -5) newOrientation = 180; else if (x > 5 && y < 5 && y > -5) newOrientation = 270; //Log.e(TAG,"mOrientation="+mOrientation+" ["+event.values[0]+","+event.values[1]+","+event.values[2]+"]"); if (mOrientation != newOrientation){ mOrientation = newOrientation; notifyListeners(); } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } } public int getOrientation() { return mOrientation; } public interface Listener { void onOrientationChange(int orientation); } public void addListener(SensorOrientationChangeNotifier.Listener listener) { if (get(listener) == null) // prevent duplications mListeners.add(new WeakReference<SensorOrientationChangeNotifier.Listener>(listener)); if (mListeners.size() == 1) { onResume(); // this is the first client } } public void remove(SensorOrientationChangeNotifier.Listener listener) { WeakReference<SensorOrientationChangeNotifier.Listener> listenerWR = get(listener); remove(listenerWR); } private void remove(WeakReference<SensorOrientationChangeNotifier.Listener> listenerWR) { if (listenerWR != null) mListeners.remove(listenerWR); if (mListeners.size() == 0) { onPause(); } } private WeakReference<SensorOrientationChangeNotifier.Listener> get(SensorOrientationChangeNotifier.Listener listener) { for (WeakReference<SensorOrientationChangeNotifier.Listener> existingListener : mListeners) if (existingListener.get() == listener) return existingListener; return null; } private void notifyListeners() { ArrayList<WeakReference<SensorOrientationChangeNotifier.Listener>> deadLiksArr = new ArrayList<WeakReference<SensorOrientationChangeNotifier.Listener>>(); for (WeakReference<SensorOrientationChangeNotifier.Listener> wr : mListeners) { if (wr.get() == null) deadLiksArr.add(wr); else wr.get().onOrientationChange(mOrientation); } // remove dead references for (WeakReference<SensorOrientationChangeNotifier.Listener> wr : deadLiksArr) { mListeners.remove(wr); } } public boolean isPortrait(){ return mOrientation == 0 || mOrientation == 180; } public boolean isLandscape(){ return !isPortrait(); } } 

इसका प्रयोग निम्न प्रकार से करें:

AndroidManifest.xml में –

  <activity ... android:screenOrientation="portrait" > 

आपकी गतिविधि में:

 public class MainActivity extends Activity implements SensorOrientationChangeNotifier.Listener { @Override protected void onResume() { super.onResume(); SensorOrientationChangeNotifier.getInstance().addListener(this); } @Override protected void onPause() { super.onPause(); SensorOrientationChangeNotifier.getInstance().remove(this); } @Override public void onOrientationChange(int orientation) { if (orientation == 90 || orientation == 270){ // Do some landscape stuff } else { // Do some portrait stuff } } } } 

ओरिएंटेशन का पता लगाने के लिए, हम गतिविधि को चौड़ाई और गतिविधि की ऊंचाई प्रदान करने के लिए कहेंगे, इसलिए हम पा सकते हैं कि चौड़ाई> ऊंचाई जो "लैंडस्केप" या विपरीत ऊँचाई> चौड़ाई जो "पोर्ट्रेट" है – निम्नलिखित कोड है परीक्षण और कार्य करना

 @SuppressWarnings("deprecation") public void detectScreenOrientation(){ WindowManager wm = getWindowManager(); Display d = wm.getDefaultDisplay(); if (d.getWidth() > d.getHeight()){ Log.d("Orientation","Landscape mode"); } else { Log.d("Orientation", "Portrait mode"); } }