Я не уверен в хорошем способе решить ваш первый вопрос (я не верю, что вы можете контролировать, какие страницы загружаются и в каком порядке), но у меня есть кое-что, что может помочь для вашего второго:
Вот пример созданного мною представления, которое загружается в каждый вид моего ViewPager:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center">
<LinearLayout
android:id="@+id/loading_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ProgressBar
style="@style/GenericProgressIndicator"/>
<TextView
android:id="@+id/loading_message_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/loading_message_text"/>
</LinearLayout>
<WebView
android:id="@+id/webview"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:fadingEdge="vertical"
android:visibility="gone"
/>
</RelativeLayout>
Есть два элемента, вложенных в RelativeLayout: LinearLayout, который представляет мое загрузочное сообщение (включая ProgressBar и TextView) и WebView, который будет содержать мое содержимое после его загрузки. Первоначально для WebView было установлено значение GONE, чтобы полностью скрыть его. В коде я раздуваю представление и запускаю AsyncTask для загрузки моих данных. Как только данные загружены, я установил видимость LinearLayout на GONE, а видимость WebView на VISIBLE.
onPostExecute в моем AsyncTask - после загрузки данных скрыть сообщение о загрузке и показать данные
protected void onPostExecute(Void v)
{
LinearLayout loadingMessage = (LinearLayout)articleLayout.findViewById(R.loading_message);
WebView articleContent = (WebView)articleLayout.findViewById(R.id.webview);
[...]
loadingMessage.setVisibility(View.GONE);
articleContent.setVisibility(View.VISIBLE);
}