android - 在 FrameLayout 中缩放 ImageView ontouch

标签 android scale

任何人都可以帮助我用 2 根手指触摸缩放(调整大小)图像吗?我有 frameLayout 并且我动态附加 imageViews。我想缩放图像。我可以不使用 Matrix 解决这个问题吗?

移动工作正常 我在 frameLayout 上移动图像。但是缩放不知道。你能给我一些链接或库如何解决这个问题吗?我找到了一些解决方案,但问题是比例只能在 imageView 中工作。框架布局和 ImageView 。 ImageView 必须具有宽度和高度 fill_parent,您可以在此 imageView 内缩放和移动图像。但我想在此 FrameLayout 中缩放 ImageView。当我添加 3 张图像时,我把我的代码和这个工作正常,我可以单独处理这些图像。但我也需要调整大小。谢谢你的帖子

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_selected_images_per_category);
    Intent intent = getIntent();
    selectedImages = intent.getParcelableArrayListExtra("selectedImages");
    relativeLayout = (FrameLayout) findViewById(R.id.customLayutForImages);

    for(int i=0; i< selectedImages.size(); i++) {
        ImageView mImageView = new ImageView(SelectedImagesActivity.this);
        Uri u =  selectedImages.get(i);
        mImageView.setImageURI(u);



        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( 300,300 );
        relativeLayout.addView(mImageView, params);
        mImageView.setOnTouchListener(this);
   }

enter code   public boolean onTouch(View view, MotionEvent event) {
    final int X = (int) event.getRawX();
    final int Y = (int) event.getRawY();
    switch (event.getAction() & MotionEvent.ACTION_MASK) {
        case MotionEvent.ACTION_DOWN:
            FrameLayout.LayoutParams lParams = (FrameLayout.LayoutParams) view.getLayoutParams();
            _xDelta = X - lParams.leftMargin;
            _yDelta = Y - lParams.topMargin;

            mode = MOVE;
            break;
        case MotionEvent.ACTION_UP:
            break;
        case MotionEvent.ACTION_POINTER_DOWN:
            mode = ZOOM;
            break;
        case MotionEvent.ACTION_POINTER_UP:
            break;
        case MotionEvent.ACTION_MOVE:
            if (mode == ZOOM) {
                //WHAT TO DO HERE
            }
            if (mode == MOVE) {
                FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) view
                        .getLayoutParams();
                layoutParams.leftMargin = X - _xDelta;
                layoutParams.topMargin = Y - _yDelta;
                layoutParams.rightMargin = -250;
                layoutParams.bottomMargin = -250;
                view.setLayoutParams(layoutParams);
            }
            break;
    }
    relativeLayout.invalidate();
    return true;
}here

最佳答案

使用 ScaleGestureDetector 查看此文档

如果没有,你可以使用这个 library

关于android - 在 FrameLayout 中缩放 ImageView ontouch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33008032/

相关文章:

java - 在 import org.webrtc.audio.LegacyAudioDeviceModule 中找不到类 LegacyAudioDeviceModule 中的符号错误;

javascript - 定义坐标系

html - 从 CSS 调整 SVG 的大小和颜色

c++ - 视频帧上的 cvResize

java - 如何找出回收站 View 捕捉到的项目?

android - 在android中将单词转换为数字,在JSP中做相反的 Action

ios - 如何正确缩放和定位 View

r - R plotly中的离散颜色条

java - 从 Android 上的外部存储获取所有 .pdf 文件

Android 9 补丁图像按钮未按预期缩放