重新绘制包含GlsurfaceView的框架

时间:2012-12-14 11:49:29

标签: java android multithreading opengl-es sdk

我有一个GLSurfaceView,当用户点击一个按钮时,它会绘制一些默认颜色的三角形。 然后,当用户从我的inflater菜单中选择一种颜色时,它将重新绘制具有该特定颜色的三角形。 它以奇怪的方式工作,首先它绘制三角形,当我选择不同的颜色时,它不会用不同的颜色重绘。但是,当我关闭手机并重新打开时,颜色会发生变化。

这是我的代码:

//------------------------------------------------------------------------------------------------  
    public boolean onCreateOptionsMenu(Menu menu)
    {
        MenuInflater menuInflater = getMenuInflater();
        menuInflater.inflate(R.menu.issm_menu,menu);

        return true;
    }
//------------------------------------------------------------------------------------------------
   public boolean onOptionsItemSelected(MenuItem item)
    {
        switch (item.getItemId())
        {
            case R.id.menu_about:          
                Toast.makeText(ISSM.this, "ISSM Application", Toast.LENGTH_SHORT).show();
                return true;

            case R.id.cl_autumn:
                colorMap.setAutumn();
                drawFigure();
                return true;

            case R.id.cl_bone:
                colorMap.setBone();
                drawFigure();
                return true;

                default:
                       return true;
     }

    public void onClick(View view) 
    {
        this.fillBuffer();
        drawFigure();
    }
//---------------------------------------------------------------------------------- 
    public void drawFigure()
    {
        mGLView = new MyGLSurfaceView(this, buff, size, colorMap);;
        frame.addView(mGLView);
    }

我希望一旦我点击菜单中的颜色,颜色就会改变,我不想关闭并打开(顺便说一句,不是完全断电,就像睡觉和醒来一样)< / p>

1 个答案:

答案 0 :(得分:0)

解决了它,我需要首先调用frame.removeView()然后添加另一个视图。