ফর্মুলা পিএক্স থেকে ডিপি, ডিপি থেকে পিএক্স অ্যান্ড্রয়েড


150

আমি ঘনত্বের স্বাধীন পিক্সেল এবং তদ্বিপরীত থেকে পিক্সেলের একটি পরিবর্তনশীল পরিমাণ গণনা করার চেষ্টা করছি।

এই সূত্রটি (px to dp): dp = (int)(px / (displayMetrics.densityDpi / 160));ছোট ডিভাইসে কাজ করে না কারণ এটি শূন্য দ্বারা বিভক্ত।

এটি আমার ডিপি থেকে পিএক্স সূত্র:

px = (int)(dp * (displayMetrics.densityDpi / 160));

কেউ আমাকে কিছু পয়েন্টার দিতে পারেন?


1
ডিপি ইউনিটকে পিক্সেল ইউনিটগুলিতে বিকাশকারী
পদ্ম কুমার

@ ব্র্যাম: আমি মনে করি আপনার সূত্রটি ঠিক আছে। আপনি কিভাবে শূন্য দ্বারা একটি বিভাগ পাবেন? displayMetrics.densityDpi হয় 120, 160, 240 বা 320, কখনও 0 হবে না
সিটি_রোব

আমি @ct_rob এর সাথে একমত displayMetrics.densityDpi / 160 সর্বনিম্ন মান 0.75 হবে। আপনি অবশ্যই ভুল জায়গায় intালাই করা হয়েছে।
টমটাইলা

উত্তর:


318

দ্রষ্টব্য: উপরোক্ত বহুল ব্যবহৃত সমাধান ভিত্তিক displayMetrics.density । তবে দস্তাবেজগুলি ব্যাখ্যা করে যে এই মানটি একটি বৃত্তাকার মান, যা স্ক্রিনের 'বালতি' সহ ব্যবহৃত হয়। যেমন। আমার নেক্সাস 10 এ এটি 2 টি ফিরে আসে, যেখানে আসল মান 298 ডিপিআই (বাস্তব) / 160 ডিপিআই (ডিফল্ট) = 1.8625 হবে 86

আপনার প্রয়োজনীয়তার উপর নির্ভর করে আপনার সঠিক রূপান্তর প্রয়োজন হতে পারে যা এইভাবে অর্জন করা যেতে পারে:

[সম্পাদনা] এটি অ্যান্ড্রয়েডের অভ্যন্তরীণ ডিপি ইউনিটের সাথে মিশ্রিত হওয়ার অর্থ নয়, কারণ এটি অবশ্যই পর্দার বালতিগুলির উপর ভিত্তি করে। আপনি যেখানে এমন একক চান যেখানে এটি ব্যবহার করুন যেখানে বিভিন্ন ডিভাইসে একই আসল আকার রেন্ডার করা উচিত।

পিপিএলে ডিপি রূপান্তর করুন:

public int dpToPx(int dp) {
    DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics();
    return Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));     
}

পিক্সেলকে ডিপিতে রূপান্তর করুন:

public int pxToDp(int px) {
    DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics();
    return Math.round(px / (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));
}

মনে রাখবেন যে এক্সডিপিআই এবং ইডিপিআই বৈশিষ্ট্য রয়েছে, আপনি আলাদা করতে চাইতে পারেন, তবে এই মানগুলি যেখানে খুব বেশি আলাদা সেগুলি আমি কোনও বুদ্ধিমান ডিসপ্লে কল্পনা করতে পারি না।


