加入收藏 | 设为首页 | 会员中心 | 我要投稿 南通站长网 (https://www.0513zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Android实现指定区域截屏的达成

发布时间:2021-11-23 18:11:51 所属栏目:教程 来源:互联网
导读:具体下载目录在 /2012年资料/3月/9日/Android实现指定区域截屏的实现【附源码】/ View view = activity.getWindow().getDecorView(); view.setDrawingCacheEnabled(true); view.buildDrawingCache(); bitmap = view.getDrawingCache(); 然后我们需呀计算出我

具体下载目录在 /2012年资料/3月/9日/Android实现指定区域截屏的实现【附源码】/
 
View view = activity.getWindow().getDecorView();   
view.setDrawingCacheEnabled(true);   
view.buildDrawingCache();   
bitmap = view.getDrawingCache();  
然后我们需呀计算出我们选定区域的坐标点,注意正选和反选的计算方式不同 ,
public boolean onTouch(View v, MotionEvent event) {   
     if(event.getAction() == MotionEvent.ACTION_DOWN){   
            x = 0;   
            y = 0;   
            width = 0;   
            height = 0;   
            x = (int) event.getX();   
            y = (int) event.getY();   
        }   
      if(event.getAction() == MotionEvent.ACTION_MOVE){   
            m = (int) event.getX();   
            n = (int) event.getY();   
            myView.setSeat(x, y, m, n);   
            myView.postInvalidate();   
        }   
      if(event.getAction() == MotionEvent.ACTION_UP){   
    if(event.getX()>x){   
         width = (int)event.getX()-x;   
    }else{   
         width = (int)(x-event.getX());   
          x = (int) event.getX();   
    }   
                 if(event.getY()>y){   
         height = (int) event.getY()-y;   
     }else{   
         height = (int)(y-event.getY());   
          y = (int) event.getY();   
    }   
    image2.setImageBitmap(getBitmap(this));   
        }   
    if(myView.isSign()){   
         return false;   
    }else{   
          return true;   
    }   
}
然后为我们计算出来的坐标区域添加选中效果
 
protected void onDraw(Canvas canvas) {   
         if(sign){   
    paint.setColor(Color.TRANSPARENT);   
         }else{   
    paint.setColor(Color.RED);   
    paint.setAlpha(80);   
    canvas.drawRect(new Rect(x, y, m, n), paint);   
           }   
    super.onDraw(canvas);   
}  
最后生成我们需要的图片展示出来,顺便保存到SD卡下一张。
 
Rect frame = new Rect();   
      activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);   
      int toHeight = frame.top;   
      bitmap = Bitmap.createBitmap(bitmap, x, y+2*toHeight, width, height);   
      try {   
    FileOutputStream fout = new FileOutputStream("mnt/sdcard/test.png");   
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, fout);   
        } catch (FileNotFoundException e) {   
            // TODO Auto-generated catch block   
            e.printStackTrace();   
        }   
        view.setDrawingCacheEnabled(false);  

(编辑:南通站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读