android - 在 android 中拍摄 SurfaceView 的屏幕截图

标签 android

我正在使用以下方法截取特定 View (SurfaceView)的屏幕截图。

public void takeScreenShot(View surface_view){

    // create bitmap screen capture
    Bitmap bitmap;
    View v1 = surface_view;
    v1.setDrawingCacheEnabled(true);
    bitmap = Bitmap.createBitmap(v1.getDrawingCache());
    v1.setDrawingCacheEnabled(false);

    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    bitmap.compress(CompressFormat.PNG, 0, bos);
    byte[] imageData = bos.toByteArray();

}

问题是它给了我整个 Activity 屏幕图像。但我需要拍摄特定 View 的屏幕截图。我尝试了其他方法,但这些方法给我一个黑屏作为屏幕截图,一些帖子说它需要根设备。 谁能帮帮我。我需要这个解决方案。帮帮我....

最佳答案

表面 View 是一个 View ,但表面 View 上的项目(如位图或其他对象)不是任何 View 。因此,当您捕获表面 View 时,它会捕获表面上的所有事物。您必须使用其他 View ,例如 ImageView 或表面 View 之上的其他 View ,然后捕获这些 View 。

首先获取要拍照的 View 然后执行此操作

            Bitmap bitmap;
            View rv = **your view**
            rv.setDrawingCacheEnabled(true);
            bitmap = Bitmap.createBitmap(rv.getDrawingCache());
            rv.setDrawingCacheEnabled(false);

            // Write File to internal Storage

            String FILENAME = "captured.png";
            FileOutputStream fos = null;

            try {

                fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);

            } catch (FileNotFoundException e1) {

                e1.printStackTrace();
                Log.v("","FileNotFoundException: "+e1.getMessage());

            }

            try {
                bitmap.compress(Bitmap.CompressFormat.JPEG, 90, fos);
                fos.flush();
                fos.close();

            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 

关于android - 在 android 中拍摄 SurfaceView 的屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12724237/

相关文章:

java - Android Fragment 不接受 setcontentview

来自 Activity 的自定义 View 中的 Android 引用方法

Java Eclipse - 当我选择文件/新建时我没有看到 "Android Application"

java - 如何在 achartengine 中创建动态数组列表

java - 如何根据特定条件在我的 RecyclerView 上隐藏某些项目的 ImageView?

Android - 单选按钮不显示其文本

android - 即使在设备重启后也让 Android 调试器保持 Activity 状态

在设备上收到 GCM 推送通知时弹出 Android 应用程序

Android,无法读取我保存到数据文件夹的图像

android - android 布局上的简单 trans 动画第二次不起作用