8
এটি অনেক ডিভাইসে dp / px এর সঠিক মান গণনা করবে না (আপনার নেক্সাস 10 সহ)! আপনি যেমন বলে থাকেন যে ডিসপ্লেমেট্রিক্স.ডেনসিটিটি নিকটতম স্ক্রিন বালতিতে গোল হয় তবে ডিপি ইউনিটটিও তাই! ১d০ ডিপি প্রশস্ত একটি বস্তু আঁকার চেষ্টা করুন এবং এর ঠিক নীচে আপনি আরেকটি বস্তু আঁকুন যা dpToPx (160) পিক্সেল প্রশস্ত এবং আপনি দেখতে পাবেন যে দুটি বস্তুর আকার পৃথক। এছাড়াও কিছু ফোন (যেমন গ্যালাক্সি মিনি এবং গ্যালাক্সি এস 3 মিনি) এক্সডিপিআই / ইডিপিআইয়ের জন্য সম্পূর্ণ ভুল মানের প্রতিবেদন করে তাই এই ফোনে আপনার পদ্ধতিগুলি সম্পূর্ণরূপে ভুল ফলাফল প্রত্যাবর্তন করবে।
নিবারিয়াস

@ নিবারিয়াস হ্যাঁ আপনি উপরের সাথে অ্যান্ড্রয়েডের বক্সড ডিপি গণনা মিশ্রিত করতে পারবেন না। উপরের সমাধানটি সঠিক ডিভাইস পদার্থবিজ্ঞানের উপর ভিত্তি করে একটি পৃথক ঘনত্বের স্বাধীন মান হিসাবে বোঝানো হয়েছে। প্রয়োজন যেমন আপনি যেখানে কোনও ডিভাইস বিভিন্ন ডিভাইসে ঠিক একই আসল দৈর্ঘ্যটি দেখাতে চান। অবশ্যই যদি কিছু ডিভাইস xdpi / ydpi ইনপুটগুলি সঠিকভাবে সেট না করে থাকে তবে এটি সেখানে কাজ করবে না।
বাচি

1
xdpi এবং ydpi ব্যবহার করা উচিত নয়, কারণ এগুলি অনেকগুলি ডিভাইসে ভুল হয়, কখনও কখনও প্রচুর পরিমাণে। কেবল ডিসপ্লেমেট্রিক্স.ডেনসিটিডিপিই নির্ভরযোগ্য, যা দুর্ভাগ্যজনক, যেহেতু এটি ডিজাইনের দ্বারা অনর্থক। আরও তথ্যের জন্য গুগল ফোরামের থ্রেড দেখুন: groups.google.com/forum/#!topic/android-developers/g56jV0Hora0
মার্ক ম্যাককেলল্যান্ড

1
আমি এই প্রতিক্রিয়াটি পেয়েছি এবং বাস্তবে অনেকগুলি অনুরূপ সমাধান ব্যবহার করেছি তবে আমি কেবল ডক্সের মধ্যে দিয়ে গিয়েছিলাম এবং ডাইমেনশন সহ ডাইমেনশনপিক্সেল পিক্সেল অফসেট পেয়েছি (ডিপ / ডিপি হিসাবে ঘোষিত) হস্তনির্মিত কোডের মতো পিক্সেলগুলিতে অফসেটটি ফেরত দেয়। আমি নির্বিঘ্নে পরীক্ষা এবং কাজ করেছি। আশা করি এটা সাহায্য করবে!
উইলিয়াম গওভা

1
মেহহ, এটি সঠিক মান দেয় না। চেষ্টা করুন: রিসোর্সেস r = getResource (); ফ্লোট পিএক্স = টাইপডভ্যালিউ.এপ্লিডাইমেনশন (টাইপডভ্যালিউ। COMPLEX_UNIT_DIP, 14, r.getDisplayMetrics ()); এখানে বর্ণিত হিসাবে: স্ট্যাকওভারফ্লো
রিক ভ্যান ভেলজেন

103

আমি নিম্নলিখিত সূত্রগুলি ব্যবহার করে আমার সমস্যার সমাধান করেছি। অন্যান্য মানুষ এটি থেকে উপকৃত হতে পারে।

পিপিএক্স থেকে ডিপি:

displayMetrics = context.getResources().getDisplayMetrics();
return (int)((dp * displayMetrics.density) + 0.5);

পিএক্স থেকে ডিপি:

displayMetrics = context.getResources().getDisplayMetrics();
return (int) ((px/displayMetrics.density)+0.5);

