මගේ ඇන්ඩ්රොයිඩ් යෙදුමේ සමහර දර්ශන සඳහා භූ දර්ශන මාදිලිය අක්රිය කරන්නේ කෙසේද?
මගේ ඇන්ඩ්රොයිඩ් යෙදුමේ සමහර දර්ශන සඳහා භූ දර්ශන මාදිලිය අක්රිය කරන්නේ කෙසේද?
Answers:
android:screenOrientation="portrait"
AndroidManifest.xml හි ක්රියාකාරකමට එක් කරන්න . උදාහරණයක් වශයෙන්:
<activity android:name=".SomeActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" />
සංස්කරණය කරන්න: මෙය සුපිරි ජනප්රිය පිළිතුරක් බවට පත්ව ඇති හෙයින්, සිතුවමට බල කිරීම කලාතුරකින් එය නිරන්තරයෙන් යොදන ගැටලුවලට නිවැරදි විසඳුම බැවින් මට ඉතා වරදකාරී හැඟීමක් දැනේ.
බලහත්කාරයෙන් ආලේඛ්ය චිත්රයක් සහිත ප්රධාන අවවාද:
retainInstance
කොටස් .එබැවින් බොහෝ යෙදුම් මඟින් දුරකථන සංවේදක, මෘදුකාංග සහ භෞතික වින්යාසය මඟින් පරිශීලකයාට ඔබේ යෙදුම සමඟ අන්තර් ක්රියා කිරීමට අවශ්ය ආකාරය පිළිබඳව ඔවුන්ගේම තීරණයක් ගැනීමට ඉඩ දිය යුතුය. sensor
ඔබේ භාවිතයේ දිශානතියේ පෙරනිමි හැසිරීම ගැන ඔබ සතුටු නොවන්නේ නම්, ඔබට තවමත් සිතා බැලීමට අවශ්ය අවස්ථා කිහිපයක් :
nosensor
දිශානතිය සඳහා භාවිතා කිරීම. මෙය බොහෝ ටැබ්ලට් පරිගණකවල භූ දර්ශනය සහ බොහෝ දුරකථන වල ආලේඛ්ය චිත්ර සඳහා බල කරයි, නමුත් මම තවමත් බොහෝ "සාමාන්ය" යෙදුම් සඳහා මෙය නිර්දේශ නොකරමි (සමහර පරිශීලකයින් ඔවුන්ගේ දුරකථනවල භූ දර්ශන මෘදුකාංග පුවරුව ටයිප් කිරීමට කැමතියි, සහ බොහෝ ටැබ්ලට් භාවිතා කරන්නන් පෝට්රේට් වලින් කියවනු ලැබේ - සහ ඔබ ඔවුන්ට ඉඩ දිය යුතුයි).sensorPortrait
ට වඩා හොඳ විය හැකිය portrait
; මෙය ටැබ්ලටයේ බහුලව භාවිතා වන උඩු යටිකුරු ආලේඛ්ය චිත්රයක් සඳහා ඉඩ ලබා දේ.AndroidManifest.xml
මෙම ලිපිය කියවන තෙක් ගොනු මාරුව ගැන මා දැන සිටියේ නැත , එබැවින් මගේ යෙදුම්වල මම ඒ වෙනුවට මෙය භාවිතා කර ඇත:
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); // Fixed Portrait orientation
android:screenOrientation="portrait"
ඔබේ ක්රියාකාරකම් මේ ආකාරයෙන් ප්රකාශ කරන ඔබේ මැනිෆෙස්ට් ගොනුවට මෙය එක් කරන්න
<activity android:name=".yourActivity"
....
android:screenOrientation="portrait" />
ඔබට ජාවා කේතය භාවිතා කිරීමට අවශ්ය නම් උත්සාහ කරන්න
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
setContentView
ඔබගේ ක්රියාකාරකම් සඳහා ක්රමයක් ඇමතීමට පෙරonCreate()
.
මෙම උපකාරය සහ සැමට පහසුවෙන් තේරුම් ගත හැකි යැයි සිතමු ...
මෙහි ඇති පිළිතුරු බොහොමයක් "portrait"
ඔබගේ AndroidManifest.xml ගොනුවේ භාවිතා කිරීමට යෝජනා කරයි . මෙය හොඳ විසඳුමක් සේ පෙනේ - නමුත් ප්රලේඛනයේ සඳහන් පරිදි, ඔබ භූ දර්ශන පමණක් තිබිය හැකි උපාංග තෝරා ගනී. නිසි දිශානතිය ලබා නොගෙන ඇතැම් උපාංගවලට (භූ දර්ශනයේ වඩාත්ම හොඳින් ක්රියා කරන) ආලේඛ්ය චිත්රයට යාමට ඔබ බල කරයි.
මගේ යෝජනාව "nosensor"
ඒ වෙනුවට භාවිතා කිරීමයි . මෙමඟින් උපාංගය එහි පෙරනිමි කැමති දිශානතිය භාවිතා කිරීමට ඉඩ දෙනු ඇත, ගූගල් ප්ලේ හි කිසිදු මිලදී ගැනීම් / බාගැනීම් අවහිර නොකරනු ඇත, සහ සංවේදකය ඔබගේ (එන්ඩීකේ, මගේ නඩුවේ) ක්රීඩාව අවුල් නොකරන බවට සහතික කරයි.
ඔබට පරිශීලක සැකසුම් අවශ්ය නම්,
එවිට මම නිර්දේශ කරමි setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
ඔබට සැකසුම් මෙනුවකින් සැකසුම් වෙනස් කළ හැකිය.
මට මෙය අවශ්ය වන්නේ මගේ ටයිමරයන් තිරයේ ඇති දේට අනුරූප විය යුතු අතර තිරය භ්රමණය කිරීමෙන් වත්මන් ක්රියාකාරකම් විනාශ වනු ඇත.
ඔබේ ප්රකාශනයේ මෙම රේඛාව මෙන් එක් කරන්න
android: screenOrientation = "ආලේඛ්ය චිත්රය"
<manifest
package="com.example.speedtest"
android:versionCode="1"
android:versionName="1.0" >
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="ComparisionActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" >
</activity>
</application>
</manifest>
ඔබගේ සියලු ක්රියාකාරකම් පොදු පාදක පන්තියක් දක්වා දීර් without නොකර ඔබේ සම්පූර්ණ යෙදුම සඳහා මෙය කළ හැකිය.
ඔබේ ව්යාපෘතියට යෙදුම් උප පංතියක් ඇතුළත් කිරීමට වග බලා ගැනීම උපක්රමයයි. ඔබගේ යෙදුම මුලින්ම ආරම්භ වන විට එහි onCreate () හි, ක්රියාකාරකම් ජීවන චක්රීය සිදුවීම් පිළිබඳ දැනුම්දීම් ලබා ගැනීම සඳහා ඔබ ActivityLifecycleCallbacks වස්තුවක් (API මට්ටම 14+) ලියාපදිංචි කරයි.
ඔබගේ යෙදුමේ කිසියම් ක්රියාකාරකමක් ආරම්භ වූ විට (හෝ නැවැත්වූ, හෝ නැවත ආරම්භ කළ විට හෝ ඕනෑම දෙයක්) ඔබේම කේතයක් ක්රියාත්මක කිරීමට මෙය ඔබට අවස්ථාව ලබා දෙයි. මෙම අවස්ථාවේදී ඔබට අලුතින් සාදන ලද ක්රියාකාරකම් මත setRequestedOrientation () අමතන්න.
ඔබේ මැනිෆෙස්ට් ගොනුවේ යෙදුම: name = ". MyApp" එක් කිරීමට අමතක නොකරන්න.
class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
// register to be informed of activities starting up
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity,
Bundle savedInstanceState) {
// new activity created; force its orientation to portrait
activity.setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
....
});
}
}
ඔබගේ ක්රියාකාරකම් ටැගය තුළ මෙම ගුණාංගය එක් කරන්න.
android:screenOrientation="portrait"
android:screenOrientation="portrait"
භූ දර්ශන ප්රකාරය අක්රිය කිරීමට අවශ්ය ක්රියාකාරකමට එක් කරන්න .
ඔබට අක්රීය කිරීමට අවශ්ය නම් Landscape mode for your android app
(හෝ තනි ක්රියාකාරකමක්) ඔබ කළ යුත්තේ එකතු කිරීම පමණි,
android:screenOrientation="portrait"
AndroidManifest.xml
ගොනුවේ ක්රියාකාරකම් ටැගය වෙත .
මෙන්:
<activity android:name="YourActivityName"
android:icon="@drawable/ic_launcher"
android:label="Your App Name"
android:screenOrientation="portrait">
තවත් ක්රමයක්, ක්රමලේඛ ප්රවේශය.
ඔබට මෙය ක්රමානුකූලව කිරීමට අවශ්ය නම් එනම්. ජාවා කේතය භාවිතා කිරීම. භූ දර්ශන මාදිලියේ පෙන්වීමට ඔබට අවශ්ය නොවන ක්රියාකාරකම් වල ජාවා පන්තියේ පහත කේතය එක් කිරීමෙන් ඔබට එය කළ හැකිය.
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
එය ඔබට උපකාරී වනු ඇතැයි මම බලාපොරොත්තු වෙමි .ඔබ වෙත පිවිසිය හැකි වැඩි විස්තර සඳහා සබැඳි විස්තරය මෙහි ඇතුළත් කරන්න
android:screenOrientation="nosensor">
ක්රියාකාරකමේ onCreate () හි මෙය භාවිතා කරන්න
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
ඔබ android:screenOrientation="sensorPortrait"
AndroidManifest.xml හි වෙනස් විය යුතුය
සෑම ක්රියාකාරී ප්රවේශයකම දිශානතිය එක් කිරීමේ කරදරයෙන් මිදීමට ඔබට අවශ්ය නැතිනම්, 'ක්රියාකාරකම' වෙනුවට ඔබේ යෙදුමේ සෑම ක්රියාකාරකමකින්ම උරුම වන මූලික ක්රියාකාරකම් පන්තියක් ('ක්රියාකාරකම්' හෝ 'AppCompatActivity' උරුම කර ගනී) සාදන්න. 'හෝ' AppCompatActivity 'සහ ඔබේ මූලික ක්රියාකාරිත්වයේ පහත කේතය එකතු කරන්න:
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
// rest of your code......
}
සමහර දෘෂ්ටි කෝණයෙන් දිශානතිය වෙනස් කරන්නේ කෙසේද
සමස්ත ක්රියාකාරිත්වයේ දිශානතිය අගුළු දැමීම වෙනුවට, ඔබේ ඕනෑම දෘෂ්ටියකින් ප්රායෝගිකව දිශානතිය ගතිකව අගුළු දැමීමට ඔබට මෙම පන්තිය භාවිතා කළ හැකිය: -
ඔබේ දර්ශනය භූ දර්ශනය බවට පත් කරන්න
OrientationUtils.lockOrientationLandscape(mActivity);
ඔබේ අදහස පෝට්රේට් කරන්න
OrientationUtils.lockOrientationPortrait(mActivity);
unlock දිශානතිය
OrientationUtils.unlockOrientation(mActivity);
දිශානතිය උපයෝගිතා පන්තිය
import android.app.Activity;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.os.Build;
import android.view.Surface;
import android.view.WindowManager;
/* * This class is used to lock orientation of android app in nay android devices
*/
public class OrientationUtils {
private OrientationUtils() {
}
/** Locks the device window in landscape mode. */
public static void lockOrientationLandscape(Activity activity) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
}
/** Locks the device window in portrait mode. */
public static void lockOrientationPortrait(Activity activity) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
/** Locks the device window in actual screen mode. */
public static void lockOrientation(Activity activity) {
final int orientation = activity.getResources().getConfiguration().orientation;
final int rotation = ((WindowManager) activity.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay()
.getRotation();
// Copied from Android docs, since we don't have these values in Froyo
// 2.2
int SCREEN_ORIENTATION_REVERSE_LANDSCAPE = 8;
int SCREEN_ORIENTATION_REVERSE_PORTRAIT = 9;
// Build.VERSION.SDK_INT <= Build.VERSION_CODES.FROYO
if (!(Build.VERSION.SDK_INT <= Build.VERSION_CODES.FROYO)) {
SCREEN_ORIENTATION_REVERSE_LANDSCAPE = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
SCREEN_ORIENTATION_REVERSE_PORTRAIT = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
}
if (rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_90) {
if (orientation == Configuration.ORIENTATION_PORTRAIT) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
} else if (rotation == Surface.ROTATION_180 || rotation == Surface.ROTATION_270) {
if (orientation == Configuration.ORIENTATION_PORTRAIT) {
activity.setRequestedOrientation(SCREEN_ORIENTATION_REVERSE_PORTRAIT);
} else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
activity.setRequestedOrientation(SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
}
}
}
/** Unlocks the device window in user defined screen mode. */
public static void unlockOrientation(Activity activity) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER);
}
}
ඔබ එක් එක් ක්රියාකාරකමෙහි දිශානතිය සැකසිය යුතුය.
<activity
android:name="com.example.SplashScreen2"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Black.NoTitleBar" >
</activity>
<activity
android:name="com.example.Registration"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Black.NoTitleBar" >
</activity>
<activity
android:name="com.example.Verification"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Black.NoTitleBar" >
</activity>
<activity
android:name="com.example.WelcomeAlmostDone"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Black.NoTitleBar" >
</activity>
<activity
android:name="com.example.PasswordRegistration"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Black.NoTitleBar" >
</activity>
ඔබ Xamarin C # භාවිතා කරන්නේ නම් මෙම විසඳුම් සමහරක් ක්රියා නොකරනු ඇත. මෙන්න මම වැඩ කිරීමට සොයාගත් විසඳුම.
[Activity(MainLauncher = true, Icon = "@drawable/icon", ScreenOrientation = ScreenOrientation.Portrait)]
පංතියට ඉහළින් හොඳින් ක්රියා කරයි, අනෙක් විසඳුම් වලට සමානව, ගෝලීය වශයෙන් අදාළ නොවන අතර සෑම ක්රියාකාරකම් ශීර්ෂයකම තැබිය යුතුය.
ඔබේ මැනිෆෙස්ට්. Xml හි මෙය ලිවීමෙන් ඔබේ විශේෂිත ක්රියාකාරකම් සැමවිටම පෝට්රේට් ප්රකාරයේ රැඳී සිටීමට ඔබට බල කළ හැකිය
<activity android:name=".MainActivity"
android:screenOrientation="portrait"></activity>
ඔබගේ ක්රියාකාරකම්වල onCreate () ක්රමයට පහත පේළියක් ලිවීමෙන් පසු ක්රියාකාරකම් ප්රකාරයේ රැඳී සිටීමට ඔබට බල කළ හැකිය
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.your_layout);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
<android . . . >
. . .
<manifest . . . >
. . .
<application>
<activity android:name=".MyActivity"
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation">
</activity>
</application>
</manifest>
</android>
ඔබේ ව්යාපෘතියට ප්රශංසා කරන්න,
npm ස්ථාපනය කරන්න
npm i ප්රතික්රියා-ස්වදේශීය-දිශානතිය-ලොකර්
එවිට ඔබ React_Native (ඔබේ ව්යාපෘති ෆෝල්ඩරය) / android / app / src / main / AndroidManifest.xml වැනි මැනිෆෙස්ට් පන්තිය භාවිතා කරයි.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<application
android:name=".MainApplication"
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher"
android:allowBackup="false"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:screenOrientation="landscape"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
</application>
ඔබට ස්තුතියි!
<apphome>/platform/android
සාදන ලද නාමාවලියෙහි AndroidManifest.xml
(ජනනය කළ එකෙන් එය පිටපත් කිරීම). ඉන්පසු සියලුම ක්රියාකාරකම් අංග වලට android:screenOrientation=
" portrait
" එකතු කරන්න .
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="in.co.nurture.bajajfinserv">
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<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:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
android: screenOrientation යන ගුණාංගය භාවිතා කිරීමෙන් අපට පෝට්රේට් හෝ භූ දර්ශන මාදිලියේ ක්රියාකාරකම් සීමා කළ හැකිය.
මගේ වැඩසටහනේ අපට එකකට වඩා ක්රියාකාරකම් තිබේ නම්, ඕනෑම ක්රියාකාරකමක් ඕනෑම ආකාරයකින් සීමා කිරීමට ඔබට නිදහස ඇති අතර එය ඔබට අවශ්ය නොවන අනෙක් අයට කිසි විටෙකත් බලපාන්නේ නැත.
එකතු android:screenOrientation="portrait"
දී AndroidManifest.xml ගොනුව.
උදාහරණයක් වශයෙන් :
<activity android:name=".MapScreen"
android:screenOrientation="portrait"></activity>
වෙනත් කෙනෙකුට උපකාර කිරීමේ අපේක්ෂාවෙන්, AndroidManifest.xml හි ACTIVITY හි පහත දැක්වෙන ගුණාංගය ඔබට අවශ්ය වන්නේ:
android: configChanges = "දිශානතිය"
ඉතින්, සම්පූර්ණ ක්රියාකාරකම් නෝඩ්:
<activity android:name="Activity1"
android:icon="@drawable/icon"
android:label="App Name"
android:configChanges="orientation">
එය මට වැඩ කළා, AndroidManifest ගොනුවේ මෙම කේතය එක් කිරීමට උත්සාහ කරන්න
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:screenOrientation="portrait"
android:theme="@style/AppTheme">
....
....
</application>
එය ඔබේ මැනිෆෙස්ටයට දමන්න.
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:screenOrientation="sensorPortrait" />
දිශානතිය ආලේඛ්ය චිත්රයක් වනු ඇත, නමුත් පරිශීලකයාගේ දුරකථනය උඩු යටිකුරු වී ඇත්නම්, එය නිවැරදි මාර්ගයද පෙන්වයි. (එබැවින් ඔබේ තිරය අංශක 180 ක් භ්රමණය වේ).
ක්රියාකාරකම බහු කවුළු ප්රකාරයේදී ක්රියාත්මක වන්නේ නම් පද්ධතිය මෙම ගුණාංගය නොසලකා හරියි .
ඔබගේ ක්රියාකාරකම් පළමු උපාංග දිශානතියේ තත්වයට සම්බන්ධ නම්, ක්රමයේ වත්මන් උපාංග දිශානතිය ලබා ගෙන onCreate
එය සදහටම නිවැරදි කරන්න:
int deviceRotation = ((WindowManager) getBaseContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getOrientation();
if(deviceRotation == Surface.ROTATION_0) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
else if(deviceRotation == Surface.ROTATION_180)
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
}
else if(deviceRotation == Surface.ROTATION_90)
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
else if(deviceRotation == Surface.ROTATION_270)
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
}