setRequestedOrientation() ব্যবহার করে স্ক্রিন অরিয়েন্টেশন ফিক্স করা
অ্যান্ড্রয়েড অ্যাপে স্ক্রিন অরিয়েন্টেশন (পোর্ট্রেট/ল্যান্ডস্কেপ) প্রোগ্রাম্যাটিক্যালি লক করার জন্য `setRequestedOrientation()` মেথড এবং `ActivityInfo` ক্লাস ব্যবহার করা হয়। এটি নির্দিষ্ট এক্টিভিটির জন্য অরিয়েন্টেশন বাধя করে রাখে।
ধাপ ১: প্রজেক্ট তৈরি করুন
স্ট্যান্ডার্ড অ্যান্ড্রয়েড প্রজেক্ট।
ধাপ ২: সিম্পল লেআউট
res/layout/activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="Screen Orientation Lock"
android:textSize="24sp"
android:textStyle="bold" />
</RelativeLayout>
ধাপ ৩: অরিয়েন্টেশন লক লজিক
src/MainActivity.java - বর্তমান অরিয়েন্টেশন অনুযায়ী লক করুন:
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// বর্তমান অরিয়েন্টেশন পাওয়া
int currentOrientation = getResources().getConfiguration().orientation;
// বর্তমান অরিয়েন্টেশনে লক করুন
if (currentOrientation == Configuration.ORIENTATION_PORTRAIT) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
}
}
ActivityInfo এর অরিয়েন্টেশন কনস্ট্যান্ট
| কনস্ট্যান্ট | বর্ণনা |
|---|---|
SCREEN_ORIENTATION_PORTRAIT | পোর্ট্রেট মোডে লক (লম্বা) |
SCREEN_ORIENTATION_LANDSCAPE | ল্যান্ডস্কেপ মোডে লক (প্রস্থ) |
SCREEN_ORIENTATION_SENSOR | সেন্সর অনুযায়ী অটো রোটেট (ডিফল্ট) |
SCREEN_ORIENTATION_USER | ব্যবহারকারীর পছন্দ অনুযায়ী |
SCREEN_ORIENTATION_FULL_SENSOR | সभी ৪ দিক রোটেশন অনুমতি |
SCREEN_ORIENTATION_LOCKED | বর্তমান অরিয়েন্টেশনে লক (API 18+) |
ম্যানিফেস্টে লক করা (এক্টিভিটি লেভেল)
প্রোগ্রাম্যাটিক ছাড়া ম্যানিফেস্টে ডিক্লেয়ার করলেও হয়:
<activity
android:name=".MainActivity"
android:screenOrientation="portrait"> <!-- বা landscape -->
<intent-filter>...</intent-filter>
</activity>
সেরা অনুশীলন
- onCreate()-এ করুন - লেআউট ইনফ্লেট হওয়ার আগে বা সাথে সাথে
- SCREEN_ORIENTATION_LOCKED (API 18+) ব্যবহার করুন বর্তমান অরিয়েন্টেশন যেন যেনে লক করতে
- ভিডিও প্লেয়ার, ক্যামেরা অ্যাপে ল্যান্ডস্কেপ লক করা vanlig
- ফর্ম-ভিত্তিক এক্টিভিটিতে পোর্ট্রেট লক করা ভালো
রানটাইমে আনলক করা
// আবার অটো-রোটেশন সক্ষম করতে setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);