簡體   English   中英

在 FrameLayout ontouch 中縮放 ImageView

[英]Scale ImageView within FrameLayout ontouch

任何人都可以幫助我用 2 根手指觸摸縮放(調整大小)圖像嗎? 我有 frameLayout 並且我動態附加 imageViews。 我想縮放圖像。我可以在不使用 Matrix 的情況下解決這個問題嗎?

Move 工作正常,我在 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

使用ScaleGestureDetector查看此文檔

如果沒有,你可以使用這個

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM