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


98

আমি মনে করি এটি বাস্তবায়নযোগ্য যেহেতু স্ক্রিন রোটেশন আচরণ অ্যাপ্লিকেশন স্তরে যেতে পারে।


আপনি কি এই চেষ্টা করেছেন? : স্ট্যাকওভারফ্লো.com
সৈয়দ জলিল হাসান

উত্তর:


218

হ্যাঁ এটি কার্যকর!

ক্রিয়াকলাপ তথ্য.এস.সি.আর.সি.আর

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

ক্রিয়াকলাপ তথ্য.এস.সি.আর.সি.আর

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

ক্রিয়াকলাপ

http://developer.android.com/references/android/content/pm/ActivityInfo.html

লিঙ্কটি উল্লেখ করুন:

Button buttonSetPortrait = (Button)findViewById(R.id.setPortrait);
Button buttonSetLandscape = (Button)findViewById(R.id.setLandscape);

buttonSetPortrait.setOnClickListener(new Button.OnClickListener(){

   @Override
   public void onClick(View arg0) {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
   }

});

buttonSetLandscape.setOnClickListener(new Button.OnClickListener(){

   @Override
   public void onClick(View arg0) {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
   }

});

http://android-er.blogspot.in/2011/08/set-screen-orientation-programmatically.html


ধন্যবাদ তবে এই ফাংশনটি কী কোনও শিকড় ডিভাইসে চালানো দরকার? মনে হচ্ছে এটি আমার সেল ফোনে কাজ করছে না তবে আমার মূলযুক্ত ট্যাবলেটটিতে কাজ করছে।
স্যাম

না এটি এর মতো নয় .. আসলে পোস্ট করার আগে আমি সেই লিঙ্কটিতে কোডটি পরীক্ষা করেছিলাম .. এটি আমার ডিভাইসে কাজ করছিল ..
হরিহরণ

ঠিক আছে, হ্যাঁ, আপনি ঠিক বলেছেন। আমি কেবলমাত্র অন্য একটি ডিভাইস পরীক্ষা করেছি এবং এটি ভালভাবে কাজ করে। ভাল, আমার স্যামসাং গ্যালাক্সি নেক্সাস কাজ করে না। কেন জানি না।
স্যাম

4
উত্তর করার জন্য ধন্যবাদ. কিন্তু এটি সেই মোডে অ্যাপ্লিকেশনটি লক করে। যখন ব্যবহারকারী ডিভাইসটি ঘোরান তখন স্ক্রিনটি ঘুরছে না।
Eco4ndly

4
যদি আমি উত্তর হিসাবে ল্যান্ডস্কেপটিতে অগ্রগতিতে সেট করে থাকি তবে ব্যবহারকারী ডিভাইসটি ঘুরিয়ে দিয়ে ওরিয়েন্টেশনটি পরিবর্তন করতে সক্ষম হয় না। এই সমস্যাটি হ্যান্ডেল করার কোনও উপায়? আমি এই উত্তরে যা শিখানো হয়েছিল তা করতে চাই তবে তারপরে ব্যবহারকারী যখন ডিভাইসটি ঘুরিয়ে দেয় তখন এটি অভিমুখ পরিবর্তন করতে থাকবে changing
শীঘ্রই সান্তোস

36

হ্যাঁ, আপনি যে কোনও সময় ব্যবহার করতে চাইলে স্ক্রিন ওরিয়েন্টেশনটি প্রোগ্রামক্রমেটিক সেট করতে পারেন:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

যথাক্রমে ল্যান্ডস্কেপ এবং প্রতিকৃতি মোডের জন্য। অ্যাক্টিভিটি ক্লাসের জন্য সেট-রিকুইস্টেড ওরিয়েন্টেশন () পদ্ধতি উপলব্ধ , তাই এটি আপনার ক্রিয়াকলাপের অভ্যন্তরে ব্যবহার করা যেতে পারে।

