Android模拟器会旋转,但应用不会重绘

时间:2013-12-20 05:56:17

标签: android eclipse android-emulator autorotate

我已经在其他地方看到了这方面的照片,但是从某个时间回来,答案通常是“这是Android 2.3的一个已知问题”我使用4.4,所以这绝对不是答案。

我有关于最简单的程序:“Hello,Android”。当我启动模拟器时,它以纵向模式加载。使用Fn-Ctrl-F11(Mac),模拟器旋转到横向模式。但应用程序和手机控件不会重绘 - 整个事情只是侧面看。

这是清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.test.helloandroid"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="18"
    android:targetSdkVersion="18" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.test.helloandroid.Hello"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

</manifest>

和活动XML文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"

tools:context=".Hello" >

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello_world" />

</LinearLayout>

我正在使用Eclipse构建,ADT捆绑构建版本v22.3.0-887826,尽管我无法想象这对于这个微不足道的事情很重要。

我的模拟器适用于设备Galaxy Nexus,Android 4.4 API等级19.我尝试使用硬件键盘,标记为无标记。我找到了一个“键盘盖支撑”设置,我没有看到任何地方 - 这个评论来自3/12&amp;所以可能已经过时了。

这是我的第一个Android应用程序,所以在这个环境中我是一个完全的新手。 TIA对我缺少的任何建议。

编辑:为hello.java添加代码

package com.test.helloandroid;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class Hello extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_hello);
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.hello, menu);
    return true;
}

}

2 个答案:

答案 0 :(得分:2)

如果您是初学者,则应通过this reference document了解Activity lifecycle

在这里,我包含了一些LogToast,以便您更轻松地了解旋转屏幕时发生的过程。

示例:

package com.test.helloandroid;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class Hello extends Activity {


private static final String TAG = "Hello";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_hello);

    Log.d(TAG, "onCreate");
    Toast.makeText(this, "onCreate", Toast.LENGTH_SHORT).show();
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.hello, menu);
    return true;
}

@Override
protected void onResume() {
    super.onResume();

    Log.d(TAG, "onResume");
    Toast.makeText(this, "onResume", Toast.LENGTH_SHORT).show();
}

@Override
protected void onPause() {
    super.onPause();

    Log.d(TAG, "onPause");
    Toast.makeText(this, "onPause", Toast.LENGTH_SHORT).show();
}


}

我希望它会有所帮助!!

答案 1 :(得分:2)

显然,旧的一切都是新的:orientation change bug in 4.4

“他们越是越过管道,就越容易阻止排水管。”

很高兴知道我没有错过任何明显的东西; OTOH这是一个非常明显的失败谷歌的质量保证...比尔盖茨潜入那里没有人在看?或者他们是贪婪的&amp;试图通过破坏模拟器来销售手机进行测试?看起来我的未来会有一台设备。

修改:

参考:由Android的框架工程师CommonsWare回答。

Impossible to rotate the emulator with android 4.4