【问题标题】:Scale ImageView within FrameLayout ontouch在 FrameLayout ontouch 中缩放 ImageView
【发布时间】:2015-10-08 14:42:12
【问题描述】:

谁能帮我用两根手指缩放(调整大小)图像?我有 frameLayout 并且我动态附加 imageViews。我想缩放图像。我可以在不使用 Matrix 的情况下解决这个问题吗?

移动工作正常我在 frameLayout 上移动图像。但缩放不知道。你能给我一些链接或图书馆如何解决这个问题吗?我找到了一些解决方案,但问题在于比例仅在 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

【问题讨论】:

    标签: android scale


    【解决方案1】:

    使用ScaleGestureDetector查看此文档

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

    【讨论】:

    • 我使用了第二个库并且我使用了其他示例,图像缩放工作正常,但是当我离开屏幕时放大或缩小后它仍然返回默认分辨率。当手指离开屏幕图像时恢复默认。这可以吗,还是我需要添加一些东西?也许一样
    • 这个库可以帮助您放大和缩小。你要问的是根据放大和缩小调整图像的大小,如果你想实现这一点,你需要别的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    • 2016-08-17
    • 2014-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多