Skip to content

Commit 4d44d05

Browse files
committed
Merge pull request #157 from pennlabs/transit-loading-icon
Added loading indicator to transit
2 parents 90aa24e + fa457ca commit 4d44d05

2 files changed

Lines changed: 50 additions & 9 deletions

File tree

PennMobile/src/main/java/com/pennapps/labs/pennmobile/TransitFragment.java

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,22 @@
88
import android.view.MenuItem;
99
import android.view.View;
1010
import android.view.ViewGroup;
11+
import android.view.WindowManager;
1112
import android.view.inputmethod.InputMethodManager;
1213
import android.webkit.WebChromeClient;
1314
import android.webkit.WebSettings;
1415
import android.webkit.WebView;
1516
import android.webkit.WebViewClient;
17+
import android.widget.LinearLayout;
18+
import android.widget.ProgressBar;
19+
import android.widget.RelativeLayout;
1620

1721
public class TransitFragment extends Fragment {
1822

1923
WebView mWebView;
2024
private boolean mIsWebViewAvailable;
25+
private View mView;
26+
private RelativeLayout Pbar;
2127

2228
public TransitFragment() {
2329
super();
@@ -27,6 +33,11 @@ public TransitFragment() {
2733
public void onCreate(Bundle savedInstanceState) {
2834
super.onCreate(savedInstanceState);
2935

36+
mWebView = new WebView(getActivity());
37+
getActivity().getWindow().setFlags(
38+
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
39+
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
40+
3041
InputMethodManager inputManager = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
3142

3243
View view = getActivity().getCurrentFocus();
@@ -37,11 +48,12 @@ public void onCreate(Bundle savedInstanceState) {
3748

3849
@Override
3950
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
40-
if (mWebView != null) {
41-
mWebView.destroy();
42-
}
51+
mView = inflater.inflate(R.layout.fragment_transit, container, false);
52+
53+
Pbar = (RelativeLayout) mView.findViewById(R.id.loadingPanel);
54+
4355
mIsWebViewAvailable = true;
44-
mWebView = new WebView(getActivity());
56+
mWebView = (WebView) mView.findViewById(R.id.transitWebView);
4557
mWebView.setOnKeyListener(new View.OnKeyListener() {
4658
@Override
4759
public boolean onKey(View v, int keyCode, KeyEvent event) {
@@ -54,11 +66,26 @@ public boolean onKey(View v, int keyCode, KeyEvent event) {
5466
});
5567
WebSettings webSettings = mWebView.getSettings();
5668
webSettings.setJavaScriptEnabled(true);
57-
mWebView.setWebChromeClient(new WebChromeClient());
69+
mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
70+
mWebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
71+
mWebView.setWebChromeClient(new WebChromeClient() {
72+
@Override
73+
public void onProgressChanged(WebView view, int progress)
74+
{
75+
if(progress >= 90) {
76+
ViewGroup parentWebView = (ViewGroup) mWebView.getParent();
77+
if (parentWebView != null) {
78+
parentWebView.removeView(mWebView);
79+
}
80+
Pbar.setVisibility(View.GONE);
81+
((LinearLayout) mView).addView(mWebView);
82+
}
83+
}
84+
});
5885
mWebView.setWebViewClient(new InnerWebViewClient()); // forces it to open in app
5986
String mUrl = "http://www.pennrides.com/map?showHeader=0&route=229,230&silent_disable_timeout=1";
6087
mWebView.loadUrl(mUrl);
61-
return mWebView;
88+
return mView;
6289
}
6390

6491
/* To ensure links open within the application */

PennMobile/src/main/res/layout/fragment_transit.xml

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,23 @@
33
android:layout_height="match_parent"
44
android:orientation="vertical" >
55

6-
<ListView
7-
android:id="@android:id/list"
6+
7+
<RelativeLayout
8+
android:id="@+id/loadingPanel"
9+
android:layout_width="match_parent"
10+
android:layout_height="match_parent"
11+
android:gravity="center" >
12+
13+
<ProgressBar
14+
android:layout_width="wrap_content"
15+
android:layout_height="wrap_content"
16+
android:indeterminate="true" />
17+
</RelativeLayout>
18+
19+
20+
<WebView
21+
android:id="@+id/transitWebView"
822
android:layout_width="match_parent"
9-
android:layout_height="match_parent" />
23+
android:layout_height="match_parent"/>
1024

1125
</LinearLayout>

0 commit comments

Comments
 (0)