错误" EGL_BAD_MATCH"在Android Studio模拟器中

时间:2016-11-19 20:02:58

标签: android

我有一个问题,那是什么?

E/EGL_emulation: tid 3912: eglSurfaceAttrib(1146): error 0x3009 (EGL_BAD_MATCH)

我该怎么做才能解决这个错误?

public class Main extends AppCompatActivity {

public TextView score;
public ImageView alergator1;
public ImageView alergator2;
public FrameLayout frame;
public int scoreINT;
public float frameHigh;
public float frameWidh;
public float alergator1X;
public float alergator1Y;
public float alergator2X;
public float alergator2Y;
public ImageView miscare;
public int x;

private Handler handler = new Handler();
private static Timer timer = new Timer();



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

    score = (TextView) findViewById(R.id.Score);
    alergator1 = (ImageView) findViewById(R.id.runner);
    alergator2 = (ImageView) findViewById(R.id.runner2);
    frame = (FrameLayout) findViewById(R.id.Frame);


    frame.post(new Runnable() {
        @Override
        public void run() {
            frameHigh = frame.getHeight();
            frameWidh = frame.getWidth();
        }
    });

    alergator1.post(new Runnable() {
        @Override
        public void run() {
            alergator1X = frameWidh / 2;
            alergator1.setX(alergator1X);
            alergator1Y = frameHigh - 250;
            alergator1.setY(alergator1Y);
        }
    });


    alergator2.post(new Runnable() {
        @Override
        public void run() {
            alergator2X = frameWidh / 2;
            alergator2.setX(alergator2X);
            alergator2Y = frameHigh - 250;
            alergator2.setY(alergator2Y);
        }
    });


    timer.schedule(new TimerTask() {
        @Override
        public void run() {
            handler.post(new Runnable() {
                @Override
                public void run() {
                    x++;
                    if (x % 2 == 0) {
                        alergator1.setVisibility(View.INVISIBLE);
                        alergator2.setVisibility(View.VISIBLE);
                    } else {
                        alergator2.setVisibility(View.INVISIBLE);
                        alergator1.setVisibility(View.VISIBLE);

                    }

                }
            });

        }
    }, 0, 900);

这是代码,应用程序运行正常,但我想知道发生了什么。也许我的代码混乱,但我是初学者。

2 个答案:

答案 0 :(得分:5)

EGL表示仿真图形库。 Android移动设备操作系统使用EGL进行3D图形渲染。 从wiki获取有关EGL的更多知识:https://en.wikipedia.org/wiki/EGL_(API)

当它显示EGL_BAD_MATCH时,您/系统选择的仿真图形库是坏的。有两种EGL模式,如下图所示。 enter image description here

解决方案:哪种模式有问题,只需更改为其他模式即可解决。请注意,在软件仿真模式下运行可能比设置硬件仿真模式慢得多。有些情况下会抛出错误(显示),但应用程序运行正常。如果是这种情况,您可能希望忽略错误并享受卓越的图形仿真。

答案 1 :(得分:1)

我也遇到了类似的问题,我尝试了一个简单的示例应用程序并显示此错误。在我的情况下,我关闭了android studio的即时运行功能,它就消失了。我不知道为什么,但你可以尝试一下。