动态更改矩形大小android

动态更改矩形大小android

问题描述:

我正在制作一个可以裁剪人物图像的应用程序。我的应用程序的布局将给出更好的描述动态更改矩形大小android

enter image description here

在这里,矩形将用于捕获由其长度和宽度限定的图像。矩形是可移动的。我将如何去重新调整矩形的大小。例如。在WhatsApp中,当您触摸矩形内的区域时,矩形会移动。如果您触摸矩形的边缘,它可以重新调整适合裁剪的图像大小。所以,我有两个问题。 1)如何接收矩形边缘上的触摸事件和2)如何重新设置矩形的大小。我正在使用画布绘制我的矩形。造成这种情况的代码如下:

public class CustomView extends Views 
{ 


public CustomView(Context context) 
{ 
     super(context); 
} 

@Override 
protected void onDraw(Canvas canvas) 
{ 
     super.onDraw(canvas); 
     Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);; 
     paint.setColor(Color.BLUE); 
     paint.setStrokeWidth(3); 
     paint.setStyle(Paint.Style.STROKE); 
     canvas.drawRect(0, 0, 300, 300, paint); 
} 
} 

您应该实现OnTouchListener并为您在MotionEvent.ACTION_DOWN如果触摸矩形和修改左,右,底部和矩形的顶部MotionEvent.ACTION_MOVE

我提供了一个不经测试的例子:

public class CustomView extends View { 

    private float left=0,right = 300, top = 0, bottom = 300; 

    public CustomView(Context context) 
    { 
     super(context); 
     setOnTouchListener(new OnTouchListener() { 
      float oldX, oldY; 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       boolean touch = false; 
       switch (event.getAction()){ 
        case MotionEvent.ACTION_DOWN: 
         touch = isTouchBorderRect(); 
         break; 
        case MotionEvent.ACTION_UP: 
         touch = false; 
        case MotionEvent.ACTION_MOVE: 
         if (touch){ 
          float newX = event.getRawX(); 
          float newY = event.getRawY(); 
          float deltaX = newX-oldX; 
          float deltaY = newY-oldY; 

          left-=deltaX; 
          right +=deltaX; 
          bottom += deltaY; 
          top -= deltaY; 

         } 
         break; 

       } 
       return false; 
      } 
     }); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) 
    { 
     super.onDraw(canvas); 
     Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);; 
     paint.setColor(Color.BLUE); 
     paint.setStrokeWidth(3); 
     paint.setStyle(Paint.Style.STROKE); 
     canvas.drawRect(left, top, right, bottom, paint); 
    } 

} 

isTouchBorderRect()方法,你应该检查你是否触摸矩形。

此代码未经测试,但显示您想要开发的想法。