android2.2如何实现横竖屏变换时调用两个不同的xml布局

chendongjiu 2012-10-09 05:57:01
android2.2如何实现横竖屏变换时调用两个不同的xml布局,Activity代码相同
...全文
563 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
kldwq2002 2012-10-10
  • 打赏
  • 举报
回复
在res目录下新建立两个文件夹:layout-port和layout-land.
把横屏的xml放到layout-land里,把竖屏的放到layout-port里,取一样的名字。
fishmen26 2012-10-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

方法内部总还是过程的,对象的交互过程从时间轴上看就是过程,看划分的粒度。
看问题要先看什么立场,什么角度

多说了,
[/Quote]

我同意你的说法。但面向对象和面向过程是两种截然不同的思维方式。 一个是通过建模,抽象,封装来解决问题。一个是通过分析具体问题得出解决步骤。

前面的代码,和google推荐的做法相比,很明显一个是面向对象,一个是面向过程。

if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) 如果这种判断只在该类中出现这一次,切在以后的可见的需求变化中,也不会设计到改变,那它的存在还有一定的理由,但如果一个类中到处都充满了关于切屏的判断。我个人认为这种用if来判断的设计很不合理。
thl789 2012-10-10
  • 打赏
  • 举报
回复
方法内部总还是过程的,对象的交互过程从时间轴上看就是过程,看划分的粒度。
看问题要先看什么立场,什么角度

多说了,
fishmen26 2012-10-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

是#3,
是Android的设计哲学,但别扯上什么面向过程还是别的

还有一个设置(忘了那个了),Portrait/Landscape切换时是否重启,如果不重启(对用户来说透明),你那有资源也是白搭
[/Quote]

请问
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)
{
setContentView(R.layout.landscape); //布局1
}
else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
{
setContentView(R.layout.portrait); //布局2
}

难道不是面向过程的吗? 那你觉得它是面向对象的?
thl789 2012-10-09
  • 打赏
  • 举报
回复
是#3,
是Android的设计哲学,但别扯上什么面向过程还是别的

还有一个设置(忘了那个了),Portrait/Landscape切换时是否重启,如果不重启(对用户来说透明),你那有资源也是白搭
fishmen26 2012-10-09
  • 打赏
  • 举报
回复
http://developer.android.com/training/basics/supporting-devices/screens.html

请参照Google推荐的做法,1楼的方法不符合Android的设计哲学, 是一种面向过程的思维方法。

简单说:在你项目的res 文件夹下面加个 layout-land/ 然后再里面放入横屏的布局文件,这样Android会自动帮你切换布局。
MyProject/
res/
layout/
main.xml
layout-land/
main.xml
chendongjiu 2012-10-09
  • 打赏
  • 举报
回复
加入以上代码,黑屏了,
AMinfo 2012-10-09
  • 打赏
  • 举报
回复


@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)
{
setContentView(R.layout.landscape); //布局1
}
else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
{
setContentView(R.layout.portrait); //布局2
}
}

80,359

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