-নডিপি এবং নোডপির মধ্যে পার্থক্য কী?


108

যদি আপনি অ্যান্ড্রয়েড স্টুডিও 1.5.0.0 এ ভেক্টর অ্যাসেট উইজার্ড ব্যবহার করেন তবে সেই উইজার্ডটি ব্যবহার করে আপনি যে ভেক্টর ড্রয়যোগ্য এক্সএমএলটি আমদানি করেন res/drawable/

যাইহোক, build/ডিরেক্টরি এবং ফলস্বরূপ এপিএকে দেখায় যে এই এক্সএমএল ফাইলগুলি কোনও res/drawable-anydpi-v21/সংস্থান ডিরেক্টরিতে স্থানান্তরিত হয়েছে । -v21যেমন অংশ, ইন্দ্রিয় তোলে VectorDrawableশুধুমাত্র এপিআই শ্রেনী 21+ সমর্থিত। তবে, -anydpiএটি অনিবন্ধিত বলে মনে হচ্ছে। -nodpiআসল আমদানির গন্তব্য এবং যেখানে বিল্ড সিস্টেম এটি সরিয়ে নিতে নির্বাচন করে সেখানে উভয়ের জন্যই আমি আশা করতাম।

এর -anydpiঅর্থ কী এবং এর সম্পর্ক কী, এর জন্য কি কেউ সরকারী বিবৃতি দেখেছেন -nodpi? আমি ব্যবহারিক প্রভাবগুলির জন্য সন্ধান করছি, কেবলমাত্র কিছু কোড মন্তব্যগুলি যা ইঙ্গিত করে তা নয়।


উত্তর:


106

nodpi

এগুলি ঘনত্ব-স্বাধীন সম্পদ। বর্তমান স্ক্রিনটির ঘনত্ব নির্বিশেষে সিস্টেম এই কোয়ালিফায়ারের সাথে ট্যাগ হওয়া সংস্থানগুলি স্কেল করে না।

এই ক্ষেত্রে:

  • অঙ্কনযোগ্য- nodpi / dot.png

Xxhdpi এ বিন্দুটি ছোট প্রদর্শিত হবে, বড় বড় এলডিপিআইতে।

তবে রিসোর্স রিসলভারটি যদি বিদ্যমান থাকে তবে একটি নির্দিষ্ট বাছাইয়ের সাথে মেলে।

এই ক্ষেত্রে

  • অঙ্কনযোগ্য- hdpi /eg.png
  • অঙ্কনযোগ্য- নোডপি -v21 / eg.xML

ললিপপ (এপিআই 21) এইচডিপিআই ডিভাইসে বিটম্যাপ ব্যবহার করা হয়।

ললিপপ (এপিআই 21) এক্সএইচডিপি ডিভাইসে, ভেক্টর ব্যবহার করা হয়।

anydpi

এই সংস্থানগুলি যে কোনও ডিপিআইতে প্রাধান্য পায়।

এই ক্ষেত্রে

  • অঙ্কনযোগ্য- hdpi /eg.png
  • অঙ্কনযোগ্য- anydpi -v21 / eg.xML

ললিপপ (এপিআই 21) এইচডিপিআই ডিভাইসে, ভেক্টর ব্যবহার করা হয়।

ললিপপ (এপিআই 21) এক্সএইচডিপি ডিভাইসে, ভেক্টর ব্যবহার করা হয়।

উল্লেখ

দ্রষ্টব্য : anydpi Ic3288d0236fe0bff20bb1599aba2582c25b0db32 পরিবর্তনে যুক্ত করা হয়েছিল ।


