ज्यादातर मामलों में, रूपांतरण कार्यों को अक्सर कहा जाता है। हम इसे संस्मरण जोड़कर अनुकूलित कर सकते हैं। इसलिए, यह हर बार गणना नहीं करता है कि फ़ंक्शन कहा जाता है।
आइए एक हैशपॉप घोषित करें जो गणना किए गए मूल्यों को संग्रहीत करेगा।
private static Map<Float, Float> pxCache = new HashMap<>();
एक फ़ंक्शन जो पिक्सेल मानों की गणना करता है:
public static float calculateDpToPixel(float dp, Context context) {
Resources resources = context.getResources();
DisplayMetrics metrics = resources.getDisplayMetrics();
float px = dp * (metrics.densityDpi / 160f);
return px;
}
एक संस्मरण समारोह जो हैशपॅप से मान लौटाता है और पिछले मानों का रिकॉर्ड रखता है।
ज्ञापन को जावा में विभिन्न तरीकों से लागू किया जा सकता है। जावा 7 के लिए :
public static float convertDpToPixel(float dp, final Context context) {
Float f = pxCache.get(dp);
if (f == null) {
synchronized (pxCache) {
f = calculateDpToPixel(dp, context);
pxCache.put(dp, f);
}
}
return f;
}
जावा 8 लंबोदा फंक्शन का समर्थन करता है :
public static float convertDpToPixel(float dp, final Context context) {
pxCache.computeIfAbsent(dp, y ->calculateDpToPixel(dp,context));
}
धन्यवाद।