Android 捕获比屏幕大的整个滚动视图
主要问题是将整个滚动视图保存为位图图像,而不仅仅是屏幕上显示的图像。是否有保存整个滚动视图的方法,如果有,如何保存?请尝试以下代码:-Android 捕获比屏幕大的整个滚动视图,android,bitmap,scrollview,screen-capture,Android,Bitmap,Scrollview,Screen Capture,主要问题是将整个滚动视图保存为位图图像,而不仅仅是屏幕上显示的图像。是否有保存整个滚动视图的方法,如果有,如何保存?请尝试以下代码:- public static Bitmap loadBitmapFromView(View v, int width, int height) { Bitmap b = Bitmap.createBitmap(width , height, Bitmap.Config.ARGB_8888); Canvas c = n
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;
}
请参阅下面的链接
可能的解决方案,您可以创建一个大屏幕的模拟器,大小可能为10英寸,并在其上运行您的应用程序,如果您的listview适合屏幕,您可以对其进行屏幕截图。在您的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将作为位图保存在特定目录中。祝你好运
注意:您必须插入图像视图,textView等,将其输入到您的RelativeLayout in.xml文件中,所有内容都可以进入屏幕截图。我已经尝试过,但它不能正常工作,它只显示屏幕的图像,而不是屏幕下方的整个滚动视图,因此请帮助我解决此问题。这是紧急的,请帮助我,提前感谢@goluh有多少项目你的scrollview只有一个线性布局,但是这个线性布局有很多文本视图。你为什么不使用上面回答的rootview屏幕截图呢?我已经尝试过了,但它不能正常工作。它只显示屏幕的图像,而不是屏幕下方的整个滚动视图,所以请帮助我解决这个问题。这是紧急的请先帮我谢谢@Golu@user3693635见新link@Govind这不起作用,它只给出屏幕截图,而不是整个滚动视图,它只给出屏幕屏幕,而不是整个滚动视图,滚动到下面。你把文本视图、图像视图放在任何内部布局中。像这样:是的,所有视图都是这样,请帮我解决这个问题。好吧,如果你能在上面的问题中发布你的java代码和.xml,我将试着演示你。更新你的问题。