سؤال

أرغب في عرض ملف JPEG 480 × 320 تم تخزينه في بطاقة SD في Android 2.0.1 مع الجلد WVGA854 و 240 LCD (Motorola Droid).

ومع ذلك ، عندما أقوم بإنشاء bitmapdrawable من خلال drawable.createfrompath () ، فإن BitmapDrawable الناتجة لديه القيم التالية:

mbitmapwidth = 320

mbitmapheight = 213

MTARGETDNY = 160

يتضمن البيان التكوين التالي:

<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="4" />
<supports-screens 
    android:largeScreens="true"
    android:normalScreens="true"
    android:smallScreens="true"
 anyDensity="true"
/>

يبدو أن Android يقوم بتغيير حجم النقط. ماذا يمكن أن يكون سبب هذا السلوك؟ كيف يمكنني تجنب ذلك؟

شكرا لكم مقدما.

هل كانت مفيدة؟

المحلول

Drawable.CreateFropMath () هي طريقة الراحة التي تستخدم BitmapFactory في تنفيذها. يبدو أنه نظرًا لأن API من المستوى 4 Android يقوم تلقائيًا بتنشيط جميع قوالب Bitmap وغيرها من الموارد.

للحصول على الحجم الأصلي لنقطات النقطة ، قد يحتاج المرء إلى إلقاء السحب في رسم نقطي قابل للاستخدام واستخدام bitmapdrawable.gebitmap (). getWidth () و bitmapdrawable.gebitmap ().

قد يكون البديل هو استخدام BitmapFactory مباشرةً وإيقاف عملية إعادة التخلص من bitmapfactory.options.inscaled. هذه الخاصية متوفرة فقط منذ API المستوى 4 ، لذلك إذا كنت ترغب في استهداف أجهزة API المستوى 3 ، فقد ترغب في استخدام التأمل للتحقق من وجودها.

ما زلت لا أفهم لماذا هناك حاجة إلى مثل هذا التحويل لصور بطاقة SD وكيف يفيد المبرمجين هذا بأي شكل من الأشكال. نعم ، تصبح منطقة 320 × 21 في 160 كثافة (تقريبًا) مساحة 480 × 320 بكثافة 240 ، لكن ألا يكون الأمر أكثر منطقية إذا كانت قابلة للرسمية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top