27
@ ভেম ০.৫ যোগ করার ফলে ইউপিটিকে নিকটতম পূর্ণসংখ্যার মানকে গোল করতে ব্যবহৃত হয় .. ০.০ যোগ করা হয় এবং তারপরে গণনার ফলাফলটি মন্টিসাকে ছাঁটাই করে দেয় এবং যথাযথভাবে পূর্ণসংখ্যার মান হিসাবে বৈশিষ্ট্য রেখে যায় int
কেলি কোপালি

3
এটি সর্বদা সঠিক নয়। আমার যখন অন্যটির ভিতরে দুটি লেআউট থাকে এবং তারপরে আমি প্রতিটি দর্শনটির কোণায় গোল করি (একটি ডিপি ব্যবহার করে অন্যটি ডিপিতে রূপান্তর করে) কোণ মেলে না!
মারেক

এই কৌশলটি নিয়ে আমার কোনও সমস্যা হয়নি। আমি এটি বিভিন্ন লেআউটগুলির জন্য ব্যবহার করেছি এবং এটি সর্বদা প্রত্যাশার মতো কাজ করে। অবশ্যই আমি কয়েক বছর আগে এটি ব্যবহার করেছি এবং এখনও নিশ্চিত না যে এটি এখনও কাজ করে। পানাভিটেকের উত্তরে আপনি অন্য কৌশলটি চেষ্টা করতে পারেন। এটি এমনও হতে পারে যে কেবল dp / px গণনার চেয়ে গোলাকার কোণগুলির আরও অনেক কিছু রয়েছে।
ব্রাম

5
এটি একই সমাধান যা অ্যান্ড্রয়েড বিকাশকারী সাইটে গৃহীত হয়, তাই আমি অনুমান করি যে এটি সঠিক)। http://developer.android.com/guide/practices/screens_support.html#dips-pels
alocaly

1
+1 ধন্যবাদ মানুষ। মোহন মত কাজ! আমাদের সাথে এই সমাধান ভাগ করে নেওয়ার জন্য আপনাকে ধন্যবাদ।
সাইমন ডোরোসিয়াক

34

পিএক্স থেকে ডিপি:

int valueInpx = ...;
int valueInDp= (int) TypedValue.applyDimension(
            TypedValue.COMPLEX_UNIT_DIP, valueInpx , getResources()
                .getDisplayMetrics());

7
এটি ডিপি থেকে পিএক্স, তবে এই সংশোধনের সাথে: typedValue.applyDimension( TypedValue.COMPLEX_UNIT_PX, valueInDp , getResources() .getDisplayMetrics());পিএক্স থেকে ডিপি পর্যন্ত, এটিও সেরা উত্তর
PaNaVTEC

1
@ পনাভটেক, ডিপি থেকে পিক্সের জন্য আপনি যে সমাধানটি উল্লেখ করেছেন তা ভুল। applyDimensionকেবল পিক্সেল দেয়। অ্যান্ড্রয়েড.googlesource.com/platform/frameworks/base/+/refs/heads/… দেখুন যার জন্য কোনও রূপান্তর হয় না COMPLEX_UNIT_PX
স্টিফেন নিডজিয়েলস্কি

এই উত্তরটি সরল ভুল। এটি পিক্সেলগুলিতে চূড়ান্ত মানগুলি প্রদান করে, কখনই না dp। আপনি সোর্স কোড তাকান, ক্ষেত্রে জন্য TypedValue.COMPLEX_UNIT_DIP, value * metrics.density, ফিরে যেখানে আপনি আসলে প্রয়োজন হয় value * metrics.density। তাই কি আপনি valueInDp` getting` হয় নয় dpজন্য valueInPxমধ্যে px
বিটবাইট

^ টাইপো, আমার অর্থ "... যেখানে আপনার আসলে প্রয়োজন value / metrics.density"
বিটবাইবিট

31

দক্ষ উপায় কখনও

পিক্সেল থেকে ডিপি:

