图片的拖拽和缩放

package com.example.dragandscalephotodemo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.MotionEvent;

import uk.co.senab.photoview.PhotoView;

public class MainActivity extends AppCompatActivity {

private PhotoView photoView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    photoView = (PhotoView) findViewById(R.id.photo_view);
}

/**
 * 事件分发的方法 ,需要activty把事件传给photoview ,photoview才能接受到我们的触摸事件
 */
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {

    //activity接受到事件分发之后,我们手动处理触摸事件,只给传给我们自己的onTouchEvent方法;
    onTouchEvent(ev);
    return true;
}

//手指按下的坐标
float downX;
float downY;

//手指移动前的坐标
float lastX;
float lastY;
boolean moveble = false;
boolean isMorePoint = false;

@Override
public boolean onTouchEvent(MotionEvent event) {
    super.onTouchEvent(event);

    //接受多指触控需要用 event.getAction() & MotionEvent.ACTION_MASK 来获得当前的触摸事件
    switch (event.getAction() & MotionEvent.ACTION_MASK) {
        case MotionEvent.ACTION_DOWN:
            downX = event.getX();
            downY = event.getY();
            lastX = downX;
            lastY = downY;

            if (downX > photoView.getX()
                    && downX < photoView.getX() + photoView.getWidth()
                    && downY > photoView.getY()
                    && downY < photoView.getY() + photoView.getHeight()
                    ) {
                moveble = true;
            } else {
                moveble = false;
            }
            break;
        case MotionEvent.ACTION_MOVE:

            //当前手指摸出的坐标
            float currentX = event.getX();
            float currentY = event.getY();

            //我手指移动的距离
            float gapX = currentX - lastX;
            float gapY = currentY - lastY;

            //  如果点击位置不在图片上的话不做任何逻辑处理  moveble ==true 的时候做处理
            if (moveble) {
                if (isMorePoint) {
                    //多指的时候 把事件交给photoview去处理 ,它自己会根据事件去做放大缩小的逻辑 ,
                    photoView.dispatchTouchEvent(event);
                } else {
                    //单指的时候  拖拽的逻辑  设置图片新的位置    ==    原来的位置 + 手指移动的距离
                    photoView.setX(photoView.getX() + gapX);
                    photoView.setY(photoView.getY() + gapY);
                }
            }
            lastX = event.getX();
            lastY = event.getY();
            break;
        case MotionEvent.ACTION_UP:

            break;

        //除了第一个手指之外别的手指按下时触发
        case MotionEvent.ACTION_POINTER_DOWN:
            isMorePoint = true;
            break;
        //除了第一个手指之外别的手指抬起时触发
        case MotionEvent.ACTION_POINTER_UP:
            isMorePoint = false;
            break;
    }

    return true;
}

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LabVIEW是一款强大的图形化编程环境和开发工具,可以用于各种科学、工程和控制系统的设计和实现。通过使用LabVIEW的图形化编程方法,我们可以轻松实现拖动图片和自动缩放图片的功能。 要实现拖动图片,我们可以使用LabVIEW中的图形控件,例如Picture Control(图片控件)。首先,我们可以通过将图片加载到Picture Control中来显示图片。然后,我们可以在Picture Control上启用拖动功能,以便可以通过鼠标拖动图片。这可以通过设置Picture Control的属性和事件来完成。我们可以通过设置Picture Control的DragMode属性为Enabled来启用拖动功能,并使用相应的事件处理程序来响应拖动操作。当用户拖动图片时,我们可以在事件处理程序中获取拖动的偏移量,并重新定位图片的位置,从而实现拖动图片的效果。 要实现自动缩放图片,我们可以使用LabVIEW中的图像处理函数和工具。首先,我们可以使用读取图片的VI或函数来加载图片。然后,我们可以使用图像处理函数来调整图片的大小。LabVIEW中提供了图像处理的众多函数,例如Resize Image(调整图像大小)函数,可以根据需要指定目标图像的大小,并自动缩放输入图片以适应新的大小。我们可以使用相应的图像处理函数来执行自动缩放操作,并将调整后的图片显示在Picture Control或其他图形控件上。 通过使用LabVIEW的图形控件和图像处理函数,我们可以轻松实现拖动图片和自动缩放图片的功能。这些功能不仅可以增强用户体验,还可以扩展LabVIEW在图像处理和可视化方面的应用领域。LabVIEW的图形化编程方法使得实现这些功能变得简单且直观,即使对于没有编程经验的用户也能轻松上手。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值