Adding a theme suggestion programatically
A module that implements hook_preprocess_page() or hook_preprocess_node() can suggest new template files by altering the variable $variables['theme_hook_suggestions'].

The code contained in template_preprocess_page() that initialize that variable is the following.

// Populate the page template suggestions.
if ($suggestions = theme_get_suggestions(arg(), 'page')) {
  $variables['theme_hook_suggestions'] = $suggestions;
}


Each theme suggestion needs to match with an entry returned by hook_theme().

In Views, there should be an equivalent preprocess function to use in the similar way, or a way that allows to hook_preprocess_page() that allows to the function to understand if the page is associated with a view.