我正在制作一个可以裁剪人物形象的应用程序。我的应用程序的布局将提供更好的描述
此处矩形将用于捕获由其长度和宽度定义的图像。矩形是可移动的。我将如何重新调整矩形的大小。例如。在WhatsApp中,当您触摸矩形内的区域时,矩形会移动。如果触摸矩形边缘,则可以重新调整适合裁剪的图像大小。所以,我有2个问题。 1)如何在矩形边缘上接收Touch事件和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);
}
}
答案 0 :(得分:1)
如果触摸矩形并修改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()
方法中,您应该检查是否触摸了矩形。
此代码未经过测试,但显示您想要开发的想法。