动态更改矩形大小android
问题描述:
我正在制作一个可以裁剪人物图像的应用程序。我的应用程序的布局将给出更好的描述动态更改矩形大小android
在这里,矩形将用于捕获由其长度和宽度限定的图像。矩形是可移动的。我将如何去重新调整矩形的大小。例如。在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()
方法,你应该检查你是否触摸矩形。
此代码未经测试,但显示您想要开发的想法。