আমার কাছে একটি চিত্রভিউ এবং একটি বিটম্যাপ থাকা দরকার, তাই বিটম্যাপটি চিত্র-ভিউ আকারে ছোট করা যায়, এবং চিত্রমাপের আকারটি বিভক্ত বিটম্যাপের সমান :)।
আমি কীভাবে এটি করতে পারি তার জন্য এই পোস্টটি সন্ধান করছিলাম এবং অবশেষে আমি যা চাই তা করেছি, যদিও এখানে বর্ণিত উপায় নেই।
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/acpt_frag_root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/imageBackground"
android:orientation="vertical">
<ImageView
android:id="@+id/acpt_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:adjustViewBounds="true"
android:layout_margin="@dimen/document_editor_image_margin"
android:background="@color/imageBackground"
android:elevation="@dimen/document_image_elevation" />
এবং তারপরে অনক্রিটভিউ পদ্ধতিতে
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_scanner_acpt, null);
progress = view.findViewById(R.id.progress);
imageView = view.findViewById(R.id.acpt_image);
imageView.setImageBitmap( bitmap );
imageView.getViewTreeObserver().addOnGlobalLayoutListener(()->
layoutImageView()
);
return view;
}
এবং তারপরে লেআউটআইজেজভিউ () কোডটি
private void layoutImageView(){
float[] matrixv = new float[ 9 ];
imageView.getImageMatrix().getValues(matrixv);
int w = (int) ( matrixv[Matrix.MSCALE_X] * bitmap.getWidth() );
int h = (int) ( matrixv[Matrix.MSCALE_Y] * bitmap.getHeight() );
imageView.setMaxHeight(h);
imageView.setMaxWidth(w);
}
এবং ফলাফলটি হল যে চিত্রটি নিখুঁতভাবে ভিতরে ফিট করে, অনুপাতের অনুপাত রেখে, এবং বিটম্যাপের অভ্যন্তরে ইমেজভিউ থেকে অতিরিক্ত বাম পিক্সেল নেই।
ফলাফল
সঠিকভাবে র্যাপ_কন্টেন্ট এবং অ্যাডজাস্ট ভিউবাউন্ডগুলি রাখা গুরুত্বপূর্ণ চিত্রভিউর গুরুত্বপূর্ণ, তারপরে সেটম্যাক্সউইথ এবং সেটম্যাক্সহাইট কাজ করবে, এটি ইমেজভিউয়ের উত্স কোডে লেখা হয়েছে,
/*An optional argument to supply a maximum height for this view. Only valid if
* {@link #setAdjustViewBounds(boolean)} has been set to true. To set an image to be a
* maximum of 100 x 100 while preserving the original aspect ratio, do the following: 1) set
* adjustViewBounds to true 2) set maxWidth and maxHeight to 100 3) set the height and width
* layout params to WRAP_CONTENT. */
ImageView
চিত্রের আকারে পরিবর্তন করতে চাইছেন ? উদাহরণস্বরূপ 100dp x 150dp এর চিত্রটি কিImageView
একই পদক্ষেপে স্কেল হবে ? বা আপনি কীভাবে চিত্রটিকেImageView
সীমানায় স্কেল করবেন তার অর্থ । 1000dp x 875dp এর উদাহরণস্বরূপ 250dp x 250dp এ স্কেল করা হবে। আপনার কি অনুপাত বজায় রাখা দরকার?