Захват всего прокрутки больше экрана

Основной проблемой является сохранение всего прокрутки в виде растрового изображения, а не только того, что появляется на экране. Есть ли способ сохранить весь вид прокрутки, и если да, то как?

Ответ 1

Сделайте RelativeLayout или LinearLayout в вашем ScrollView, чтобы получить растровое изображение из макета.

Организуйте этот способ:

public class ActivityA extends Activity {

LinearLayout PP_Ll;
Button btn_capture;

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.main);

PP_Ll = (RelativeLayout) findViewById(R.id.PP_Ll);
Button btn_capture= (Button) findViewById(R.id.btn_capture);

btn_capture.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

        Bitmap bitmap = takeScreenshot();
        saveBitmap(bitmap);

        }
    });

public Bitmap takeScreenshot() {

    View rootView = getWindow().getDecorView().findViewById(R.id.PP_Ll);
    rootView.setDrawingCacheEnabled(true);
    return rootView.getDrawingCache();

}

public void saveBitmap(Bitmap bitmap) {

    String root = Environment.getExternalStorageDirectory().toString();
    File newDir = new File(root + "/Folder");
    newDir.mkdirs();
    Random gen = new Random();
    int n = 10000;
    n = gen.nextInt(n);
    String fotoname = "Photo-" + n + ".jpg";
    File file = new File(newDir, fotoname);
    if (file.exists())
        file.delete();
    try {
        FileOutputStream fos = new FileOutputStream(file);
        bitmap.compress(CompressFormat.JPEG, 100, fos);
        fos.flush();
        fos.close();
        Toast.makeText(getApplicationContext(),
                "Saved in folder: 'Folder'", Toast.LENGTH_SHORT).show();

    } catch (FileNotFoundException e) {
        Log.e("GREC", e.getMessage(), e);
    } catch (IOException e) {
        Log.e("GREC", e.getMessage(), e);
    }

}
}}

Ваш RelativeLayout будет сохранен в определенном каталоге как BitMap. Удачи.

Примечание.. Вы должны вставить свои изображения, текстовые изображения и т.д. в свой RelativeLayout в .xml файле, который все может перейти в скриншот.

Ответ 2

попробуйте под кодом: -

public static Bitmap loadBitmapFromView(View v, int width, int height) {
    Bitmap b = Bitmap.createBitmap(width , height, Bitmap.Config.ARGB_8888);                
    Canvas c = new Canvas(b);
    v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height);
    v.draw(c);
    return b;
}

см. ниже ссылку

Сделайте снимок экрана для полного просмотра

Ответ 3

Возможное решение: вы можете создать эмулятор большего размера размером, возможно, 10inch, и запустите приложение на нем. Если ваш список вписывается в экран, вы можете сделать снимок экрана.