首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >怎么拍截图?

怎么拍截图?
EN

Stack Overflow用户
提问于 2012-05-10 13:25:18
回答 2查看 601关注 0票数 0

我正在拍摄一个RelativeLayout的屏幕截图,但是它会导致错误。

错误:

代码语言:javascript
运行
复制
 05-10 17:43:44.249: ERROR/AndroidRuntime(7721): Caused by: java.lang.NullPointerException
05-10 17:43:44.249: ERROR/AndroidRuntime(7721):     at android.graphics.Bitmap.createBitmap(Bitmap.java:358)
05-10 17:43:44.249: ERROR/AndroidRuntime(7721):     at com.API.Connect.share(FacebookConnect.java:110)

代码:

代码语言:javascript
运行
复制
public class Connect extends Activity implements LoginListener {

    public static String news = " ";

    RelativeLayout bitmapimage;

    Bitmap bitmap;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.image);
        bitmapimage = (RelativeLayout) findViewById(R.id.bitmapimg);
        TextView txtlove = (TextView) findViewById(R.id.txtlove);
        txtlove.setText(news.toString());
        share();

    }

    public void share() {

        View v1 = bitmapimage;
        v1.setDrawingCacheEnabled(true);

        bitmap = Bitmap.createBitmap(v1.getDrawingCache());

        v1.setDrawingCacheEnabled(false);

        saveImage();

        // TODO Auto-generated method stub

    }

    void saveImage() {
        String state = Environment.getExternalStorageState();
        Environment.MEDIA_MOUNTED.equals(state);

        File myDir = new File("/mnt/sdcard/DCIM/Camera");
        myDir.mkdirs();

        String fname = "mytry.jpg";
        File file = new File(myDir, fname);
        if (file.exists())
            file.delete();
        try {
            FileOutputStream out = new FileOutputStream(file);
            // create a Bitmap object from our image path.
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
            out.flush();
            out.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-10 13:37:09

你想做的事是正确的。但是在onCreate()中,您的视图不会被绘制出来。只是膨胀了一下。因此,您可能需要考虑使用以下方法。试试这个。

代码语言:javascript
运行
复制
@Override 
public void onWindowFocusChanged(boolean hasFocus) 
{ 
     super.onWindowFocusChanged(hasFocus);
    share();  //Call your share() here. 
}

一旦绘制视图,就会调用此方法,因此您将能够通过重写此方法获得位图。

票数 5
EN

Stack Overflow用户

发布于 2012-05-10 13:34:28

我想我发现了你的错误。getdrawingcache已经返回了一个位图,所以您不必创建可能导致空指针异常的新位图。

所以你应该试试

bitmap = v1.getDrawingCache();

而不是

bitmap = Bitmap.createBitmap(v1.getDrawingCache());

如果这有用的话请告诉我。

你好,沃塔

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10534969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档