Я пытаюсь использовать изображение с SD-карты и установить его как фон для релятивирования. Я пробовал другие решения, которые я нашел здесь и в других местах, но они, похоже, работали на меня. вот мой код. Я прокомментировал другие способы, которые я пробовал и не работал. единственное, что сработало для меня, это использовать setBackgroudnResource и использовать ресурс из приложения, но это было просто для проверки, чтобы mRoot был настроен правильно. когда я пробовал все другие способы, он ничего не устанавливает. Кто-нибудь знает, что я делаю неправильно, или если есть лучший способ сделать это?Создание извлекаемого с SD-карты для установки в качестве фона в android
//one way i tired...
//String extDir = Environment.getExternalStorageDirectory().toString();
//Drawable d = Drawable.createFromPath(extDir + "/pic.png");
//mRoot.setBackgroundDrawable(d);
//another way tried..
//Drawable d = Drawable.createFromPath("/sdcard/pic.png");
//mRoot.setBackgroundDrawable(d);
//last way i tried...
mRoot.setBackgroundDrawable(Drawable.createFromPath(new File(Environment.getExternalStorageDirectory(), "pic.png").getAbsolutePath()));
//worked, only to verify mRoot was setup correctly and it could be changed
//mRoot.setBackgroundResource(R.drawable.bkg);
спасибо за ответ. Я пробовал его ур и его все еще не работал. Я использую подборщик галереи и захват uri с изображения, затем я вызываю вашу функцию и пытаюсь установить возвращаемое растровое изображение на drawable, и оно не работает. когда я проверяю его с помощью getbounds, он возвращает 0 для левого, правого, верхнего и нижнего. любая идея о том, что я делаю неправильно? вот код, который я только что описал: Uri selectedImage = imageReturnedIntent.getData(); Bitmap testimage = readBitmap (selectedImage); \t \t BitmapDrawable bmd2 = new BitmapDrawable (Multimedia.this.getResources(), testimage); \t \t Rect t2 = bmd2.getBounds(); – John
Тестирование находится в памяти и еще не сохранено в ресурсах приложения, что вам может понадобиться, чтобы сохранить его. Таким образом, чтобы получить drawable, это должно сделать: bmd2 = new BitmapDrawable (testimage); Сначала попробуйте небольшое изображение. Правильный способ состоит в том, чтобы передать это растровое изображение методу, который будет масштабировать его для фона и сохранить, прежде чем преобразовать его в drawable. На каждом этапе проверьте, что вы используете с помощью журналов или Toast. Попробуйте это после readBitmap int h = bitmap.GetHeight(); int w = bitmap.getWidth(); и покажите h и w, чтобы увидеть размер. Этот метод работает, я пробовал его на многих устройствах ... – Lumis
ОК, поэтому я проверяю высоту и ширину растрового изображения, и я получаю значения. как я могу сохранить его в ресурсах приложений или сделать это с помощью bitmapdrawable, и для этого требуется больше времени для обработки? – John