Как я могу назначить изображение в папке mdpi для ImageView в Xamarin? - PullRequest
0 голосов
/ 26 сентября 2019

Как я могу назначить изображение для ImageView в Xamarin?

Чтобы сделать это до того, как я сделал, было добавить изображения в «рисовать» и из режима дизайна (Designing Layout) я выбираю изображение вполе "src", оставляя что-то вроде этого:

src |@ drawable / splashlogo

и если я хотел сделать это из кода во время выполнения, я просто положил:

var drawableImage = Resources.GetDrawable (Resources.GetIdentifier ("splashlogo", "drawable", PackageName));
ProfileIcon.Background = (drawableImage);

Проблема с этим методом заключается в том, чтоУ меня начались проблемы с использованием памяти, потому что разрешение изображений было очень высоким, и теперь, когда я использую папки, предназначенные для каждой плотности экрана (mdpi, hdpi, xhdpi ...), я не знаю, как назначать изображения ни ввремя выполнения, ни в дизайне макета.

Может кто-нибудь сказать мне, как это сделать, пожалуйста?

Ответы [ 2 ]

1 голос
/ 27 сентября 2019

Как сказал Чизебарон, Android автоматически выберет правильное изображение на основе плотности отображения из ваших папок mdpi, hdpi, xhdpi. Если вы хотите установить изображение вашего mipmap в своем коде позади, вы можете попробовать это:

ProfileIcon.SetImageResource(Resource.Mipmap.splashlogo);

или

var drawableImage = Resources.GetDrawable(Resources.GetIdentifier("splashlogo", "mipmap", PackageName));
ProfileIcon.SetImageDrawable(drawableImage);
0 голосов
/ 26 сентября 2019

Ничего не должно измениться.Android автоматически выберет правильное изображение в зависимости от плотности отображения.

Также при назначении изображения из кода, а не в макете.Попробуйте просто передать Resource Id в ImageView, вместо того, чтобы сначала загружать прорисовку в память, а затем передать ее в ImageView.Это можно просто сделать следующим образом:

ProfileIcon.SetImageResource(Resource.Drawable.splashlogo);

В противном случае, если вы настаиваете сначала загрузить его из ресурсов, я настоятельно рекомендую вам поместить его в оператор using для удаления управляемой стороны:

using(var drawableImage = Resources.GetDrawable(Resources.GetIdentifier ("splashlogo", "drawable", PackageName)))
    ProfileIcon.Background = (drawableImage);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...