在android中使用表面视图放大和缩小



我正在制作一个支票界面,当用户在底部签名时,我想放大到屏幕的那一部分。我尝试了这段代码使用相机。程序给出一个错误-意外停止。你能帮我解决这个问题吗?

    public class MainActivity extends Activity 
    {
        MySurfaceView mySurfaceView;
        private Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
         Parameters params;
         Camera camera;
          int currentZoomLevel = 0, maxZoomLevel = 0;
          int MAX_ZOOM=200;
          ZoomControls zoomControls = (ZoomControls) findViewById(R.id.zoomControls1);
              @Override
             public void onCreate(Bundle savedInstanceState)  
             {                 
                   super.onCreate(savedInstanceState);
                   mySurfaceView = new MySurfaceView(this);
                   setContentView(mySurfaceView);
              } 
              class MySurfaceView extends SurfaceView
              {
                  Path path;
                  Thread thread = null;
                   SurfaceHolder surfaceHolder;
                volatile boolean running = false;
                   Random random;
                    public MySurfaceView(Context context)
                    {
                            super(context);
                       surfaceHolder = getHolder();
                  paint.setStyle(Paint.Style.STROKE);
                  paint.setStrokeWidth(3);
                    paint.setColor(Color.BLUE);
                  }  
             @Override
                public boolean onTouchEvent(MotionEvent event) 
             {
              if(event.getAction() == MotionEvent.ACTION_DOWN)
               {
                    path = new Path();
                      path.moveTo(event.getX(), event.getY());
                }
               else if(event.getAction() == MotionEvent.ACTION_MOVE)
               {
                     path.lineTo(event.getX(), event.getY());
               }
               else if(event.getAction() == MotionEvent.ACTION_UP)
              {
 path.lineTo(event.getX(), event.getY());
}
if(params.isZoomSupported())
{    
   maxZoomLevel = params.getMaxZoom();
   zoomControls.setIsZoomInEnabled(true);
       zoomControls.setIsZoomOutEnabled(true);
       zoomControls.setOnZoomInClickListener(new OnClickListener()
       {
        public void onClick(View v)
        {
            if(currentZoomLevel < MAX_ZOOM){
                 currentZoomLevel++;
                 camera.startSmoothZoom(currentZoomLevel); 
             }
        }
    });
   zoomControls.setOnZoomOutClickListener(new OnClickListener()
   {
           public void onClick(View v)
           {
                   if(currentZoomLevel > 0)
                   {
                       currentZoomLevel--;
                       camera.startSmoothZoom(currentZoomLevel);
                   }
           }
       });    
  }
  else
  {
    zoomControls.setVisibility(View.GONE);
  }

if(path != null)
{
 Canvas canvas = surfaceHolder.lockCanvas();
 canvas.drawPath(path, paint);
 //canvas.scale(20,20,canvas.getHeight()-20,canvas.getWidth()-20);

 surfaceHolder.unlockCanvasAndPost(canvas);
}
return running;
  }
    }
    }

ZoomControls没有被添加到你想要在这一行显示的布局

setContentView(mySurfaceView);

最新更新