如果存在一种情况,您需要将整个应用程序设置为纵向模式或横向模式,或者其中一个“活动”应处于纵向模式,而所有其他活动都应设置为自动屏幕方向,那么本文将使您做到这一点简单的步骤。因此,在本文中,我们将学习以下两件事。
- 如何使整个应用程序处于纵向或横向模式?这是处于纵向模式的整个应用程序的预览:
- 以及如何使其中一个活动处于纵向模式,而所有其他活动都应设置为自动屏幕方向?这是相同的预览:
锁定屏幕方向的步骤
步骤1:创建一个新项目
要在Android Studio中创建新项目,请参阅如何在Android Studio中创建/启动新项目。请注意,选择Java作为编程语言。重命名在MainActivity文件作为活动1和acticity_main为layout_activity_1(重命名在两个活动之间进行,以避免混淆)。
Note: To rename the file click on the MainActivity -> Right-click -> Refactor -> Rename and similarly do for acticity_main file.
步骤2:建立另一个空白活动
现在,通过右键单击应用程序->新建->活动->空活动来创建另一个空活动,并使用Activity2重命名该活动,还将布局名称重命名为layout_activity_2。如果您无法执行上述步骤,请参考以下图片。
步骤3:使用layout_activity_1.xml文件
需要在layout_activity_1中包含文本和按钮。因此,打开layout_activity_1.xml并添加包含其中的小部件TextView和Button ,以便我们区分这两个活动。
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并添加小部件TextView和Button。
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” ,因为我们在项目中只有两个活动。如果您有两个以上或可能是两个,则需要将这些属性包括在所有活动中,以便可以将整个应用程序锁定为纵向模式。
- 如果按以下任何一个图标,则仿真器设备应旋转,该图标位于仿真器的工具栏下方:
- 旋转设备后,应用程序的行为应类似于:
- 完成后,我们使整个应用程序处于纵向模式。同样,可以通过调用以下属性使整个应用程序处于横向模式:
android:screenOrientation=”landscape”
步骤9:如何使任何一项活动处于纵向模式?
- 现在,我们将第一个活动Activity1严格设置为纵向模式,将Activity2设置为自动定向。
- 在这里,您必须在您选择的任何活动中调用android:screenOrientation =“ portrait” (横向模式为“ landscape” )和tools:ignore =“ LockedOrientationActivity” 。在这里,仅针对Activity1调用了此方法。 Activity2处于自动方向。
- 再次打开AndroidManifest.xml文件,并通过调用以下代码,使Activity1严格处于纵向模式,并使Activity2变为自动屏幕方向。
AndroidManifest.xml
- 修改AndroidManifest文件后,应用程序的行为应类似于: