Создать растровое изображение макета, который находится за пределами экрана - PullRequest
2 голосов
/ 30 января 2012

Мне нужно получить растровое изображение макета (скажем, второй экран) Прежде чем (можно сказать, без) вывести его на экран переднего плана.Я упомянул этот пост.Я где-то делаю ошибку, раздувая взгляд.Примечание:

1. Must not show the inflated screen (second screen)
2. Must not attach it to the parent view

Мой фрагмент кода здесь:

private Bitmap renderNextScreen() {

    // Getting width, height device
    Display display = ((WindowManager)getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
    int width = display.getWidth();
    int height = display.getHeight();

    Log.i(TAG, "Width- " + width+" Height - "+height);

    // Create a mutable bitmap
    Bitmap secondScreen = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);

    // Created a canvas using the bitmap
    Canvas c = new Canvas(secondScreen);

    // Inflated the second screen
    LayoutInflater inflater = LayoutInflater.from(this);
    View secondView = inflater.inflate(R.layout.secondscreen, null);

    Log.i(TAG, "secondView.Height- "+secondView.getHeight()+" , secondView.Width " + secondView.getWidth());
    // Drawn the inflated view to canvas
    secondView.draw(c);

    preview.setImageBitmap(secondPage); // preview is the Imageview inside first screen
    return secondScreen;
}

Мой журнал для высоты, ширины:

01-28 02:12:35.926: I/FirstActivity(21831): Width- 480 Height - 800
01-28 02:30:08.287: I/FirstActivity(22207): secondView.Height- 0 , secondView.Width 0

Мой предварительный просмотр всегда был пустым.Спасибо.

1 Ответ

2 голосов
/ 28 июля 2012

Я думаю, что при изменении:

View secondView = inflater.inflate(R.layout.secondscreen, null);

на:

View secondView = inflater.inflate(R.layout.secondscreen, null, false);

вам нужно будет объявить параметры макета для раздутого вида, что-то вроде:

secondView.setLayoutParams(new LayoutParams(displaymetrics.widthPixels, 
displaymetrics.heightPixels/3));

Displaymetrics - это переменная, которая хранит размер экрана телефона.

Тогда вы сможете превратить это представление в bmp.

...