private int dpToPx(int dp)
{
    return (int) (dp * Resources.getSystem().getDisplayMetrics().density);
}

পিক্সেল থেকে ডিপি:

private int pxToDp(int px)
{
    return (int) (px / Resources.getSystem().getDisplayMetrics().density);
}

আশা করি এটা তোমাকে সাহায্য করবে।


4
আরও ভাল কারণ প্রসঙ্গে ব্যবহার করার দরকার নেই :) ধন্যবাদ।
আইয়াজ আলিফভ

2
সর্বোত্তম উত্তর! দুর্ভাগ্যক্রমে "সঠিক হিসাবে চিহ্নিত" উত্তরটি ভুল। বিশেষত যেহেতু এটি ব্যবহার করে displayMetrics.xdpiযা কোনও ডিভাইসে আলাদা। দুঃখের বিষয়, অতিরিক্তভাবে এই ভুল উত্তরের সর্বাধিক উন্নতি হয়েছে।
টুম

সুন্দর। সেরা উত্তর হিসাবে চিহ্নিত করা উচিত। কোটলিন:private fun dpToPx(dp: Int) = (dp * Resources.getSystem().displayMetrics.density).toInt()
রাফেল সি

28

ইউনিট থেকে পিক্সেল getResources().getDimensionPixelSize(R.dimen.your_dimension)রূপান্তর করার জন্য কেবল কল করুনdp


3
ডকুমেন্টেশন অনুসারে, এটি গেটডাইমেনশন () এর সমান, পরিবর্তিত মানটি আকার হিসাবে ব্যবহারের জন্য পূর্ণসংখ্য পিক্সেলে রূপান্তরিত হয়। একটি আকার রূপান্তরের মধ্যে বেস মানটি গোল করা হয় এবং একটি শূন্য-ভিত্তিক মান কমপক্ষে একটি পিক্সেল আকারের হয় তা নিশ্চিত করে।
সিজেবিএস


6
px = dp * (dpi / 160)

dp = px * (160 / dpi)

যদিও, এখন আমি এটি সম্পর্কে চিন্তা করি ... ব্রামসের মূল সূত্রে শূন্যের দ্বারা কোনও বিভাজন কীভাবে হবে? displayMetrics.densityDpi হয় 120, 160, 240 বা 320, কখনও 0 হবে না
সিটি_রোব

2
(displayMetrics.densityDpi / 160)- এই অংশটি ছোট ডিভাইসে 0 পেতে পারে, সেখানে এটি উদাহরণস্বরূপ গণনা করে 120/160, উভয় মান হ'ল, যার ফলাফল 0 হয় Which যা শেষ হয় (int) (px/0)

আহ, তুমি ঠিক বলেছ সুতরাং তাকে যা করতে হবে তা হ'ল তার সূত্রটিতে একটি দীর্ঘ ব্যবহার করা উচিত: 160.0
ct_rob

এই উত্তরটি ডিসপ্লেমেট্রিক্সের কারণে উপরেরটির মতো। DENSITY_DEFAULT এর 160 টি মান রয়েছে। তবে আপনি কী দয়া করে আমাদের এটি ডিপিআই বলতে পারেন তা কীভাবে আমরা এটি গণনা করি।
জন স্মিথ

3

বেশিরভাগ ক্ষেত্রে, রূপান্তর ফাংশনগুলি ঘন ঘন বলা হয়। আমরা মেমোয়েজেশন যুক্ত করে এটি অনুকূল করতে পারি। সুতরাং, এটি প্রতিবার ফাংশন বলা হয়ে থাকে তা গণনা করে না।

আসুন একটি হ্যাশম্যাপ ঘোষণা করুন যা গণনা করা মানগুলি সংরক্ষণ করবে।

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));
}

ধন্যবাদ।


প্রদত্ত সমাধানগুলিতে দুর্দান্ত সংযোজন।
ব্রাম