আমি যা দেখছি তা নয়। আমার অনুগ্রহের কথা উদ্ধৃত করে: "রেজ / ড্রয়যোগ্য-নোডপি / এবং পুনরায় অঙ্কনযোগ্য-এমডিপিআই / তে একই সংস্থার দুটি সংস্করণ দেওয়া হয়েছে, আমি একটি নেক্সাস 5 চলমান অ্যানড্রইড 6.0 এ রেস / অঙ্কনযোগ্য-নোডপি / সংস্করণ পাই, যা একটি এনএক্সএইচডিপিআই যন্ত্র". আপনার কাছে এমন কোনও নমুনা প্রকল্প রয়েছে যা আপনি যে আচরণটি উদ্ধৃত করছেন তা প্রদর্শন করে?
কমন্সওয়্যার

কারণ আপনি ব্যবহার করেছেন drawable। এসডিকে বাহিওর বদলে যেতে পারে। ভেক্টরড্রায়েবলটি
rd

"এটি কারণ আপনি অঙ্কনযোগ্য ব্যবহার করেছেন" - আপনি নিজের উত্তরে এটি করেছিলেন। আপনার উত্তরে আপনি যে প্রতিটি একক সংস্থান ডিরেক্টরিটি উদ্ধৃত করেছেন তা হ'ল একটি drawableউত্স ডিরেক্টরি, ঠিক যেমনটি আমি আমার অনুগ্রহে উদ্ধৃত করেছি উভয় ডিরেক্টরিই drawableসংস্থান ডিরেক্টরি।
কমন্সওয়্যার

"একটি এক্সএক্সএক্সডিপিআইতে, কাঠামোটি এইচডিপিআই বিটম্যাপটি গ্রহণ করবে।" - এটি বিশেষত যা ঘটছে তা হ'ল না, যদিও আমার পরীক্ষাটি কোনও -xxhdpiডিভাইসে রয়েছে। আমার আছে res/drawable-mdpi/nodpi_and_m.pngএবং res/drawable-nodpi/nodpi_and_m.xml। একটি নেক্সাস 5, -xxhdpiডিভাইসে, ব্যবহৃত সংস্থানটি res/drawable-nodpi/nodpi_and_m.xml। আপনার অ্যালগরিদম এবং আমার প্রত্যাশা অনুযায়ী res/drawable-mdpi/nodpi_and_m.pngব্যবহার করা উচিত। যা হচ্ছে তা নয়।
কমন্সওয়্যার

2
নীচের লাইন: আপনার মধ্যে ভেক্টর স্থাপন করা উচিত drawable-anydpi-v21। আপনার যদি সাপোর্ট-ভেক্টর-অঙ্কনযোগ্য লাইব্রেরি থাকে তবে আপনি এগুলিকে drawable-anydpiবা সহজভাবে স্থাপন করতে পারেন drawable
আরডিএস

17

সোর্স কোড নিম্নলিখিত মন্তব্য (লাইন 639) রয়েছে:

/**
 * Value for {@link #densityDpi} for resources that scale to any density (vector drawables).
 * {@hide}
 */
public static final int DENSITY_DPI_ANY = 0xfffe;

/**
 * Value for {@link #densityDpi} for resources that are not meant to be scaled.
 * {@hide}
 */
public static final int DENSITY_DPI_NONE = 0xffff;

আশা করি এই বিভ্রান্তি কেটে যায়।


8
"আশা করি এটি বিভ্রান্তি দূর করবে" - সত্যই নয়। অনুশীলনের "স্কেল টু যে কোনও ঘনত্ব" এবং "স্কেল করা নয়" এর মধ্যে পার্থক্য কী তা পরিষ্কার নয় uncle মধ্যে drawables -nodpiডিরেক্টরি অবশ্যই ছোটো পেতে আকারের উপর ভিত্তি করে, এর যাই হোক না কেন নিয়ম কিভাবে অঙ্কনযোগ্য ব্যবহার করা জায়গায় আছে অনুযায়ী।
কমন্সওয়্যার

"স্কেলডকে বোঝানো নয়" এর অর্থ প্রোগ্রামার কী করে বা ঘনত্ব কী তা বিবেচনা ছাড়াই এগুলি মাপবে না।
বিশ্বজিৎ সিং

