Android:尝试设置为ImageView时,联系人照片会像素化

时间:2015-11-18 06:04:57

标签: android performance android-layout android-contentprovider android-contacts

我试图获取手机通讯录图片并设置为ImageView。我得到的图像,但当我尝试将图像设置为ImageView时,它是像素化的。

获取图片的代码

    String select = "(" + ContactsContract.Contacts.DISPLAY_NAME + " == \"" + name + "\" )";
        Cursor c = getApplicationContext().getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, CONTACTS_SUMMARY_PROJECTION, select, null, ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC");
        startManagingCursor(c);

        if (c.moveToNext()) {
             idValue = c.getString(0);
        InputStream inputStream = ContactsContract.Contacts.openContactPhotoInputStream(getApplicationContext().getContentResolver(),
                            ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, new Long(idValue)));

  if (inputStream != null) {
      photo = BitmapFactory.decodeStream(inputStream);
      contact_image.setImageBitmap(photo);
     }
   } 

我想显示联系人的详细信息,因为我尝试按名称获取联系人ID。

Layout.xml

<ImageView
            android:id="@+id/contact_image"
            android:layout_width="fill_parent"
            android:layout_height="match_parent"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:scaleType="centerCrop"
            android:src="@drawable/un_known_avtar" />

enter image description here 我通过xml尝试几乎所有比例类型。但是联系人的图像仍然被拉伸了。

任何人都可以帮助避免拉伸联系人图像

1 个答案:

答案 0 :(得分:2)

尝试在#section_2末尾添加 true 布尔值以获得高分辨率(NEEDS API等级14或更高)

openContactPhotoInputStream

来源:Large Photo Version from contacts in android