android2.2如何实现横竖屏变换时调用两个不同的xml布局 android2.2如何实现横竖屏变换时调用两个不同的xml布局,Activity代码相同 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 @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 } } 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 是#3,是Android的设计哲学,但别扯上什么面向过程还是别的还有一个设置(忘了那个了),Portrait/Landscape切换时是否重启,如果不重启(对用户来说透明),你那有资源也是白搭 请问 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 }难道不是面向过程的吗? 那你觉得它是面向对象的? 我同意你的说法。但面向对象和面向过程是两种截然不同的思维方式。 一个是通过建模,抽象,封装来解决问题。一个是通过分析具体问题得出解决步骤。前面的代码,和google推荐的做法相比,很明显一个是面向对象,一个是面向过程。if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) 如果这种判断只在该类中出现这一次,切在以后的可见的需求变化中,也不会设计到改变,那它的存在还有一定的理由,但如果一个类中到处都充满了关于切屏的判断。我个人认为这种用if来判断的设计很不合理。 在res目录下新建立两个文件夹:layout-port和layout-land.把横屏的xml放到layout-land里,把竖屏的放到layout-port里,取一样的名字。 安卓反编译 求助啊!! 自定义控件性能怎么样? 如何实现类似google地图overlay功能 android 客户端UI美化的调研报告? Github上有什么著名android游戏啊,该怎么搜? 微信好友相册 批量下载 提供思路 做了一个简单的验证用户登录的例子,验证成功了,却不能进入新的窗口,求答,谢谢啦! Android SQLite相关应用-SQLiteOpenHelper无法新建实例 一个android的新浪微博sdk的问题 在安装ADT的时候老是出现一下问题怎么解决 <?xml version="1.0" encoding="utf-8"?>的问题
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
}
}
MyProject/
res/
layout/
main.xml
layout-land/
main.xml
是Android的设计哲学,但别扯上什么面向过程还是别的还有一个设置(忘了那个了),Portrait/Landscape切换时是否重启,如果不重启(对用户来说透明),你那有资源也是白搭
请问
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
}难道不是面向过程的吗? 那你觉得它是面向对象的?
我同意你的说法。但面向对象和面向过程是两种截然不同的思维方式。 一个是通过建模,抽象,封装来解决问题。一个是通过分析具体问题得出解决步骤。前面的代码,和google推荐的做法相比,很明显一个是面向对象,一个是面向过程。if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) 如果这种判断只在该类中出现这一次,切在以后的可见的需求变化中,也不会设计到改变,那它的存在还有一定的理由,但如果一个类中到处都充满了关于切屏的判断。我个人认为这种用if来判断的设计很不合理。
把横屏的xml放到layout-land里,把竖屏的放到layout-port里,取一样的名字。