অ্যান্ড্রয়েড ফোনে ওরিয়েন্টেশন পরীক্ষা করুন


415

অ্যান্ড্রয়েড ফোনটি ল্যান্ডস্কেপ বা প্রতিকৃতিতে রয়েছে কিনা আমি কীভাবে তা পরীক্ষা করতে পারি?


1
অনুরূপ থ্রেডে এই উত্তরটি একবার দেখুন: stackoverflow.com/a/26601009/3072449
ম্যাজিক হ্যান্ডস পেলগ্রিন

উত্তর:


676

বর্তমান কনফিগারেশনটি, কোন সংস্থানগুলি পুনরুদ্ধার করতে হবে তা নির্ধারণ করতে ব্যবহৃত হিসাবে, রিসোর্সগুলির Configurationঅবজেক্ট থেকে উপলব্ধ :

getResources().getConfiguration().orientation;

আপনি এর মানটি দেখে ওরিয়েন্টেশনটি পরীক্ষা করতে পারেন:

int orientation = getResources().getConfiguration().orientation;
if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
    // In landscape
} else {
    // In portrait
}

অ্যান্ড্রয়েড বিকাশকারী আরও তথ্য পাওয়া যাবে ।


2
ওহ দুঃখিত, আমি ভুল বুঝেছি, আমি ভেবেছিলাম আপনি বলছেন যে কনফিগারেশন পরিবর্তন হলে পরিষেবাটি কনফিগারেশন পরিবর্তন দেখবে না। আপনি যেটি বর্ণনা করছেন তা হ'ল ... ভাল, এটি কিছুই দেখছে না, কারণ কিছুই পরিবর্তন হচ্ছে না, কারণ লঞ্চারটি স্ক্রিন অরিয়েন্টেশনটি লক করেছে এবং এটি পরিবর্তন করতে দেয় না। সুতরাং এটি সঠিক যে .রিয়েন্টেশন পরিবর্তন হয় না, কারণ অভিমুখ পরিবর্তন হয়নি। স্ক্রিনটি এখনও প্রতিকৃতি।
হ্যাকবড

আমি যে নিকটতম জিনিসটি করতে পারি তা হ'ল সেন্সরগুলির কাছ থেকে প্রাপ্ত অরিয়েন্টেশনটি পড়া যা গণিতের সাথে জড়িত যে আমি এই মুহূর্তে খুঁজে বের করতে সত্যিই খুব আগ্রহী নই।
আর্কিমিডস ট্রাজানো

13
এতে বিরক্ত হওয়ার কিছু নেই। স্ক্রিনটি আবর্তিত হয়নি, এটি এখনও প্রতিকৃতিতে রয়েছে, দেখার কোনও ঘূর্ণন নেই। আপনি কীভাবে স্ক্রিনটি ঘোরানো হচ্ছে তা নির্বিশেষে ব্যবহারকারী কীভাবে তাদের ফোনটি সরিয়ে নিচ্ছেন তা পর্যবেক্ষণ করতে চান, তবে হ্যাঁ আপনাকে সরাসরি সেন্সরটি দেখতে হবে এবং ডিভাইসটি কীভাবে চলাচল করছে সে সম্পর্কে আপনি কীভাবে তথ্য পেতে চান তা কীভাবে ব্যাখ্যা করতে চান তা স্থির করুন।
হ্যাকবড

4
স্ক্রিন ওরিয়েন্টেশন স্থির করা থাকলে এটি ব্যর্থ হবে।
অ্যান্ড্রয়েড ডেভ

7
যদি ক্রিয়াকলাপটি প্রদর্শনটিকে ( android:screenOrientation="portrait") লক করে রাখে তবে ব্যবহারকারী কীভাবে ডিভাইসটি ঘোরান তা নির্বিশেষে এই পদ্ধতিটি একই মান প্রদান করবে will সেক্ষেত্রে আপনি সঠিকভাবে অরিয়েন্টেশন বের করার জন্য অ্যাক্সিলোমিটার বা মাধ্যাকর্ষণ সেন্সর ব্যবহার করবেন।
বিড়াল

169

