【问题标题】:Trouble taking multiple screenshots with getRootView使用 getRootView 拍摄多个屏幕截图时遇到问题
【发布时间】:2014-05-29 21:07:48
【问题描述】:

我发现了一些允许截取活动的代码。虽然,我遇到了问题。由于没有更好的术语,它似乎“出现故障”。使用来自here 的一些代码,我将其设置为将获取位图并使用 setimagebitmap 将其放入图像视图的位置。当我按下按钮截取屏幕截图时,它第一次效果很好。然而,第二次使图像显示无限数量的按钮,下降并变小。我在 onclicklistener 的开头尝试了 destroydrawingcache ,但这会使应用程序在第二次单击按钮时崩溃。我什至尝试使用 setimagebitmap(null) 清除图像视图。

这是完成所有工作的活动。

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);
    }
}

【问题讨论】:

    标签: android


    【解决方案1】:

    这是我编辑的代码。就差几行了。

    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);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-01-12
      • 1970-01-01
      • 1970-01-01
      • 2012-09-03
      • 1970-01-01
      • 2014-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多