$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams){
if (toState.name == 'state.with.resolve') {
$scope.showSpinner(); //this is a function you created to show the loading animation
}
})
When you controller finally gets called, you can hide the spinner
You also might want to check for any errors that may have occurred during resolve by listening to the $stateChangeError event and hiding the animation while you handle the error.
This is not totally clean as you distribute the logic for the spinner between controllers, but it's a way. Hope it helps.