Я делаю приложение, которое добавляет наклейки на фотографии, и я хочу изменить размер наклейки жестом щепотки.
final ImageView newSticker = new ImageView(getApplicationContext());
newSticker.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT,FrameLayout.LayoutParams.WRAP_CONTENT));
Bitmap sticker = BitmapFactory.decodeResource(getResources(),galleryList[position]);
newSticker.setImageBitmap(sticker);
viewGroup.addView(newSticker);
У меня есть макет кадра с ImageView, и я добавляю на него виды. Это метод onTouch для наклейки:
newSticker.setOnTouchListener(new View.OnTouchListener()
{
PointF DownPT = new PointF(); // Record Mouse Position When Pressed Down
PointF StartPT = new PointF(); // Record Start Position of 'img'
float olddistance;
@Override
public boolean onTouch(View v, MotionEvent event)
{
selectedSticker = newSticker;
switch (event.getAction())
{
case MotionEvent.ACTION_MOVE :
if(event.getPointerCount() == 1)
{
newSticker.setX((int) (StartPT.x + event.getX() - DownPT.x));
newSticker.setY((int) (StartPT.y + event.getY() - DownPT.y));
}
else if(event.getPointerCount() == 2)
{
final float dX =event.getX(0) - event.getX(1);
final float dY =event.getY(0) - event.getY(1);
float newdistance = (float) Math.sqrt(dX * dX + dY * dY);
float distance = newdistance / olddistance;
FrameLayout.LayoutParams lp= new FrameLayout.LayoutParams((int) (newSticker.getHeight() * distance), (int) (newSticker.getWidth() * distance));
newSticker.setLayoutParams(lp);
}
StartPT.set( newSticker.getX(), newSticker.getY() );
break;
case MotionEvent.ACTION_DOWN :
if(event.getPointerCount() == 1)
{
DownPT.set(event.getX(), event.getY());
StartPT.set(newSticker.getX(), newSticker.getY());
}
else if(event.getPointerCount() == 2)
{
final float odX =event.getX(0) - event.getX(1);
final float odY =event.getY(0) - event.getY(1);
olddistance = (float) Math.sqrt(odX * odX + odY * odY);
}
break;
case MotionEvent.ACTION_POINTER_DOWN:
case MotionEvent.ACTION_UP :
// Nothing have to do
break;
default :
break;
}
return true;
}
});
В приведенном выше коде он успешно перемещает наклейки, но я не знаю, как изменить размер представления с помощью щепотки. Я не хочу, чтобы наклейка масштабировалась внутри этого представления, но я хочу, чтобы весь вид был изменен. Итак, я хочу изменить параметры макета с помощью щепотки.