Từ 1 tới 2 trên tổng số 2 kết quả

Đề tài: Sử dụng Matrix để zoom in / out ImageView trong Android ?

  1. #1
    Ngày gia nhập
    03 2008
    Bài viết
    5

    Question Sử dụng Matrix để zoom in / out ImageView trong Android ?

    Thuộc tính ImageView mình khai báo:
    XML Code:
    1.     <FrameLayout
    2.        android:layout_width="fill_parent"
    3.        android:layout_height="600px">
    4.         <ImageView
    5.            android:id="@+id/imageview"
    6.            android:layout_width="fill_parent"
    7.            android:layout_height="fill_parent"
    8.            android:scaleType="matrix"
    9.            >
    10.         </ImageView>
    11.     </FrameLayout>

    Trong Activity.java mình sử dụng như sau: Khi nhấn button thì nó sẽ zoom In ảnh:
    Java Code:
    1. b_Zoomin.setOnClickListener(new OnClickListener() {
    2.            @Override
    3.            public void onClick(View v) {              
    4.                matrix.set(savedMatrix);
    5.                float scale = 0.9f;
    6.                matrix.postScale(scale, scale, 3.0f, 4.0f);
    7.                image.setImageMatrix(matrix);
    8.                savedMatrix.set(matrix);
    9.            }
    10.         });

    Các bạn cho mình hỏi là. Với code trên của mình thì ảnh không hiển thị ở trung tâm màn hình mà lại hiển thị ở góc trên bên trái màn hình. Giờ nên sửa đoạn code trên thế nào để nó có thể nằm ở trung tâm màn hình vậy ạ ? Và nếu ảnh to thì nó sẽ không nằm ra ngoài màn hình

  2. #2
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Có nhiều cách để làm điều này.
    1. Sử dụng setRectToRect

    2. Sử dụng cách bạn đã làm, bằng xử lý thêm postTranslate
    Java Code:
    1.     savedMatrix.reset();
    2.     savedMatrix.postTranslate(-imageWidth / 2f, -imageHeight / 2f);
    3.     savedMatrix.postScale(scale, scale);
    4.     savedMatrix.postTranslate(tx, ty);
    Chỉ cần tính tx, ty sao cho hợp lý là OK thôi!
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

Các đề tài tương tự

  1. Cài đặt lớp Matrix trong C++
    Gửi bởi vodanh01 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 31
    Bài viết cuối: 02-11-2018, 10:59 PM
  2. Graphic làm sao để zoom in zoom out cho picturebox
    Gửi bởi Riku trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 08-12-2013, 09:37 PM
  3. Zoom in ImageView khi rê chuột vào (trong AVD).
    Gửi bởi itbk trong diễn đàn Lập trình Android và Java Mobile
    Trả lời: 3
    Bài viết cuối: 10-07-2013, 09:59 PM
  4. Lập trình C++ Cấp phát động đối với hàm Transpose trong class Matrix
    Gửi bởi bbnew trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 7
    Bài viết cuối: 31-10-2012, 10:47 AM
  5. Các hàm Matrix trong C# XNA có tài liệu không?
    Gửi bởi acquydem12 trong diễn đàn Công cụ, ebooks C#, ASP.NET, và Windows Mobile
    Trả lời: 1
    Bài viết cuối: 27-04-2012, 03:07 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn