Android में स्क्रीन ओरिएंटेशन चेंज डिटेक्ट करने का तरीका
यह उदाहरण दिखाता है कि onConfigurationChanged() का उपयोग करके पोर्ट्रेट और लैंडस्केप मोड के बीच स्विच को कैसे डिटेक्ट किया जाता है।
चरण 1: नया प्रोजेक्ट बनाएं
Android Studio में File → New Project से प्रोजेक्ट बनाएं।
चरण 2: लेआउट फ़ाइल (res/layout/activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:textSize="24sp"
android:textStyle="bold" />
</LinearLayout>
चरण 3: MainActivity.java
import androidx.appcompat.app.AppCompatActivity;
import android.content.res.Configuration;
import android.os.Bundle;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(this, "लैंडस्केप मोड", Toast.LENGTH_SHORT).show();
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
Toast.makeText(this, "पोर्ट्रेट मोड", Toast.LENGTH_SHORT).show();
}
}
}
चरण 4: AndroidManifest.xml - महत्वपूर्ण कॉन्फिगरेशन
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="app.com.sample">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:configChanges="orientation|screenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
महत्वपूर्ण व्याख्या
- android:configChanges="orientation|screenSize" मैनिफेस्ट में जोड़ने से एक्टिविटी रीस्टार्ट नहीं होती; बजाय इसके
onConfigurationChanged()कॉल होता है। - यदि यह लाइन न हो, तो ओरिएंटेशन चेंज पर एक्टिविटी डिस्ट्रॉय और रीक्रिएट होती है (डिफ़ॉल्ट व्यवहार)।
- API 32+ में
screenSizeडिप्रिकेटेड है;orientation|screenLayoutउपयोग करें।