Можно ли отдельно написать программную часть на java и отдельно «верстку» на Android?
Можно слушать кучу советов, как удобнее превратить явовский фреймворк в функциональное программирование под виндовс, но лучше этого не делать.
Ваши рассуждения очень правильны и верны: бизнеслогика любого приложения должна быть отделена от дизайна. Тогда любое изменение в дизайне не приведет к изменениям в бизнеслогике. Тем более в Java это делается не просто, а очень просто.
Создаете классы с бинеслогикой, можете как опцию добавлять тестюниты для проверки нормального функционирования этой логики. Отладку можно вести даже в консоли. После этого можете к созданным объектам цеплять любые графические изыскания.
На Android отлично ложится MVP. Разделите все на отображения (showProgress, showContent и т.д.), представления(связь с интерфейсом, бизнес логика) и модели.
Отображение опишите в виде интерфейса, который потом подключите к реальному интерфейсу, а представления и модель можете описать и тестировать без интерфейса.
antonioleiva.com/mvp-android