Android 调用surfaceCreated之前,上一个屏幕会在视图中出血
这是一个玩具的例子。如果编译并在实际设备(而不是模拟器)上测试,您将看到第一次连接SurfaceView时,整个屏幕内容会相应地发生变化。但是,在按下“后退”,然后再次按下按钮时,您将看到顶部的一条细线与上一个屏幕保持蓝色,并且仅在创建曲面后消失。这在我的应用程序中发生在我所有的视图(sans SurfaceView)中,并且会分心到令人烦恼的程度。以前有人见过这个问题吗?有解决办法吗?我在安卓2.1上的HTC EVO上运行这个Android 调用surfaceCreated之前,上一个屏幕会在视图中出血,android,Android,这是一个玩具的例子。如果编译并在实际设备(而不是模拟器)上测试,您将看到第一次连接SurfaceView时,整个屏幕内容会相应地发生变化。但是,在按下“后退”,然后再次按下按钮时,您将看到顶部的一条细线与上一个屏幕保持蓝色,并且仅在创建曲面后消失。这在我的应用程序中发生在我所有的视图(sans SurfaceView)中,并且会分心到令人烦恼的程度。以前有人见过这个问题吗?有解决办法吗?我在安卓2.1上的HTC EVO上运行这个 package com.example.surfaceviewte
package com.example.surfaceviewtest;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.SurfaceView;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.RelativeLayout.LayoutParams;
import android.widget.TextView;
public class MainActivity extends Activity {
private RelativeLayout home;
private RelativeLayout newView;
private int view;
/* (non-Javadoc)
* @see android.app.Activity#onCreate(android.os.Bundle)
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
home = new RelativeLayout(this);
home.setBackgroundColor(Color.BLUE);
Button changeCV = new Button(this);
changeCV.setText("Change Content View");
changeCV.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setContentView(newView, new RelativeLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
view = 2;
}
});
RelativeLayout.LayoutParams buttonParams = new RelativeLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
buttonParams.addRule(RelativeLayout.CENTER_IN_PARENT);
home.addView(changeCV, buttonParams);
newView = new RelativeLayout(this);
RelativeLayout.LayoutParams surfaceParams = new RelativeLayout.LayoutParams(
LayoutParams.FILL_PARENT, 200);
surfaceParams.addRule(RelativeLayout.CENTER_IN_PARENT);
SurfaceView surfView = new SurfaceView(this);
newView.addView(surfView, surfaceParams);
RelativeLayout.LayoutParams tvParams = new RelativeLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
tvParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
TextView tv = new TextView(this);
newView.addView(tv, tvParams);
setContentView(home, new RelativeLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
view = 1;
}
/* (non-Javadoc)
* @see android.app.Activity#onBackPressed()
*/
@Override
public void onBackPressed() {
if (view == 2) {
setContentView(home, new RelativeLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
view = 1;
}
else {
finish();
}
}
}