Сохранить представление поверхности на холсте

Я пытаюсь сохранить скриншот своего приложения. Мой основной экран — это SurfaceView, я создаю новый холст и рисую вид поверхности на холсте. У меня проблема, потому что PNG, который я получаю, полностью прозрачен.

Вот мой код

Bitmap image = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    Canvas c = new Canvas(image);
    draw(c);

    String path=Environment.getExternalStorageDirectory() + "/test2.png";
    File file = new File(path);
    try 
    {
        file.createNewFile();
        FileOutputStream ostream = new FileOutputStream(file);
        image.compress(CompressFormat.PNG, 100, ostream);
        ostream.close();
        Uri screenshotUri = Uri.parse("file://"+file.getAbsolutePath());
        Intent sendIntent = new Intent(Intent.ACTION_VIEW);
        sendIntent.setDataAndType(screenshotUri, "image/png");
       startActivity(sendIntent);
    } 
    catch (Exception e) 
    {
        e.printStackTrace();
    }

person Alex    schedule 15.08.2011    source источник


Ответы (1)


Я думаю, вам нужно убедиться, что поверхность была полностью создана, делая это

http://www.edu4java.com/androidgame/androidgame3.html

Попробуйте сделать скриншот в методе onSurfaceCreated, иначе вы будете пусты до тех пор, пока не появится поверхность.

person Delete    schedule 15.08.2011
comment
Моя поверхность создается (игра отображается на экране), когда я пытаюсь сделать снимок. - person Alex; 16.08.2011