আমি মনে করি তারা "যে কোনও ঘনত্বের স্কেল" এই বাক্যটি দ্বারা বোঝায় যে তারা ভেক্টর ড্রয়াবলকে উল্লেখ করছে যা ঘনত্ব যত বড় হোক না কেন কোনও ঘনত্বের সাথে মাপসই করবে ।
বিশ্বজিৎ সিং

3
এটি এন্ড্রয়েড.googlesource.com/platform/frameworks/base/+/31245b4%5E এ যুক্ত হয়েছিল ! , এবং এটি থেকে আপনি এটি শিখতে পারেন সম্ভবত কিছু বাগ 17007265 ঠিক করা হয়েছে
মার্চিনজ

1
@ মার্সিনজেড্রেজেজেউস্কি: আসলে, "বেস্ট ম্যাচ হিসাবে বেছে নেওয়া হয়েছে যদি না এমন কনফিগারেশন থাকে যা ঘনত্বের সাথে অনুরোধের সাথে মিলিত হয় তবে" এই প্রতিশ্রুতি সম্পর্কে মন্তব্যটি আমাকে একটি ক্লু দেয়। ধন্যবাদ!
কমন্সওয়্যার

10

nodpi: সমস্ত ঘনত্বের জন্য সংস্থান। এগুলি ঘনত্ব-স্বাধীন সম্পদ। বর্তমান স্ক্রিনটির ঘনত্ব নির্বিশেষে সিস্টেম এই কোয়ালিফায়ারের সাথে ট্যাগ হওয়া সংস্থানগুলি স্কেল করে না।

anydpi: এই কোয়ালিফায়ার সমস্ত পর্দার ঘনত্বের সাথে মেলে এবং অন্যান্য বাছাইপদের চেয়ে অগ্রাধিকার গ্রহণ করে। এটি ভেক্টর ড্রয়যোগ্যদের জন্য দরকারী। এপিআই লেভেল 21-এ যুক্ত হয়েছে।


9

আমি আমার গেমের জন্য প্রচুর পরিমাণে গ্রাফিক্স সহ সমস্ত কিছুর জন্য অঙ্কনযোগ্য-নোডপি ব্যবহার করি। আপনার গ্রাফিক্সকে স্কেলিং করার একটি অনির্ধারিত পরিণতি হ'ল এটি মেমরির ব্যবহার তাত্পর্যপূর্ণভাবে বাড়ায়। সুতরাং আপনার কাছে যদি অঙ্কনযোগ্য 1MB গ্রাফিক থাকে তবে এটি ব্যবহারকারী ডিভাইসের রেজোলিউশনের উপর নির্ভর করে 4MB, 16MB বা 64MB এ স্কেল করে দেওয়া হবে। এবং ডিভাইসের রেজোলিউশনগুলি এগিয়ে যেতে থাকে। অবশ্যই এটি স্কেলিং অবশ্যই গ্রাফিকের তীক্ষ্ণতা বাড়ায় না। অঙ্কন ক্রিয়াগুলি নির্দেশিত করতে পারে যে কোনওভাবেই গ্রাফিকের পর্দার আকারের সাথে কত বড় হওয়া উচিত, একাধিক ড্র ফোল্ডারগুলির সাথে অ্যাপ্লিকেশনটি ব্লোট করার দরকার নেই।


3
আন্ডাররেটেড উত্তর। আমি একই সমস্যাটির মুখোমুখি হয়েছি: একটি চিত্র 100 কেবি বড় ছিল তবে এটি লোড করার সময় প্রায়শই ওওএম ত্রুটি ছিল। অ্যাপটি ক্র্যাশ করে জানিয়েছে যে এটি 18 এমবি বরাদ্দ করতে পারে না !!! এই 100 কেবি কীভাবে 18 এমবিতে রূপান্তরিত হতে পারে তা বুঝতে পারি নি, তবে এটি আসলে সেই স্কেলিংয়ের ফলাফল। নো-ডিপিআইতে চিত্রটি স্যুইচ করা সমস্যার সমাধান করেছে।
সাইমন নিনন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.