歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android實現指定區域截屏的實現【附源碼】

Android實現指定區域截屏的實現【附源碼】

日期:2017/3/1 10:27:11   编辑:Linux編程

其實實現方式很簡單,首先我們需要做的就是截取整個屏幕生成一個bitmap對象

Android實現指定區域截屏的實現源碼下載:

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /2012年資料/3月/9日/Android實現指定區域截屏的實現【附源碼】/

  1. View view = activity.getWindow().getDecorView();
  2. view.setDrawingCacheEnabled(true);
  3. view.buildDrawingCache();
  4. bitmap = view.getDrawingCache();
然後我們需呀計算出我們選定區域的坐標點,注意正選和反選的計算方式不同 ,
  1. public boolean onTouch(View v, MotionEvent event) {
  2. if(event.getAction() == MotionEvent.ACTION_DOWN){
  3. x = 0;
  4. y = 0;
  5. width = 0;
  6. height = 0;
  7. x = (int) event.getX();
  8. y = (int) event.getY();
  9. }
  10. if(event.getAction() == MotionEvent.ACTION_MOVE){
  11. m = (int) event.getX();
  12. n = (int) event.getY();
  13. myView.setSeat(x, y, m, n);
  14. myView.postInvalidate();
  15. }
  16. if(event.getAction() == MotionEvent.ACTION_UP){
  17. if(event.getX()>x){
  18. width = (int)event.getX()-x;
  19. }else{
  20. width = (int)(x-event.getX());
  21. x = (int) event.getX();
  22. }
  23. if(event.getY()>y){
  24. height = (int) event.getY()-y;
  25. }else{
  26. height = (int)(y-event.getY());
  27. y = (int) event.getY();
  28. }
  29. image2.setImageBitmap(getBitmap(this));
  30. }
  31. if(myView.isSign()){
  32. return false;
  33. }else{
  34. return true;
  35. }
  36. }

然後為我們計算出來的坐標區域添加選中效果

  1. protected void onDraw(Canvas canvas) {
  2. if(sign){
  3. paint.setColor(Color.TRANSPARENT);
  4. }else{
  5. paint.setColor(Color.RED);
  6. paint.setAlpha(80);
  7. canvas.drawRect(new Rect(x, y, m, n), paint);
  8. }
  9. super.onDraw(canvas);
  10. }

最後生成我們需要的圖片展示出來,順便保存到SD卡下一張。

  1. Rect frame = new Rect();
  2. activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
  3. int toHeight = frame.top;
  4. bitmap = Bitmap.createBitmap(bitmap, x, y+2*toHeight, width, height);
  5. try {
  6. FileOutputStream fout = new FileOutputStream("mnt/sdcard/test.png");
  7. bitmap.compress(Bitmap.CompressFormat.PNG, 100, fout);
  8. } catch (FileNotFoundException e) {
  9. // TODO Auto-generated catch block
  10. e.printStackTrace();
  11. }
  12. view.setDrawingCacheEnabled(false);
Copyright © Linux教程網 All Rights Reserved