আপনি যদি কিছু ডিভাইসে getRes Source ()। GetConfigration () ব্যবহার করেন তবে এটি ভুল পাবেন। প্রাথমিকভাবে আমরা http://apphan.com.com এ ব্যবহার করেছি । অ্যাফেন্সের দূরবর্তী লগিংয়ের জন্য আমরা এটি বিভিন্ন ডিভাইসে দেখতে পেলাম এবং আমরা দেখেছি যে খণ্ডগুলি এখানে তার ভূমিকা পালন করে। আমি অদ্ভুত মামলাগুলি দেখেছি: উদাহরণস্বরূপ, এইচটিসি ডিজায়ার এইচডিতে বিকল্প পোর্ট্রেট এবং স্কোয়ার (?!):

CONDITION[17:37:10.345] screen: rotation: 270 orientation: square
CONDITION[17:37:12.774] screen: rotation: 0 orientation: portrait
CONDITION[17:37:15.898] screen: rotation: 90
CONDITION[17:37:21.451] screen: rotation: 0
CONDITION[17:38:42.120] screen: rotation: 270 orientation: square

বা মোটেও ওরিয়েন্টেশন পরিবর্তন করা যায় না:

CONDITION[11:34:41.134] screen: rotation: 0
CONDITION[11:35:04.533] screen: rotation: 90
CONDITION[11:35:06.312] screen: rotation: 0
CONDITION[11:35:07.938] screen: rotation: 90
CONDITION[11:35:09.336] screen: rotation: 0

অন্যদিকে, প্রস্থ () এবং উচ্চতা () সর্বদা সঠিক (এটি উইন্ডো ম্যানেজার দ্বারা ব্যবহৃত হয়, তাই এটি আরও ভাল হওয়া উচিত)। আমি বলব যে সবসময় প্রস্থ / উচ্চতা যাচাই করা ভাল ধারণা। যদি আপনি একটি মুহুর্ত সম্পর্কে চিন্তা করেন তবে এটি হ'ল আপনি যা চান - প্রস্থটি উচ্চতা (প্রতিকৃতি), বিপরীত (ল্যান্ডস্কেপ) এর চেয়ে ছোট কিনা তা জানতে বা সেগুলি সমান (বর্গক্ষেত্র) হয়।

তারপরে এটি এই সাধারণ কোডটিতে নেমে আসে:

public int getScreenOrientation()
{
    Display getOrient = getWindowManager().getDefaultDisplay();
    int orientation = Configuration.ORIENTATION_UNDEFINED;
    if(getOrient.getWidth()==getOrient.getHeight()){
        orientation = Configuration.ORIENTATION_SQUARE;
    } else{ 
        if(getOrient.getWidth() < getOrient.getHeight()){
            orientation = Configuration.ORIENTATION_PORTRAIT;
        }else { 
             orientation = Configuration.ORIENTATION_LANDSCAPE;
        }
    }
    return orientation;
}

3
ধন্যবাদ! "অভিমুখীকরণ" আরম্ভ করা যদিও অতিমাত্রায়।
মিঃ মাফেন

getWidthএবং getHeightহ্রাস করা হয় না।
ফাইন্ডআউট_কিউরান

3
@ ব্যবহারকারী 3441905, হ্যাঁ তারা। getSize(Point outSize)পরিবর্তে ব্যবহার করুন। আমি এপিআই 23 ব্যবহার করছি
WindRider

@ জারেক-পোটিউক এটি হ্রাস করা হয়েছে।
হেডিস

53

এই সমস্যাটি সমাধানের আর একটি উপায় হ'ল প্রদর্শন থেকে সঠিক রিটার্ন মানের উপর নির্ভর না করে সমাধান করা অ্যান্ড্রয়েড সংস্থানসমূহের উপর নির্ভর করা।

layouts.xmlফোল্ডারগুলিতে res/values-landএবং res/values-portনিম্নলিখিত সামগ্রী সহ ফাইলটি তৈরি করুন :

মাঝামাঝি / মান জমি / layouts.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="is_landscape">true</bool>
</resources>

মাঝামাঝি / মান-পোর্ট / layouts.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="is_landscape">false</bool>
</resources>

আপনার উত্স কোডে আপনি এখন নিম্নোক্তভাবে বর্তমান ওরিয়েন্টেশনটি অ্যাক্সেস করতে পারবেন:

context.getResources().getBoolean(R.bool.is_landscape)

1
আমি এটি পছন্দ করি কারণ এটি সিস্টেম ইতিমধ্যে ওরিয়েন্টেশন নির্ধারণ করে যা ব্যবহার করে
ক্রুটিজিস্ট্রিং