রূপান্তর গণনাটি যদি কোনও মানচিত্রের অনুসন্ধানের মতো কমপক্ষে তত দ্রুত না হয় তবে একটি সিঙ্ক্রোনাইজডটির উল্লেখ না করে আমি অবাক হয়ে যাব। এই অপ্টিমাইজেশনটি উপকারী তা প্রমাণ করার জন্য আপনার কি কোনও পরীক্ষার ফলাফল রয়েছে? অ্যান্ড্রয়েডে যেখানে ওয়ার্কিং মেমোরি সীমিত, গণনার প্রচেষ্টার জন্য ট্রেডিং মেমরি এমন কোনও কারণ নয় যা আপনার উপযুক্ত কারণ ছাড়াই করা উচিত।
লর্নি লালিবার্তে


2

নীচের ফ্যাশনগুলি ডিভাইসগুলিতে আমার জন্য ভালভাবে কাজ করেছে।

এটি https://gist.github.com/laaptu/7867851 থেকে নেওয়া হয়েছে

public static float convertPixelsToDp(float px){
    DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();
    float dp = px / (metrics.densityDpi / 160f);
    return Math.round(dp);
}

public static float convertDpToPixel(float dp){
    DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();
    float px = dp * (metrics.densityDpi / 160f);
    return Math.round(px);
}

1

আপনি [DisplayMatrics][1]পর্দার ঘনত্ব ব্যবহার এবং নির্ধারণ করতে পারেন । এটার মতো কিছু:

int pixelsValue = 5; // margin in pixels
float d = context.getResources().getDisplayMetrics().density;
int margin = (int)(pixelsValue * d);

যেমনটি আমার মনে আছে অফসেটের জন্য মেঝে এবং প্রস্থের জন্য গোলাকার ব্যবহার করা ভাল।


1

আপনি যদি ডিপি, এসপি, ইঞ্চি, মিলিমিটার, পয়েন্ট বা পিক্সেলকে একে অপরের থেকে বিভিন্ন স্ক্রিন ঘনত্বে রূপান্তর করার জন্য কোনও অনলাইন ক্যালকুলেটর খুঁজছেন, তবে এটি আমার জানা সবচেয়ে সম্পূর্ণ সরঞ্জাম


1

// দশমিক / ফ্লোটের শর্তে পাওয়ার জন্য

public static float convertPixelsToDp(float px, Context context) {

    Resources resources = context.getResources();
    DisplayMetrics metrics = resources.getDisplayMetrics();
    float dp = px / (metrics.densityDpi / 160f);
    return Math.round(dp);
}



public static float convertDpToPixel(float dp, Context context) {
    DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();
    float px = dp * (metrics.densityDpi / 160f);
    return Math.round(px);
}


// for  getting in terms of Integer

private int convertPxToDp(int px, Context context) {
    Resources resources = context.getResources();
    return Math.round(px / (resources.getDisplayMetrics().xdpi / DisplayMetrics.DENSITY_DEFAULT));
}


private int convertDpToPx(int dp, Context context) {
    Resources resources = context.getResources();

    return Math.round(dp * (resources.getDisplayMetrics().xdpi / DisplayMetrics.DENSITY_DEFAULT));

}

________________________________________________________________________________

public static float convertPixelsToDp(float px){
    DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();
    float dp = px / (metrics.densityDpi / 160f);
    return Math.round(dp);
}

public static float convertDpToPixel(float dp){
    DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();
    float px = dp * (metrics.densityDpi / 160f);
    return Math.round(px);
}


private int convertDpToPx(int dp){
    return Math.round(dp*(getResources().getDisplayMetrics().xdpi/DisplayMetrics.DENSITY_DEFAULT));

}

private int convertPxToDp(int px){
    return Math.round(px/(Resources.getSystem().getDisplayMetrics().xdpi/DisplayMetrics.DENSITY_DEFAULT));
}

1

এই কোটলিন এক্সটেনশনগুলি ব্যবহার করুন:

/**
 * Converts Pixel to DP.
 */
