ذكري المظهر.الحصول على حجم الصورة من معرف المورد الخاص بها
-
11-12-2019 - |
سؤال
هذا جزء من نشاطي:
private ImageView mImageView;
private int resource;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
resource = getIntent().getIntExtra("res", -1);
Matrix initMatrix = new Matrix();
mImageView = new ImageView(getApplicationContext());
mImageView.setScaleType( ImageView.ScaleType.MATRIX );
mImageView.setImageMatrix( initMatrix );
mImageView.setBackgroundColor(0);
mImageView.setImageResource(resource);
}
أحاول عرض صورة داخل ImageView باستخدام مصفوفة كنوع مقياس (أريد إضافة اللمس المتعدد لاحقًا).ولكن قبل أن يبدأ المستخدم بالتفاعل، أريد أن يتم توسيط الصورة وملاءمتها داخل ImageView.لقد وجدت بالفعل إجابات بخصوص كيفية حلها ولكن هناك مشكلة واحدة بالنسبة لي:لجعل الصورة مركزية باستخدام المصفوفة، أحتاج إلى معرفة عرضها وارتفاعها.هل هناك أي طريقة للحصول على حجم الصورة عندما يكون كل ما لديك هو الموارد كثافة العمليات ?
المحلول
يستخدم BitmapFactory.decodeResource للحصول على كائن نقطي للمورد، ومن ثم من الصورة النقطية يمكنك بسهولة استرداد عرض/ارتفاع الصورة باستخدام getHeight و getWidth
أيضا لا تنسى أن إعادة التدوير الصورة النقطية الخاصة بك
يحرر:
بهذه الطريقة سوف تحصل على null
الصورة النقطية كإخراج، ولكن سيتم تعيين BitmapFactory.Options مع الارتفاع للصورة النقطية.لذلك، في هذه الحالة، لا تحتاج إلى إعادة تدوير الصورة النقطية
BitmapFactory.Options dimensions = new BitmapFactory.Options();
dimensions.inJustDecodeBounds = true;
Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bitmap, dimensions);
int height = dimensions.outHeight;
int width = dimensions.outWidth;
نصائح أخرى
لمن لم يقرأ تعليق dmon.يبدو الكود للقيام بذلك كما يلي:
final Options opt = new BitmapFactory.Options();
opt.inJustDecodeBounds = true;
BitmapFactory.decodeResource(getResources(), R.drawable.your_photo, opt);
opt.outHeight; // height of resource
opt.outWidth; // width of resource