2024年Android最新android横竖屏切换问题,蚂蚁金服社招4轮面试

最后

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

下面分享的腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题全套解析,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,下面只是以图片的形式给大家展示一部分。

image

知识不体系?这里还有整理出来的Android进阶学习的思维脑图,给大家参考一个方向。

image

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

2.  int width = display.getWidth();

3.  int height = display.getHeight();

4.  if (width > height) {

5.      orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;  //横屏

6.  } else {

7.      orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;  //竖屏

8.  }

第三步:在onConfigurationChanged()函数中追加this.setRequestedOrientation(orientation)就行了

1.  public void onConfigurationChanged(Configuration newConfig) {

2.      super.onConfigurationChanged(newConfig);

3.      this.setRequestedOrientation(orientation);

4.  }

但是这样的话你切到别的画面的时候再回到原画面,它就仍然是横的或者是纵的。怎么让它从别的屏幕回来后,又重新横竖屏布局呢?

只要在OnResume()中在设定下就行了。但是这个只支持横竖屏只有一个layout的。横竖屏分别对应layout的还不知道该怎么解决。

1.  protected void onResume() {

2.      orientation = ActivityInfo.SCREEN_ORIENTATION_USER;

3.      this.setRequestedOrientation(orientation);

4.      Display display = getWindowManager().getDefaultDisplay();

5.      int width = display.getWidth();

6.      int height = display.getHeight();

7.      if (width > height) {

8.          orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;

9.      } else {

  1. orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;

  2. }

  3. super.onResume();

  4. }

六、总结

总之,对于横竖屏切换的问题,统计了下,大家的解决办法是:

①不理会。。

②只竖屏显示(android:screenOrientation=“portrait”)  只横屏显示(android:screenOrientation=“landscape”)

③简单的防止重载:  在 AndroidManifest.xml中加入:android:configChanges=“orientation|keyboardHidden”  在activity中重载onConfigurationChanged事件  @Override

public void onConfigurationChanged(Configuration config) {

super.onConfigurationChanged(config);

}④横竖屏分别布局  横竖屏分别布局的方法是:  在res下新建  layout-land 横屏  layout-port 竖屏  然后把layout中的xml文件分别考到以上目录,修改布局就可以了代码中不做任何更改。  在 AndroidManifest.xml文件中的 主Activity中加入  android:configChanges=“orientation|keyboardHidden”  然后在主Activity中的onConfigurationChanged加入

@Override

public void onConfigurationChanged(Configuration config) {

super.onConfigurationChanged(config);

if (config.orientation == Configuration.ORIENTATION_PORTRAIT) {

setContentView(R.layout.main); //布局

tv = (TextView) findViewById(R.id.EditText01); //控件

}

if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) {

setContentView(R.layout.main); //布局

tv = (TextView) findViewById(R.id.EditText01); //控件

}

}

七、示例详细步骤

//------ 第一步:获得许可

需要在中添加相应许可

//------ 第二步:根据不同的目标,针对Activity进行设置

目标1屏蔽横竖屏的切换

步骤:为Activity设置一个默认的屏幕方向 方法如下:

在AndroidManifest.xml中找到该Activity 添加代码:

android:name=“.ActivityName”

android:screenOrientation=“landscape”

>

设置Activity的默认方向为“横向”

此处的screenOrientation有如下选项:

==================================================================

= unspecified 默认值,由系统判断状态自动切换

= landscape 横屏

= portrait 竖屏

= user 用户当前设置的orientation值

= behind 下一个要显示的Activity的orientation值

= sensor 使用传感器 传感器的方向

= nosensor 不使用传感器 基本等同于unspecified

==================================================================

目标2:防止Activity的销毁

步骤:为Activity设置configChanges属性

在AndroidManifest.xml中找到该Activity 添加代码:

android:name=“.ActivityName”

android:configChanges=“orientation|keyboardHidden”

>

此处的configChanges有如下选项:

==================================================================

= orientation 屏幕在纵向和横向间旋转

= keyboardHidden 键盘显示或隐藏

= fontScale 用户变更了首选的字体大小

= locale 用户选择了不同的语言设定

= keyboard 键盘类型变更,例如手机从12键盘切换到全键盘

= touchscreen或navigation 键盘或导航方式变化,一般不会发生这样的事件

==================================================================

如果需要多个选项 用"|"隔开

此处注意:如果是在实体机上测试横竖屏切换 需要orientation选项

【重点】如果要使得程序可以在Android模拟器上测试 需要写orientation|keyboardHidden

如果缺少了keyboardHidden选项 不能防止Activity的销毁

并且在之后提到的onConfigurationChanged事件中 只能捕获竖屏变横屏的事件 不能捕获横屏变竖屏

目标3:捕获横竖屏切换的事件

步骤:在Activity中(ActivityName.java)重写onConfigurationChanged事件

@Override

public void onConfigurationChanged(Configuration newConfig) {

// TODO Auto-generated method stub

super.onConfigurationChanged(newConfig);

switch (newConfig.orientation)

{

学习分享,共勉

Android高级架构师进阶之路

题外话,我在阿里工作多年,深知技术改革和创新的方向,Android开发以其美观、快速、高效、开放等优势迅速俘获人心,但很多Android兴趣爱好者所需的进阶学习资料确实不太系统,完整。今天我把我搜集和整理的这份学习资料分享给有需要的人

  • Android进阶知识体系学习脑图

  • Android进阶高级工程师学习全套手册

  • 对标Android阿里P7,年薪50w+学习视频

  • 大厂内部Android高频面试题,以及面试经历

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 大厂内部Android高频面试题,以及面试经历

[外链图片转存中…(img-L8c5kFWM-1715661237755)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 20
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值