1
ল্যান্ডস্কেপ / প্রতিকৃতি চেক জন্য সেরা উত্তর!
vtlinh

ডিফল্ট মান ফাইলের মধ্যে এর মান কী হবে?
শশাঙ্ক মিশ্র

46

ফোনের বর্তমান ওরিয়েন্টেশন নির্দিষ্ট করার একটি সম্পূর্ণ উপায়:

    public String getRotation(Context context){
    final int rotation = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getOrientation();
           switch (rotation) {
            case Surface.ROTATION_0:
                return "portrait";
            case Surface.ROTATION_90:
                return "landscape";
            case Surface.ROTATION_180:
                return "reverse portrait";
            default:
                return "reverse landscape";
            }
        }

চিয়ার বিনহ্ এনগুইন


6
আপনার পোস্টে একটি টাইপ রয়েছে - এটি বলা উচিত .getRotation () getOrientation নয়
কিথ

1
এই জন্য +1। আমার সঠিক ওরিয়েন্টেশন জানতে হবে, কেবল ল্যান্ডস্কেপ বনাম প্রতিকৃতি নয়। getOrientation () সঠিক নয় যদি আপনি এসডিকে 8+ তে না থাকেন তবে আপনার ক্ষেত্রে getRotation () ব্যবহার করা উচিত। 'বিপরীত' মোডগুলি এসডিকে 9+ এ সমর্থিত।
পল

6
@ কিথ @ পল আমি কীভাবে getOrientation()কাজ করে তা মনে নেই , তবে এটি ব্যবহার করা সঠিক নয় getRotation()। ঘূর্ণন "Returns the rotation of the screen from its "natural" orientation." উত্স পান । সুতরাং কোনও ফোনে ROTATION_0 বলা প্রতিকৃতি সম্ভবত সঠিক, তবে একটি ট্যাবলেটে এটির "প্রাকৃতিক" অবস্থান সম্ভবত ল্যান্ডস্কেপ এবং ROTATION_0 এর প্রতিকৃতির পরিবর্তে ল্যান্ডস্কেপ ফিরে আসা উচিত।
jp36

দেখে মনে হচ্ছে এটি এগিয়ে যাওয়া পছন্দসই পদ্ধতি: developer.android.com/references/android/view/…
jaysqrd

এটি একটি ভুল উত্তর। কেন ভোট দেওয়া হল? getOrientation (ভাসা [] আর, ভাসা [] মান) ঘূর্ণন ম্যাট্রিক্সের উপর ভিত্তি করে ডিভাইসের অভিযোজনকে গণনা করে।
ব্যবহারকারী 1914692

29

এখানে কোড স্নিপেট ডেমো কীভাবে স্ক্রিন ওরিয়েন্টেশন পাবেন তা হ্যাকবড এবং মার্টিজন দ্বারা প্রস্তাবিত হয়েছিল :

Ri ওরিয়েন্টেশন পরিবর্তনের সময় ট্রিগার:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
        int nCurrentOrientation = _getScreenOrientation();
    _doSomeThingWhenChangeOrientation(nCurrentOrientation);
}

Hack হ্যাকবোড সুপারিশ হিসাবে বর্তমান ওরিয়েন্টেশন পান :

private int _getScreenOrientation(){    
    return getResources().getConfiguration().orientation;
}

বর্তমান স্ক্রিন ওরিয়েন্টেশন পেতে বিকল্প সমাধান রয়েছে Mar মার্টিজন সমাধান অনুসরণ করুন :

private int _getScreenOrientation(){
        Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
        return display.getOrientation();
}

দ্রষ্টব্য : আমি implement & both উভয়ই প্রয়োগ করার চেষ্টা করছিলাম, কিন্তু রিয়েলডেভাইস (NexusOne SDK 2.3) ওরিয়েন্টেশনটিতে এটি ভুল দিকনির্দেশকে ফিরিয়ে দেয়।

★ সুতরাং আমি ব্যবহৃত সমাধানের পরামর্শ দিই দিচ্ছি Screen স্ক্রিন ওরিয়েন্টেশন পেতে যাতে আরও বেশি সুবিধা রয়েছে: স্পষ্টভাবে, সহজ এবং কবজির মতো কাজ করুন।

Expected আমাদের প্রত্যাশিত হিসাবে সঠিক তা নিশ্চিত করতে মনোযোগের ফেরত সতর্কতার সাথে চেক করুন (শারীরিক ডিভাইসগুলির নির্দিষ্টকরণের উপর সীমিত নির্ভরশীলতা থাকতে পারে)

আশা করি এটি সাহায্য করবে,


16
int ot = getResources().getConfiguration().orientation;
switch(ot)
        {

        case  Configuration.ORIENTATION_LANDSCAPE:

            Log.d("my orient" ,"ORIENTATION_LANDSCAPE");
        break;
        case Configuration.ORIENTATION_PORTRAIT:
            Log.d("my orient" ,"ORIENTATION_PORTRAIT");
            break;

        case Configuration.ORIENTATION_SQUARE:
            Log.d("my orient" ,"ORIENTATION_SQUARE");
            break;
        case Configuration.ORIENTATION_UNDEFINED:
            Log.d("my orient" ,"ORIENTATION_UNDEFINED");
            break;
            default:
            Log.d("my orient", "default val");
            break;
        }

13

ব্যবহার getResources().getConfiguration().orientationএটি সঠিক উপায়ে ।

আপনাকে কেবলমাত্র বিভিন্ন ধরণের ল্যান্ডস্কেপ, ডিভাইসটি সাধারণত ব্যবহার করে এমন ল্যান্ডস্কেপ এবং অন্যটি সন্ধান করতে হবে।

কীভাবে এটি পরিচালনা করবেন তা এখনও বুঝতে পারছেন না।


12

এর বেশিরভাগ উত্তর পোস্ট হওয়ার পরে কিছু সময় অতিবাহিত হয়েছে এবং কিছু এখন অবহিত পদ্ধতি এবং ধ্রুবক ব্যবহার করে।

এই পদ্ধতিগুলি এবং ধ্রুবকগুলি আর ব্যবহার না করার জন্য আমি জারেকের কোড আপডেট করেছি :

protected int getScreenOrientation()
{
    Display getOrient = getWindowManager().getDefaultDisplay();
    Point size = new Point();

    getOrient.getSize(size);

    int orientation;
    if (size.x < size.y)
    {
        orientation = Configuration.ORIENTATION_PORTRAIT;
    }
    else
    {
        orientation = Configuration.ORIENTATION_LANDSCAPE;
    }
    return orientation;
}

নোট করুন যে মোডটি Configuration.ORIENTATION_SQUAREআর সমর্থিত নয়।

ব্যবহারের পরামর্শের পদ্ধতির বিপরীতে আমি এটি পরীক্ষা করেছি এমন সমস্ত ডিভাইসে এটি নির্ভরযোগ্য বলে মনে হয়েছিল getResources().getConfiguration().orientation


নোট করুন যে getOrient.getSize (আকার) এর জন্য 13 এপিআই স্তর প্রয়োজন
লেস্টার

6

রানটাইমে স্ক্রিন ওরিয়েন্টেশন পরীক্ষা করুন।

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    // Checks the orientation of the screen
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();

    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
        Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();        
    }
}

5

এটি করার আরও একটি উপায় রয়েছে:

public int getOrientation()
{
    if(getResources().getDisplayMetrics().widthPixels>getResources().getDisplayMetrics().heightPixels)
    { 
        Toast t = Toast.makeText(this,"LANDSCAPE",Toast.LENGTH_SHORT);
        t.show();
        return 1;
    }
    else
    {
        Toast t = Toast.makeText(this,"PORTRAIT",Toast.LENGTH_SHORT);
        t.show();
        return 2;
    }       
}


4

2019 এআইপি 28-তে পরীক্ষা করা হয়েছে, ব্যবহারকারী প্রতিকৃতি ওরিয়েন্টেশন নির্ধারণ করেছেন বা না করেই এবং অন্যের তুলনায় ন্যূনতম কোড সহ , পুরানো উত্তর , নিম্নলিখিতটি সঠিক দিকনির্দেশটি সরবরাহ করে:

/** @return The {@link Configuration#ORIENTATION_SQUARE}, {@link Configuration#ORIENTATION_PORTRAIT}, {@link Configuration#ORIENTATION_LANDSCAPE} constants based on the current phone screen pixel relations. */
private int getScreenOrientation()
{
    DisplayMetrics dm = context.getResources().getDisplayMetrics(); // Screen rotation effected

    if(dm.widthPixels == dm.heightPixels)
        return Configuration.ORIENTATION_SQUARE;
    else
        return dm.widthPixels < dm.heightPixels ? Configuration.ORIENTATION_PORTRAIT : Configuration.ORIENTATION_LANDSCAPE;
}

