Я начинал учить Java с книги HeadFirst "Изучаем Java". В ней хорошо дается понимание основ ООП, естественно самого языка Java, и все это подкрепляется интересными примерами. После этой книги нужно побольше практики, гуглить задачки. Также, в коллекции HeadFirst есть замечательная книга по "Паттерны проектирования", читал ее для тренировки ООП мышления, ну и для изучения самих паттернов. Для андроида сам искал материал, тоже планирую изучать, нашел вот этот ресурс
developer.alexanderklimov.ru/android/index.php
Правда, сам еще его не разглядывал, но, на первый взгляд, материал излагается понятным языком.