Для установки фона:
RelativeLayout layout =(RelativeLayout)findViewById(R.id.background);
layout.setBackgroundResource(R.drawable.ready);
Это лучший способ сделать это?
RelativeLayout layout =(RelativeLayout)findViewById(R.id.background);
layout.setBackgroundResource(R.drawable.ready);
Это лучший способ сделать это?
 layout.setBackgroundResource(R.drawable.ready); верно. 
 Другой способ добиться этого - использовать следующее:
final int sdk = android.os.Build.VERSION.SDK_INT;
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
    layout.setBackgroundDrawable(ContextCompat.getDrawable(context, R.drawable.ready) );
} else {
    layout.setBackground(ContextCompat.getDrawable(context, R.drawable.ready));
}
 Но я думаю, что проблема возникает, потому что вы пытаетесь загрузить большие изображения. 
Вот хороший урок, как загружать большие растровые изображения. 
 ОБНОВИТЬ:  
 getDrawable (int) устарел на уровне API 22 getDrawable(int ) теперь устарела на уровне API 22. Вместо этого следует использовать следующий код из библиотеки поддержки:
ContextCompat.getDrawable(context, R.drawable.ready)
Если вы ссылаетесь на исходный код ContextCompat.getDrawable, он дает вам что-то вроде этого:
/**
 * Return a drawable object associated with a particular resource ID.
 * <p>
 * Starting in {@link android.os.Build.VERSION_CODES#LOLLIPOP}, the returned
 * drawable will be styled for the specified Context theme.
 *
 * @param id The desired resource identifier, as generated by the aapt tool.
 *            This integer encodes the package, type, and resource entry.
 *            The value 0 is an invalid identifier.
 * @return Drawable An object that can be used to draw this resource.
 */
public static final Drawable getDrawable(Context context, int id) {
    final int version = Build.VERSION.SDK_INT;
    if (version >= 21) {
        return ContextCompatApi21.getDrawable(context, id);
    } else {
        return context.getResources().getDrawable(id);
    }
}
 Подробнее о ContextCompat 
 Начиная с API 22, вы должны использовать метод getDrawable(int, Theme) вместо getDrawable (int).
 ОБНОВИТЬ: 
 Если вы используете библиотеку поддержки v4, следующего будет достаточно для всех версий.
ContextCompat.getDrawable(context, R.drawable.ready)
Вам нужно будет добавить следующее в ваше приложение build.gradle
compile 'com.android.support:support-v4:23.0.0' # or any version above
Или используя ResourceCompat, в любом API, как показано ниже:
import android.support.v4.content.res.ResourcesCompat;
ResourcesCompat.getDrawable(getResources(), R.drawable.name_of_drawable, null);
Попробуйте следующее:
layout.setBackground(ContextCompat.getDrawable(context, R.drawable.ready));
и для API 16 <:
layout.setBackgroundDrawable(ContextCompat.getDrawable(context, R.drawable.ready));
RelativeLayout relativeLayout;  //declare this globally
теперь, внутри любой функции, такой как onCreate, onResume
relativeLayout = new RelativeLayout(this);  
relativeLayout.setBackgroundResource(R.drawable.view); //or whatever your image is
setContentView(relativeLayout); //you might be forgetting this
Вы также можете установить фон любого изображения:
View v;
Drawable image=(Drawable)getResources().getDrawable(R.drawable.img);
(ImageView)v.setBackground(image);
Если ваши фоны находятся в папке с возможностью рисования прямо сейчас, попробуйте переместить изображения из drawable в папку drawable-nodpi в вашем проекте. Это сработало для меня, кажется, что иначе изображения будут перемасштабированы ими самими.
 Я использую minSdkVersion 16 и targetSdkVersion 23. 
 Следующее работает для меня, оно использует
ContextCompat.getDrawable(context, R.drawable.drawable);
Вместо того, чтобы использовать:
layout.setBackgroundResource(R.drawable.ready);
Скорее используйте:
layout.setBackground(ContextCompat.getDrawable(this, R.drawable.ready));
 getActivity() используется в фрагменте, при звонке из деятельности использовать this.
Используйте butterknife, чтобы привязать ресурс, который можно использовать, к переменной, добавив это в начало вашего класса (перед любыми методами).
@Bind(R.id.some_layout)
RelativeLayout layout;
@BindDrawable(R.drawable.some_drawable)
Drawable background;
затем внутри одного из ваших методов добавьте
layout.setBackground(background);
Что вам нужно
if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN)
     layout.setBackgroundDrawable(getResources().getDrawable(R.drawable.ready));
else if(android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP_MR1)
     layout.setBackground(getResources().getDrawable(R.drawable.ready));
else
     layout.setBackground(ContextCompat.getDrawable(this, R.drawable.ready));
Попробуйте ViewCompat.setBackground(yourView, drawableBackground)
Попробуйте этот код:
Drawable thumb = ContextCompat.getDrawable(getActivity(), R.mipmap.cir_32);
mSeekBar.setThumb(thumb);
попробуй это.
 int res = getResources().getIdentifier("you_image", "drawable", "com.my.package");
 preview = (ImageView) findViewById(R.id.preview);
 preview.setBackgroundResource(res);
Внутри приложения /res/ your_xml_layout_file.xml