本文转自:

http://blog.csdn.net/hopezhangbo/article/details/7356571

        
  1. Viewview=activity.getWindow().getDecorView();
  2. view.setDrawingCacheEnabled(true);
  3. view.buildDrawingCache();
  4. bitmap=view.getDrawingCache();

然后我们需呀计算出我们选定区域的坐标点,注意正选和反选的计算方式不同,

        
  1. publicbooleanonTouch(Viewv,MotionEventevent){
  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. returnfalse;
  33. }else{
  34. returntrue;
  35. }
  36. }

然后为我们计算出来的坐标区域添加选中效果

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

最后生成我们需要的图片展示出来,顺便保存到SD卡下一张。

        
  1. Rectframe=newRect();
  2. activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
  3. inttoHeight=frame.top;
  4. bitmap=Bitmap.createBitmap(bitmap,x,y+2*toHeight,width,height);
  5. try{
  6. FileOutputStreamfout=newFileOutputStream("mnt/sdcard/test.png");
  7. bitmap.compress(Bitmap.CompressFormat.PNG,100,fout);
  8. }catch(FileNotFoundExceptione){
  9. //TODOAuto-generatedcatchblock
  10. e.printStackTrace();
  11. }
  12. view.setDrawingCacheEnabled(false);

更多相关文章

  1. Android前置摄像头预览并检测人脸,获取人脸区域亮度
  2. 利用android studio制作简易的计算器
  3. 关于Google Android,第一印象
  4. 如何把android设备中的固件dump出来
  5. android Bitmap getByteCount和getRowBytes
  6. Android初级教程人品计算器
  7. removeAllViews()和removeAllViewsInLayout()的区别
  8. Android实现简单计算器源码
  9. android计算器简单版【安卓进化一】

随机推荐

  1. 如何为Kafka集群选择合适的Topics/Partit
  2. 你还在使用 JDK 7?JDK 13 都已经来了!五大
  3. SpringBoot + Mybatis + Druid + PageHel
  4. 华为核心交换机配置mac地址白名单接入
  5. RabbitMQ Linux一键安装脚本定制
  6. 从Storm到Flink,有赞五年实时计算效率提升
  7. 深入理解 Apache Spark Delta Lake 的事
  8. 40%创业公司用伪AI忽悠钱,欧洲被AI时代抛
  9. 最新iOS开发常见面试题总结二!(附答案)!
  10. 碾压Python!为什么Julia速度这么快?