Основной проблемой является сохранение всего прокрутки в виде растрового изображения, а не только того, что появляется на экране. Есть ли способ сохранить весь вид прокрутки, и если да, то как?
Захват всего прокрутки больше экрана
Ответ 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, и запустите приложение на нем. Если ваш список вписывается в экран, вы можете сделать снимок экрана.