Zuerst einmal erwähnt: Ich kenne mich mit Spieleprogrammierung nicht wirklich gut aus, aber ich versuche mal das wiederzugeben, was ich so bisher gesehen hab
Zu 1: Um die FPS zu begrenzen, legst du deinen Thread, in dem dein Gameloop läuft, für eine gewisse Zeit schlafen. Bei 45FPS würden das ca. 20ms sein.
try {
Thread.sleep(20);
} catch (InterruptedException e) { // Exception-Handling }
Zu 2: Diese Loading-Screens sind ja dafür da, um benötigte Bilder, Musik, ect. in den Speicher zu laden, damit dies nicht erst während des spiels gemacht werden muss. Am einfachsten wäre es wohl eine Activity zu erstellen (mit ProgressBar usw.) die einen AsyncTask startet. Dieser lädt alles was benötigt wird und sorgt durch die onPostExecute() (die ja aufgerufen wird, sobald der AsyncTask seine Arbeit erledigt hat, dass die Activity zum eigentlichen Spiel gewechselt wird.
So oder so ähnlich würde ich vorgehen, aber wie gesagt, ich habe nicht viel Erfahrung bei sowas.
block_