Android сделать снимок экрана с помощью кода - PullRequest
16 голосов
/ 09 мая 2011

Это не должно быть слишком сложным вопросом. Мне нужна возможность сделать скриншот моего макета (просмотра) и отправить его через смс. Может ли кто-нибудь пройтись по лестнице?

Спасибо!

Edit: Я думаю, это не обязательно должен быть «скриншот», лишь бы мы могли каким-то образом получить все визуализированные пиксели из вида.

1 Ответ

23 голосов
/ 09 мая 2011

В Интернете я нашел несколько фрагментов кода, которые я смог собрать вместе.

Вот решение, которое хорошо работает:

Настройка макета Root:

View content = findViewById(R.id.layoutroot);
content.setDrawingCacheEnabled(true);

Функция для получения визуализированного вида:

private void getScreen()
{
    View content = findViewById(R.id.layoutroot);
    Bitmap bitmap = content.getDrawingCache();
    File file = new File("/sdcard/test.png");
    try 
    {
        file.createNewFile();
        FileOutputStream ostream = new FileOutputStream(file);
        bitmap.compress(CompressFormat.PNG, 100, ostream);
        ostream.close();
    } 
    catch (Exception e) 
    {
        e.printStackTrace();
    }
}
...