作者sorrel20567 (嗨)
看板AndroidDev
标题Re: [问题] 随着直放横放即时改变配置xml
时间Wed Oct 19 23:05:36 2011
我试了在onResume里加上一个判断直横的方法
protected void onResume() {
super.onResume();
Log.v(TAG,"resumeeeeeeeeee");
setOri();
Log.v(TAG,"ori after");
if(getRequestedOrientation()==ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
{
setContentView(R.layout.pagelayout_land);
Log.v(TAG2,"1");
}
else if(getRequestedOrientation()==ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
{
setContentView(R.layout.pagelayout);
Log.v(TAG2,"0");
}
Log.v(TAG,"onResume");
}
看了DDMS的LOG後发现它无法进到if的判断式里,所以无法更换LAYOUT
我有试着把判断直横写成另外一个方法setOri,onResume呼叫他
public void setOri()
{
Log.v(TAG,"oriiiiing");
int Ori = getRequestedOrientation();
if(Ori==ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
{
Log.v(TAG,"LANDSCAPE");
}
else if(Ori==ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
{
Log.v(TAG,"PORTRAIT");
}
}
发现它会进到oriiiiing 但不会进到里面的判断式
後来我找到了一个网站
http://www.apkcode.com/html/2011/interface_0218/280.html
它说在onCreate里加上
if (this.getResources().getConfiguration().orientation
== Configuration.ORIENTATION_LANDSCAPE) {
Log.i("info", "landscape");
}
else if (this.getResources().getConfiguration().orientation
== Configuration.ORIENTATION_PORTRAIT) {
Log.i("info", "portrait");
}
前提是要在res目录下建立layout-land和layout-port目录
即可判断
但还是无法
最後我找到了一个网站的方法可以用
http://disanji.net/2011/03/18/android-change-screen-activity/
首先是在manifest里你想要横直通吃的ACTIVITY上加上
android:configChanges="orientation"
接着在res目录下建立layout-land和layout-port目录
再来是在java档里加上
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
//横向
if (this.getResources().getConfiguration().orientation
== Configuration.ORIENTATION_LANDSCAPE) {
setContentView(R.layout.pagelayout);
findview();
}
//直向
else if (this.getResources().getConfiguration().orientation
== Configuration.ORIENTATION_PORTRAIT) {
setContentView(R.layout.pagelayout);
findview();
}
}
就成功了
不过设完view後
必需要重新findview以及其他初始工作...
以上纯分享
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.115.158.190
1F:推 milochen:感谢分享 :) 10/20 10:49
2F:推 Horny5566:太棒了! 10/20 16:21
3F:→ sorrel20567:补充,layout-port跟land里面的档名都要一样 10/20 21:52
4F:推 Wolfken:我记得这样还是在某些机子上会有问题,因为後来的Android 10/25 13:00
5F:→ Wolfken:改了API,没有所谓portrait landscape的概念,只有相对於 10/25 13:00
6F:→ Wolfken:它原生layout转几度的概念,这所谓原生layout,在手机跟 10/25 13:01
7F:→ Wolfken:tablet会不一样,所以你根据一个写,在另一个会挂掉 10/25 13:01
8F:→ sorrel20567:楼上正解,补充:最好判断长宽,再去换LAYOUT会比较好 11/05 14:12