import android.app.Activity;
import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.widget.SwipeRefreshLayout;
+import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.util.Patterns;
import android.view.KeyEvent;
static WebView mainWebView;
static ProgressBar progressBar;
static SwipeRefreshLayout swipeToRefresh;
+ static EditText urlTextBox;
static final String homepage = "https://www.duckduckgo.com";
@Override
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_webview);
- final EditText urlTextBox = (EditText) findViewById(R.id.urlTextBox);
+ urlTextBox = (EditText) findViewById(R.id.urlTextBox);
swipeToRefresh = (SwipeRefreshLayout) findViewById(R.id.swipeRefreshLayoutContainer);
mainWebView = (WebView) findViewById(R.id.mainWebView);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
+ final ActionBar actionBar = getSupportActionBar();
+ if (actionBar != null) {
+ actionBar.setDisplayShowTitleEnabled(false);
+ // actionBar.setHideOnContentScrollEnabled(true);
+ }
+
// Implement swipe down to refresh.
swipeToRefresh.setColorSchemeColors(0xFF0097FF);
swipeToRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
progressBar.setVisibility(View.VISIBLE);
} else {
progressBar.setVisibility(View.GONE);
+
// Stop the refreshing indicator if it is running.
swipeToRefresh.setRefreshing(false);
+
+ // Update the URL in urlTextBox. It is necessary to do this after the page finishes loading to get the final URL, which can change during load.
+ formattedUrlString = mainWebView.getUrl();
+ urlTextBox.setText(formattedUrlString);
+
+ // Set the favorite icon
+ Bitmap favoriteIconBitmap = mainWebView.getFavicon();
+ Drawable favoriteIconDrawable = new BitmapDrawable(getResources(), favoriteIconBitmap);
+ // TODO Display the favorite icon.
}
}
});
@Override
public boolean onOptionsItemSelected(MenuItem menuItem) {
int menuItemId = menuItem.getItemId();
- final WebView mainWebView = (WebView) findViewById(R.id.mainWebView);
// Sets the commands that relate to the menu entries.
switch (menuItemId) {
case R.id.home:
- mainWebView.loadUrl(homepage);
+ formattedUrlString = homepage;
+ urlTextBox.setText(formattedUrlString);
+ mainWebView.loadUrl(formattedUrlString);
break;
+
case R.id.back:
mainWebView.goBack();
+
+ // Update the URL in urlTextBox with the URL we are intending to load. Because this can be altered during load, the final URL is loaded after the progress bar reaches 100%
+ formattedUrlString = mainWebView.getOriginalUrl();
+ urlTextBox.setText(formattedUrlString);
break;
+
case R.id.forward:
mainWebView.goForward();
+
+ // Update the URL in urlTextBox with the URL we are intending to load. Because this can be altered during load, the final URL is loaded after the progress bar reaches 100%
+ formattedUrlString = mainWebView.getOriginalUrl();
+ urlTextBox.setText(formattedUrlString);
break;
}
public void onBackPressed() {
if (mainWebView.canGoBack()) {
mainWebView.goBack();
+
+ // Update the URL in urlTextBox with the URL we are intending to load. Because this can be altered during load, the final URL is loaded after the progress bar reaches 100%
+ formattedUrlString = mainWebView.getOriginalUrl();
+ urlTextBox.setText(formattedUrlString);
} else {
super.onBackPressed();
}
public void loadUrlFromTextBox(View view) throws UnsupportedEncodingException {
// Get the text from urlTextInput and convert it to a string.
- final EditText urlTextBox = (EditText) findViewById(R.id.urlTextBox);
- final WebView mainWebView = (WebView) findViewById(R.id.mainWebView);
String unformattedUrlString = urlTextBox.getText().toString();
URL unformattedUrl = null;
Uri.Builder formattedUri = new Uri.Builder();