Android 代码的屏幕截图

Android 代码的屏幕截图,android,screen,screenshot,capture,Android,Screen,Screenshot,Capture,我需要捕获当前屏幕的屏幕截图,因此我在 protected void onPause() { // TODO Auto-generated method stub super.onPause(); LinearLayout v = (LinearLayout) findViewById(R.id.mainLayout); v.setDrawingCacheEnabled(true); // this is the important code :)

我需要捕获当前屏幕的屏幕截图,因此我在

protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();

    LinearLayout v = (LinearLayout) findViewById(R.id.mainLayout);
    v.setDrawingCacheEnabled(true);
    // this is the important code :)
    // Without it the view will have a
    // dimension of 0,0 and the bitmap will
    // be null
    v.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
            MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
    //v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());
    v.layout(0, 0, v.getWidth(), v.getHeight());
    v.buildDrawingCache(true);
    Bitmap bm = Bitmap.createBitmap(v.getDrawingCache());
    v.setDrawingCacheEnabled(false); //

    if (bm != null) {
        try {
            String path = Environment.getExternalStorageDirectory()
                    .toString();
            OutputStream fOut = null;
            File file = new File(path, "screentest.jpg");
            fOut = new FileOutputStream(file);

            bm.compress(Bitmap.CompressFormat.JPEG, 85, fOut);
            fOut.flush();
            fOut.close();

            Log.e("ImagePath", "Image Path : "
                    + MediaStore.Images.Media.insertImage(
                            getContentResolver(), file.getAbsolutePath(),
                            file.getName(), file.getName()));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
这段代码对我来说很好,但我需要在屏幕加载完成后捕获屏幕

我也尝试过onpostreate(),但都是徒劳的

我还尝试调用onPause()方法中的代码,但由于动画的原因,屏幕从右侧和底部修剪了一点。。。所以我甚至不能去做

现在轮到你分享你的专业知识了

非常感谢您的任何建议

试试这个:

public void onCreate(Bundle savedInstanceState) { LinearLayout v = (LinearLayout) findViewById(R.id.mainLayout); v.setDrawingCacheEnabled(true); v.post(new Runnable() { public void run() { // Code to take screenshot }); } } 创建时的公共void(Bundle savedInstanceState){ LinearLayout v=(LinearLayout)findViewById(R.id.mainLayout); v、 setDrawingCacheEnabled(真); v、 post(新的Runnable(){ 公开募捐{ //截图代码 }); } }
@Tom,与其编辑现有问题来解决您自己的问题,不如从头开始问您自己的问题。您可以在自己的问题中包含指向此代码的链接,以便在您认为有用的情况下为人们提供更多背景信息。:)