val Int.pxToDp: Int
    get() = (this / Resources.getSystem().displayMetrics.density).toInt()

/**
 * Converts DP to Pixel.
 */
val Int.dpToPx: Int
    get() = (this * Resources.getSystem().displayMetrics.density).toInt()

0

এই লেখার জন্য নির্দ্বিধায় আমি লিখেছিলাম:

int dpToPx(int dp)
{
    return (int) (dp * getResources().getDisplayMetrics().density + 0.5f);
}

0

উপরে গৃহীত উত্তর সম্পূর্ণ নির্ভুল নয়। অ্যান্ড্রয়েড উত্স কোড পরিদর্শন করে প্রাপ্ত তথ্য অনুযায়ী:

Resources.getDimension()এবং getDimensionPixelOffset()/ getDimensionPixelSize()কেবল আগের পার্থক্যগুলির মধ্যে পৃথক হয় floatযখন দ্বিতীয় দুটি একই মানটিকে intযথাযথভাবে গোল করে দেয় । তাদের সকলের জন্য, ফেরতের মানটি কাঁচা পিক্সেলগুলিতে।

সমস্ত তিনটি ফাংশন কল করে implementedy হয় Resources.getValue()এবং এইভাবে রূপান্তর প্রাপ্ত TypedValueকল করে TypedValue.complexToDimension(), TypedValue.complexToDimensionPixelOffset()এবং TypedValue.complexToDimensionPixelSize()যথাক্রমে।

অতএব, আপনি যদি এক্সএমএল উত্সে উল্লিখিত ইউনিটের সাথে একসাথে "কাঁচা" মান পেতে চান Resources.getValue()তবে TypedValueশ্রেণীর কল এবং পদ্ধতিগুলি কল করুন ।


0

অন্যান্য উত্তরের সাহায্যে আমি এই ফাংশনটি লিখেছি।

public static int convertToPixels(Context context, int nDP)
{
        final float conversionScale = context.getResources().getDisplayMetrics().density; 
        return (int) ((nDP * conversionScale) + 0.5f) ;
}

0

কোটলিন এক্সটেনশানগুলি ব্যবহার করে এটি করার জন্য এখানে অন্য উপায় রয়েছে:

val Int.dpToPx: Int
    get() = Math.round(this * Resources.getSystem().displayMetrics.density)

val Int.pxToDp: Int
    get() = Math.round(this / Resources.getSystem().displayMetrics.density)

এবং তারপরে যে কোনও জায়গা থেকে এটি ব্যবহার করা যেতে পারে

12.dpToPx

244.pxToDp

0
DisplayMetrics displayMetrics = contaxt.getResources()
            .getDisplayMetrics();

    int densityDpi = (int) (displayMetrics.density * 160f);
    int ratio = (densityDpi / DisplayMetrics.DENSITY_DEFAULT);
    int px;
    if (ratio == 0) {
        px = dp;
    } else {
        px = Math.round(dp * ratio);

    }

0

উপরের সিটি_রোবসের উত্তরের প্রকরণ, আপনি যদি পূর্ণসংখ্যার ব্যবহার করে থাকেন তবে এটি কেবল 0 দ্বারা বিভাজনকে এড়িয়ে চলে না এটি ছোট ডিভাইসে একটি ব্যবহারযোগ্য ফলাফলও দেয়:

সংক্ষিপ্ত প্রভাবগুলি হ্রাস করতে বিভাজক আগে সর্ব্বতম নির্ভুলতার জন্য বিভাগ জড়িত পূর্ণসংখ্যার গণনায় first

px = dp * dpi / 160
dp = px * 160 / dpi

5 * 120 = 600 / 160 = 3

পরিবর্তে

5 * (120 / 160 = 0) = 0

আপনি যদি গোলাকার ফলাফল চান তবে এটি করুন

px = (10 * dp * dpi / 160 + 5) / 10
dp = (10 * px * 160 / dpi + 5) / 10

10 * 5 * 120 = 6000 / 160 = 37 + 5 = 42 / 10 = 4
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.