2

ওরিয়েন্টেশন পরিবর্তন কার্যকর হওয়ার পরে এই কোডটি কাজ করতে পারে বলে আমি মনে করি

Display getOrient = getWindowManager().getDefaultDisplay();

int orientation = getOrient.getOrientation();

অ্যাক্টিভিটি.অনসিফিজারেশন চেনজড (কনফিগারেশন নিউকনফিগ) ফাংশন ও সেট করুন কনটেন্টভিউ কল করার আগে নতুন ওরিয়েন্টেশন সম্পর্কে বিজ্ঞপ্তি পেতে চাইলে নতুন কনফিগ, ওরিয়েন্টেশন ব্যবহার করুন।


2

আমি মনে করি getRotationv () ব্যবহার করা কোনও উপকারে আসেনি কারণ http://developer.android.com/references/android/view/Display.html#getRotation% ২৯৯৯৯ getRotation () স্ক্রিনের ঘূর্ণনটিকে তার "প্রাকৃতিক" থেকে ফিরিয়ে দেয় অভিযোজন।

সুতরাং আপনি যদি না "প্রাকৃতিক" দৃষ্টিভঙ্গি জানেন না তবে আবর্তন অর্থহীন।

আমি একটি সহজ উপায় খুঁজে পেয়েছি,

  Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
  Point size = new Point();
  display.getSize(size);
  int width = size.x;
  int height = size.y;
  if(width>height)
    // its landscape

এই কারও সাথে সমস্যা আছে কিনা আমাকে বলুন?


2

এটি অন্যাপল 3 এর মতো সমস্ত ফোনকে ওভারলে করে

public static boolean isScreenOriatationPortrait(Context context) {
         return context.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT;
         }

সঠিক কোডটি নিম্নরূপ:

public static int getRotation(Context context){
        final int rotation = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getOrientation();

        if(rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_180){
            return Configuration.ORIENTATION_PORTRAIT;
        }

        if(rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270){
            return Configuration.ORIENTATION_LANDSCAPE;
        }

        return -1;
    }

1

পুরানো পোস্ট আমি জানি। ওরিয়েন্টেশন যা-ই হোক না কেন বা অদলবদল হওয়া ইত্যাদি I আমি এই ফাংশনটি ডিজাইন করেছি যা ডিভাইসে প্রতিকৃতি এবং ল্যান্ডস্কেপ বৈশিষ্ট্যগুলি কীভাবে সংগঠিত করা হয় তা জেনে প্রয়োজন ছাড়াই ডিভাইসটিকে সঠিক ওরিয়েন্টেশনে সেট করতে ব্যবহৃত হয়।

   private void initActivityScreenOrientPortrait()
    {
        // Avoid screen rotations (use the manifests android:screenOrientation setting)
        // Set this to nosensor or potrait

        // Set window fullscreen
        this.activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

        DisplayMetrics metrics = new DisplayMetrics();
        this.activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);

         // Test if it is VISUAL in portrait mode by simply checking it's size
        boolean bIsVisualPortrait = ( metrics.heightPixels >= metrics.widthPixels ); 

        if( !bIsVisualPortrait )
        { 
            // Swap the orientation to match the VISUAL portrait mode
            if( this.activity.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT )
             { this.activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); }
            else { this.activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT ); }
        }
        else { this.activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR); }

    }

একটি যাদুমন্ত্র মত কাজ করে!


1

এইভাবে ব্যবহার করুন,

    int orientation = getResources().getConfiguration().orientation;
    String Orintaion = "";
    switch (orientation)
    {
        case Configuration.ORIENTATION_UNDEFINED: Orintaion = "Undefined"; break;
        case Configuration.ORIENTATION_LANDSCAPE: Orintaion = "Landscrape"; break;
        case Configuration.ORIENTATION_PORTRAIT:  Orintaion = "Portrait"; break;
        default: Orintaion = "Square";break;
    }

স্ট্রিং-এ আপনার ওরিশন রয়েছে


1

এটি করার অনেক উপায় আছে, এই কোডের টুকরোটি আমার পক্ষে কাজ করে

 if (this.getWindow().getWindowManager().getDefaultDisplay()
                .getOrientation() == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) {
             // portrait mode
} else if (this.getWindow().getWindowManager().getDefaultDisplay()
                .getOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
                      // landscape
        }

1

আমি মনে করি এই সমাধানটি সহজ

if (context.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT){
  user_todat_latout = true;
} else {
  user_todat_latout = false;
}

সাধারণত, উত্তরগুলি আরও কার্যকর হয় যদি সেগুলিতে কোডটি কী করা উচিত এবং কেন এটি অন্যকে পরিচয় করিয়ে না দিয়ে সমস্যার সমাধান করে তার ব্যাখ্যা অন্তর্ভুক্ত করে।
টম

হ্যাঁ দুঃখিত জন্য আমি মনে করি এটা প্রয়োজন হলে সমান Configuration.ORIENTATION_PORTRAIT প্রতিকৃতি মধ্যে :) গড় অ্যাপ্লিকেশন যে কোডটি চেক অভিযোজন ঠিক এই ব্লক ব্যাখ্যা না ছিল
নিউটনকে নাবিল

1

কেবল সহজ দুটি লাইন কোড

if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
    // do something in landscape
} else {
    //do in potrait
}

0

সহজ এবং সহজ :)

  1. 2 এক্সএমএল লেআউট করুন (যেমন প্রতিকৃতি এবং ল্যান্ডস্কেপ)
  2. জাভা ফাইলে লিখুন:

    private int intOrientation;

    onCreateপদ্ধতি আগে setContentViewলেখ:

    intOrientation = getResources().getConfiguration().orientation;
    if (intOrientation == Configuration.ORIENTATION_PORTRAIT)
        setContentView(R.layout.activity_main);
    else
        setContentView(R.layout.layout_land);   // I tested it and it works fine.

0

এটাও লক্ষণীয় যে আজকাল, getResources().getConfiguration().orientationআপনি যদি লেআউট কারণে এমনটি করেন তবে সুস্পষ্ট দিকনির্দেশনা পরীক্ষা করার কম কারণ আছে , যেমন অ্যান্ড্রয়েড / / এপিআই ২৪++ এ প্রবর্তিত মাল্টি-উইন্ডো সমর্থন আপনার লেআউটগুলির সাথে কিছুটা গোলমাল করতে পারে অভিযোজন। উন্নত ব্যবহারের বিষয়ে বিবেচনা করার জন্য <ConstraintLayout>, এবং বিকল্প লেআউট প্রাপ্তিসাধ্য প্রস্থ বা উচ্চতা উপর নির্ভরশীল বা নির্ধারণের যা লেআউট ব্যবহার করা হচ্ছে, যেমন উপস্থিতি অন্য ঠাট সহ, নির্দিষ্ট টুকরা আপনার কার্যকলাপ সংযুক্ত করা হচ্ছে।


0

আপনি এটি ব্যবহার করতে পারেন ( এখানে ভিত্তি করে ):

public static boolean isPortrait(Activity activity) {
    final int currentOrientation = getCurrentOrientation(activity);
    return currentOrientation == ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT || currentOrientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
}

public static int getCurrentOrientation(Activity activity) {
    //code based on https://www.captechconsulting.com/blog/eric-miles/programmatically-locking-android-screen-orientation
    final Display display = activity.getWindowManager().getDefaultDisplay();
    final int rotation = display.getRotation();
    final Point size = new Point();
    display.getSize(size);
    int result;
    if (rotation == Surface.ROTATION_0
            || rotation == Surface.ROTATION_180) {
        // if rotation is 0 or 180 and width is greater than height, we have
        // a tablet
        if (size.x > size.y) {
            if (rotation == Surface.ROTATION_0) {
                result = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
            } else {
                result = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
            }
        } else {
            // we have a phone
            if (rotation == Surface.ROTATION_0) {
                result = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
            } else {
                result = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
            }
        }
    } else {
        // if rotation is 90 or 270 and width is greater than height, we
        // have a phone
        if (size.x > size.y) {
            if (rotation == Surface.ROTATION_90) {
                result = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
            } else {
                result = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
            }
        } else {
            // we have a tablet
            if (rotation == Surface.ROTATION_90) {
                result = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
            } else {
                result = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
            }
        }
    }
    return result;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.