麻烦服用多种截图与getRootView [英] Trouble taking multiple screenshots with getRootView

查看:123
本文介绍了麻烦服用多种截图与getRootView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我发现了一些code,允许活动的截图。虽然,我遇到了一个问题。它似乎失灵,由于缺乏一个更好的词。使用某些code从<一个href=\"http://androidresearch.word$p$pss.com/2013/01/06/taking-a-screenshot-of-current-activity-in-android/\"相对=nofollow>这里,我将它设置在那里将采取位图和使用setimagebitmap把它放到一个图像视图。当我preSS按钮把它的伟大工程,在第一时间截图。第二次然而,使图像显示按钮的infinate量下降和越来越小。我试图destroydrawingcache在onclicklistener的开始,但使的第二个按钮点击应用程序崩溃。我甚至试过清零与setimagebitmap(空)图像视图。

下面是做所有工作的活动。

 公共类MainAvtivity扩展活动
{
    ImageView的imgView;
    按钮btnScreenshot;
    查看rootView;
    位图BMAP;    公共无效的onCreate(捆绑冰柱)
    {
        super.onCreate(冰柱);
        的setContentView(R.layout.main)        imgView =(ImageView的)findViewById(R.id.imageView);
        btnScreenshot =(按钮)findViewById(R.id.btnScreenshot);
        rootView = findViewById(android.R.id.content).getRootView();        btnScreenshot.setOnClickListener(新OnClickListener(){
            @覆盖
            公共无效的onClick(视图v){
                imgView.setImageBitmap(NULL);
                rootView.destroyDrawinCache();
                BMAP = takeScreenshot();
                setImgView(BMAP);
            }
    }
    公共位图takeScreenshot()
    {
        rootView.setDrawingCacheEnabled(真);
        返回rootView.getDrawingCache();
    }
    公共无效setImgView(位图位图)
    {
        imgView.setImageBitmap(位图);
    }
}


解决方案

下面是我的编辑code。这是短短几行了。

 公共类MainAvtivity扩展活动
{
    ImageView的imgView;
    按钮btnScreenshot;
    查看rootView;
    位图BMAP;    公共无效的onCreate(捆绑冰柱)
    {
        super.onCreate(冰柱);
        的setContentView(R.layout.main)        imgView =(ImageView的)findViewById(R.id.imageView);
        btnScreenshot =(按钮)findViewById(R.id.btnScreenshot);
        rootView = findViewById(android.R.id.content).getRootView();        btnScreenshot.setOnClickListener(新OnClickListener(){
            @覆盖
            公共无效的onClick(视图v){
                imgView.setImageBitmap(NULL);
                BMAP = takeScreenshot();
                setImgView(BMAP);
            }
    }
    公共位图takeScreenshot()
    {
        rootView.setDrawingCacheEnabled(真);
        rootView.buildDrawingCache(真);
        位图B = Bitmap.createBitmap(rootView.getDrawingCache());
        rootView.setDrawingCacheEnabled(假);
        返回b;
    }
    公共无效setImgView(位图位图)
    {
        imgView.setImageBitmap(位图);
    }
}

I found some code that allows for screenshots of the activity. Although, I am running into a problem. It seems to "malfunction", for lack of a better term. Using some of the code from here, I set it up to where it will take the bitmap and put it into an image view using setimagebitmap. When I press the button to take the screenshot it works great the first time. The second time however, makes the image show an infinate amount of buttons, descending and getting smaller. I tried destroydrawingcache at the beginning of the onclicklistener, but that makes the app crash on the second button click. I've even tried clearing the image view with setimagebitmap(null).

Here is the activity that does all the work.

public class MainAvtivity extends Activity
{
    ImageView imgView;
    Button btnScreenshot;
    View rootView;
    Bitmap bmap;

    public void onCreate(Bundle icicle)
    {
        super.onCreate(icicle);
        setContentView(R.layout.main)

        imgView = (ImageView)findViewById(R.id.imageView);
        btnScreenshot = (Button)findViewById(R.id.btnScreenshot);
        rootView = findViewById(android.R.id.content).getRootView();

        btnScreenshot.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v){
                imgView.setImageBitmap(null);
                rootView.destroyDrawinCache();
                bmap = takeScreenshot();
                setImgView(bmap);
            }
    }
    public Bitmap takeScreenshot()
    {
        rootView.setDrawingCacheEnabled(true);
        return rootView.getDrawingCache();
    }
    public void setImgView(Bitmap bitmap)
    {
        imgView.setImageBitmap(bitmap);
    }
}

解决方案

Here is my edited code. It was just a few lines off.

public class MainAvtivity extends Activity
{
    ImageView imgView;
    Button btnScreenshot;
    View rootView;
    Bitmap bmap;

    public void onCreate(Bundle icicle)
    {
        super.onCreate(icicle);
        setContentView(R.layout.main)

        imgView = (ImageView)findViewById(R.id.imageView);
        btnScreenshot = (Button)findViewById(R.id.btnScreenshot);
        rootView = findViewById(android.R.id.content).getRootView();

        btnScreenshot.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v){
                imgView.setImageBitmap(null);
                bmap = takeScreenshot();
                setImgView(bmap);
            }
    }
    public Bitmap takeScreenshot()
    {
        rootView.setDrawingCacheEnabled(true);
        rootView.buildDrawingCache(true);
        Bitmap b = Bitmap.createBitmap(rootView.getDrawingCache());
        rootView.setDrawingCacheEnabled(false);
        return b;
    }
    public void setImgView(Bitmap bitmap)
    {
        imgView.setImageBitmap(bitmap);
    }
}

这篇关于麻烦服用多种截图与getRootView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