📜  在Android中锁定屏幕方向

📅  最后修改于: 2021-05-10 14:39:31             🧑  作者: Mango

如果存在一种情况,您需要将整个应用程序设置为纵向模式或横向模式,或者其中一个“活动”应处于纵向模式,而所有其他活动都应设置为自动屏幕方向,那么本文将使您做到这一点简单的步骤。因此,在本文中,我们将学习以下两件事。

  • 如何使整个应用程序处于纵向或横向模式?这是处于纵向模式的整个应用程序的预览:

使整个应用程序处于纵向模式

  • 以及如何使其中一个活动处于纵向模式,而所有其他活动都应设置为自动屏幕方向?这是相同的预览:

锁定屏幕方向预览

锁定屏幕方向的步骤

步骤1:创建一个新项目

要在Android Studio中创建新项目,请参阅如何在Android Studio中创建/启动新项目请注意,选择Java作为编程语言。重命名在MainActivity文件作为活动1acticity_mainlayout_activity_1(重命名在两个活动之间进行,以避免混淆)。

步骤2:建立另一个空白活动

现在,通过右键单击应用程序->新建->活动->空活动来创建另一个空活动,并使用Activity2重命名该活动,还将布局名称重命名为layout_activity_2。如果您无法执行上述步骤,请参考以下图片。

新活动
重命名活动

步骤3:使用layout_activity_1.xml文件

需要在layout_activity_1中包含文本和按钮因此,打开layout_activity_1.xml并添加包含其中的小部件TextViewButton ,以便我们区分这两个活动。

layout_activity_1.xml


  
    
  
    
    


Activity1.java
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
  
public class Activity1 extends AppCompatActivity {
  
    // Invoke the button widget
    Button gotoActivity2;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_activity_1);
  
        // Register the button with button ID
        gotoActivity2 = findViewById(R.id.goto_activity_2);
  
        // Set onclick Listener for the button as :
        // So that it can goto Activity2
        gotoActivity2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent i = new Intent(Activity1.this, Activity2.class);
                startActivity(i);
            }
        });
    }
}


layout_activity_2.xml


  
    
  
    


Activity2.java
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
  
public class Activity2 extends AppCompatActivity {
  
    // Invoke the button widget
    Button gotoActivity1;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_activity_2);
  
        // Register the button with appropriate button ID
        gotoActivity1 = findViewById(R.id.goto_activity_1);
  
        // Set onClick Listener for the button as :
        // So that it goes to Activity1
        gotoActivity1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent i = new Intent(Activity2.this, Activity1.class);
                startActivity(i);
            }
        });
    }
}


AndroidManifest.xml


  
  
    
  
        
        
        
  
        
        
            
                
  
                
            
        
    
  


AndroidManifest.xml


      
    
  
        
  
        
        
            
                
  
                
            
        
    
  


输出UI生成为:

输出用户界面

步骤4:使用Activity1工作。 Java文件

现在,您需要处理上面的转到活动2按钮。因此,现在打开Activity1。 Java并通过调用以下代码来处理按钮。有关显式意图,请参阅此内容 Android |带有示例的隐式和显式意图,以及在android中处理按钮的单击事件,您可以参考以下内容:处理Button中的单击事件|安卓。

活动1。Java

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
  
public class Activity1 extends AppCompatActivity {
  
    // Invoke the button widget
    Button gotoActivity2;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_activity_1);
  
        // Register the button with button ID
        gotoActivity2 = findViewById(R.id.goto_activity_2);
  
        // Set onclick Listener for the button as :
        // So that it can goto Activity2
        gotoActivity2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent i = new Intent(Activity1.this, Activity2.class);
                startActivity(i);
            }
        });
    }
}

步骤5:使用layout_activity_2.xml文件

现在打开layout_activity_2.xml并添加小部件TextViewButton。

layout_activity_2.xml



  
    
  
    

输出UI生成为:

输出用户界面

步骤6:使用Activity2进行唤醒。 Java文件

我们需要处理上面的转到活动1按钮。要处理此按钮,请打开Activity2。 Java并调用以下代码:

活动2。Java

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
  
public class Activity2 extends AppCompatActivity {
  
    // Invoke the button widget
    Button gotoActivity1;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_activity_2);
  
        // Register the button with appropriate button ID
        gotoActivity1 = findViewById(R.id.goto_activity_1);
  
        // Set onClick Listener for the button as :
        // So that it goes to Activity1
        gotoActivity1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent i = new Intent(Activity2.this, Activity1.class);
                startActivity(i);
            }
        });
    }
}

第7步:现在您已经完成了两个活动之间的交互,已经创建了两个活动,现在您的应用程序应如下所示。

步骤8:如何使整个应用程序处于纵向或横向模式?

现在,我们将讨论如何使整个应用程序处于纵向模式(无论应用程序中的活动均处于严格的纵向模式)。

  • 现在,通过转到应用程序-> src-> main-> AndroidManifest.xml,打开AndroidManifest文件,您可以看到下面的图像来获取文件:

  • 在此项目中,我们仅创建了两个活动,因此将只有两个活动属性可见。
  • 现在,您需要调用android:screenOrientation =” portrait”才能进入纵向模式。如果您希望活动处于横向模式,则需要调用android:screenOrientation =“ landscape”。
  • 现在,您将在上述screenOrientation属性下获得红线。因此,我们需要调用其他属性工具:ignore =“ LockedOrientationActivity”(在其中调用screenOrientation属性),以忽略锁定的屏幕方向。
  • 现在, AndroidManifest.xml文件应类似于以下内容:

AndroidManifest.xml



  
  
    
  
        
        
        
  
        
        
            
                
  
                
            
        
    
  

  • 现在,我们只为两个活动添加了android:screenOrientation =“ portrait”tools:ignore =“ LockedOrientationActivity” ,因为我们在项目中只有两个活动。如果您有两个以上或可能是两个,则需要将这些属性包括在所有活动中,以便可以将整个应用程序锁定为纵向模式。
  • 如果按以下任何一个图标,则仿真器设备应旋转,该图标位于仿真器的工具栏下方:

  • 旋转设备后,应用程序的行为应类似于:

输出

  • 完成后,我们使整个应用程序处于纵向模式。同样,可以通过调用以下属性使整个应用程序处于横向模式:

步骤9:如何使任何一项活动处于纵向模式?

  • 现在,我们将第一个活动Activity1严格设置为纵向模式,将Activity2设置为自动定向。
  • 在这里,您必须在您选择的任何活动中调用android:screenOrientation =“ portrait” (横向模式为“ landscape” )和tools:ignore =“ LockedOrientationActivity” 。在这里,仅针对Activity1调用了此方法。 Activity2处于自动方向。
  • 再次打开AndroidManifest.xml文件,并通过调用以下代码,使Activity1严格处于纵向模式,并使Activity2变为自动屏幕方向。

AndroidManifest.xml



      
    
  
        
  
        
        
            
                
  
                
            
        
    
  

  • 修改AndroidManifest文件后,应用程序的行为应类似于:
想要一个节奏更快,更具竞争性的环境来学习Android的基础知识吗?
单击此处,前往由我们的专家精心策划的指南,以使您立即做好行业准备!