চিত্রটি পূর্ণ প্রস্থ এবং স্থির উচ্চতায় পিকাসোর সাথে পুনরায় আকার দিন


164

আমার একটি উল্লম্ব লিনিয়ারলআউট রয়েছে যেখানে আইটেমগুলির মধ্যে একটিতে ImageViewপিকাসো ব্যবহার করে বোঝাই করা হয়। আমাকে চিত্রটির প্রস্থটি পুরো ডিভাইসের প্রস্থে বাড়িয়ে তুলতে হবে এবং একটি নির্দিষ্ট উচ্চতা (150 ডিপি) দ্বারা ক্রপ হওয়া চিত্রটির কেন্দ্র অংশটি প্রদর্শন করতে হবে। আমার কাছে বর্তমানে নিম্নলিখিত কোড রয়েছে:

Picasso.with(getActivity()) 
    .load(imageUrl) 
    .placeholder(R.drawable.placeholder) 
    .error(R.drawable.error) 
    .resize(screenWidth, imageHeight)
    .centerInside() 
    .into(imageView);

আমার কোন মানগুলি screenWidthএবং imageHeight(= 150dp) এ রাখা উচিত ?

উত্তর:


486

আপনি খুঁজছেন:

.fit().centerCrop()

এর অর্থ:

  • fit- যতক্ষণ না ImageViewপরিমাপ করা হয়েছে ততক্ষণ অপেক্ষা করুন এবং এর আকারের সাথে সঠিকভাবে মেলে ছবিটির আকার পরিবর্তন করুন।
  • centerCrop- আকারটি পূরণ না করা অবধি অনুপাতটিকে সম্মান করে ছবিটি স্কেল করুন। উপরের এবং নীচে বা বাম এবং ডান উভয় ক্রপ করুন যাতে এটি আকারের সাথে ঠিক মেলে।

5
চিত্রটি দেখার উচ্চতা কত হওয়া উচিত? আমি আমার চিত্র দেখার জন্য একটি নির্দিষ্ট উচ্চতা চাই না। এটি চিত্রের উচ্চতা অনুযায়ী পরিবর্তন করা উচিত।
চেতনা

4
.fit().centerInside()আমার জন্য কাজ করেছে যেখানে কেবল ত্রুটি বার্তাটি ব্যবহার করে .centerInside()ক্র্যাশ হচ্ছে Center inside requires calling resize with positive width and height.
রক লি

@ রক লি, আপনাকে এটির আকার পরিবর্তন করতে হবে: '। লোড (ইউআরএল) .রেসাইজ (টার্গেটউইথ, টার্গেটহাইট)' .........
এফআরকে

8
.fit().centerCrop()বা .fit().centerInside()কাজ করছে না। চিত্রটি লোড হচ্ছে না imageView.fit()ইমেজ ছাড়া জরিমানা লোড হয়। আমি .resize()উভয় ক্ষেত্রে ব্যবহার করছি না ।
নিশান্ত ভক্ত

কোনও দিক থেকে এটি ক্রপ না করে এবং দিকটি বজায় না রেখে কীভাবে এটির আকার পরিবর্তন করবেন
রোহিত শর্মা

1

কিছু ক্ষেত্রে ফিট () অকেজো। প্রস্থ এবং উচ্চতা পরিমাপ শেষ হওয়ার আগে আপনাকে অবশ্যই অপেক্ষা করতে হবে। সুতরাং আপনি গ্লোবাল্লেআউটলিস্টনার ব্যবহার করতে পারেন। উদাহরণ স্বরূপ;

imageView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
            public void onGlobalLayout() {
                Picasso.with(getActivity())
                        .load(imageUrl)
                        .placeholder(R.drawable.placeholder)
                        .error(R.drawable.error)
                        .resize(screenWidth, imageHeight)
                        .fit
                        .centerInside()
                        .into(imageView);
                imageView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
            }
        });
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.