এবং এইভাবে আপনি বর্তমান স্ক্রিনের ওরিয়েন্টেশন পেতে এবং এটির বর্তমান অবস্থার উপর নির্ভর করে পর্যাপ্ত পরিমাণে সেট করতে পারেন:

Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
final int orientation = display.getOrientation(); 
 // OR: orientation = getRequestedOrientation(); // inside an Activity

// set the screen orientation on button click
Button btn = (Button) findViewById(R.id.yourbutton);
btn.setOnClickListener(new View.OnClickListener() {
          public void onClick(View v) {

              switch(orientation) {
                   case Configuration.ORIENTATION_PORTRAIT:
                       setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
                       break;
                   case Configuration.ORIENTATION_LANDSCAPE:
                       setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                       break;                   
               }
          }
   });

এখান থেকে নেওয়া হয়েছে: http://techblogon.com/android-screen-orientation- بدل-rotation-example/

সম্পাদনা

এছাড়াও, আপনি স্ক্রিন ওরিয়েন্টেশন ব্যবহার করে এটি পেতে পারেন Configuration:

Activity.getResources().getConfiguration().orientation

4
আমি ব্যবহার করার সুপারিশ করছি getRequestedOrientation()বর্তমান স্ক্রীনে অভিযোজন পেতে: stackoverflow.com/a/21909327/1037294
a.ch.

getRequestedOrientation()আপনি UNSPECIFIEDঅ্যাপ্লিকেশন শুরু করার সময় আপনাকে দেয় । সুতরাং উপরে শ্রোতা সঙ্গে এটি পর্দা পরিবর্তন করবে না এবং যদি আপনি যোগ UNSPECIFIEDকরতে switchএটি এক পর্দা করা উচিত প্রতিকৃতি / ল্যান্ডস্কেপ প্রথম স্থান।
মার্টালিস

22

যেখানেই সম্ভব, দয়া করে SCREEN_ORIENTATION_landSCAPE বা SCREEN_ORIENTATION_PORTRAIT ব্যবহার করবেন না। পরিবর্তে ব্যবহার করুন:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);

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

দ্রষ্টব্য: ফোনের জন্য, আমি যাচাই করেছি এমন কমপক্ষে বেশ কয়েকটি, এটি কেবলমাত্র "ডান দিকের" প্রতিকৃতি মোডকে মঞ্জুরি দেয়, তবে, সেনসোর_পুর্ট্রেট ট্যাবলেটগুলিতে সঠিকভাবে কাজ করে।

দ্রষ্টব্য: এই বৈশিষ্ট্যটি এপিআই লেভেল 9 এ প্রবর্তিত হয়েছিল, সুতরাং আপনার যদি 8 বা তত কম সমর্থন করতে হয় (তবে সম্ভবত এই সময়ে নয়) তবে তার পরিবর্তে ব্যবহার করুন:

setRequestedOrientation(Build.VERSION.SDK_INT < 9 ?
                        ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE :
                        ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
setRequestedOrientation(Build.VERSION.SDK_INT < 9 ?
                        ActivityInfo.SCREEN_ORIENTATION_PORTRAIT :
                        ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);

19

স্ক্রিনের ওরিয়েন্টেশন সেট করতে এটি ব্যবহার করুন:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

বা

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

এবং এটি আপনার প্রকাশ্যে যুক্ত করতে ভুলবেন না:

android:configChanges = "orientation"

4
আপনার উভয়েরই দরকার "orientation|screenSize", এখানে দেখুন: বিকাশকারী.অ্যান্ড্রয়েড
বেনি

7

একটি কার্যকারী কোড:

private void changeScreenOrientation() {
    int orientation = yourActivityName.this.getResources().getConfiguration().orientation;
    if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        showMediaDescription();
    } else {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        hideMediaDescription();
    }
    if (Settings.System.getInt(getContentResolver(),
            Settings.System.ACCELEROMETER_ROTATION, 0) == 1) {
        Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
            }
        }, 4000);
    }
}

আপনার বোতাম ক্লিক এই পদ্ধতি কল

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.