add cashing and refresh button

This commit is contained in:
Jan-Lukas Pagel 2017-09-29 15:55:46 +02:00
parent 48d8fdab66
commit 8c393a36ec
8 changed files with 165 additions and 27 deletions

View File

@ -2,6 +2,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="de.tysox.bs_elmshorn">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<application
android:allowBackup="true"

Binary file not shown.

View File

@ -1,7 +1,11 @@
package de.tysox.bs_elmshorn;
import android.graphics.Typeface;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
@ -12,11 +16,18 @@ import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.webkit.WebView;
import android.widget.TextView;
import java.util.Calendar;
public class MainActivity extends AppCompatActivity {
private static MainActivity instance;
private int currentWeek;
/**
* The {@link android.support.v4.view.PagerAdapter} that will provide
@ -39,17 +50,21 @@ public class MainActivity extends AppCompatActivity {
setContentView(R.layout.activity_main);
instance = this;
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
Calendar calendar = Calendar.getInstance();
currentWeek = calendar.get(Calendar.WEEK_OF_YEAR);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
// Create the adapter that will return a fragment for each of the three
// primary sections of the activity.
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
// Set up the ViewPager with the sections adapter.
mViewPager = (ViewPager) findViewById(R.id.container);
mViewPager = findViewById(R.id.container);
mViewPager.setAdapter(mSectionsPagerAdapter);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
TabLayout tabLayout = findViewById(R.id.tabs);
mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager));
@ -62,11 +77,50 @@ public class MainActivity extends AppCompatActivity {
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
final TextView refresh = findViewById(R.id.refresh);
final TextView left = findViewById(R.id.left);
final TextView right = findViewById(R.id.right);
Typeface font = Typeface.createFromAsset(getBaseContext().getAssets(), "font/fontawesome.ttf");
refresh.setTypeface(font);
right.setTypeface(font);
left.setTypeface(font);
refresh.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
WebView webView = findViewById(R.id.timetable);
webView.reload();
}
});
right.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
WebView webView = findViewById(R.id.timetable);
currentWeek++;
webView.loadUrl("http://www.bs-elmshorn.de/Stundenplan/Schueler/" + currentWeek + "/c/c00018.htm");
}
});
left.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
WebView webView = findViewById(R.id.timetable);
currentWeek--;
webView.loadUrl("http://www.bs-elmshorn.de/Stundenplan/Schueler/" + currentWeek + "/c/c00018.htm");
}
});
}
}, 100);
return true;
}
@ -78,10 +132,9 @@ public class MainActivity extends AppCompatActivity {
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
/*if (id == R.id.action_settings) {
return true;
}
}*/
return super.onOptionsItemSelected(item);
}
@ -97,6 +150,9 @@ public class MainActivity extends AppCompatActivity {
@Override
public Fragment getItem(int position) {
final TextView refresh = MainActivity.getInstance().findViewById(R.id.refresh);
final TextView left = MainActivity.getInstance().findViewById(R.id.left);
final TextView right = MainActivity.getInstance().findViewById(R.id.right);
switch (position) {
case 0:
Tab1 tab1 = new Tab1();
@ -119,6 +175,12 @@ public class MainActivity extends AppCompatActivity {
}
}
public boolean isNetworkAvailable() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService( CONNECTIVITY_SERVICE );
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
public static MainActivity getInstance() {
return instance;
}

View File

@ -6,8 +6,10 @@ import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.TextView;
import java.util.Calendar;
@ -26,26 +28,62 @@ public class Tab1 extends Fragment {
View rootView = inflater.inflate(R.layout.tab1, container, false);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
WebView webView= (WebView) MainActivity.getInstance().findViewById(R.id.timetable);
webView.setWebViewClient(new WebViewClient());
webView.getSettings().setAppCacheMaxSize( 5 * 1024 * 1024 ); // 5MB
webView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
webView.getSettings().setAppCachePath( MainActivity.getInstance().getApplicationContext().getCacheDir().getAbsolutePath() );
webView.getSettings().setAllowFileAccess( true );
webView.getSettings().setAppCacheEnabled( true );
webView.getSettings().setJavaScriptEnabled(true);
webView.setVerticalScrollBarEnabled(false);
webView.setHorizontalScrollBarEnabled(false);
webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
if(!MainActivity.getInstance().isNetworkAvailable()) {
webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
}
Calendar calendar = Calendar.getInstance();
currentWeek = calendar.get(Calendar.WEEK_OF_YEAR);
webView.loadUrl("http://www.bs-elmshorn.de/Stundenplan/Schueler/"+currentWeek+"/c/c00018.htm");
// s5 mini 119 opx 170
webView.setInitialScale(119);
// s5 mini 119 opx 170 xperia 113
webView.setInitialScale(170);
}
},100);
},101);
return rootView;
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
final TextView refresh = MainActivity.getInstance().findViewById(R.id.refresh);
final TextView left = MainActivity.getInstance().findViewById(R.id.left);
final TextView right = MainActivity.getInstance().findViewById(R.id.right);
if (isVisibleToUser) {
try {
refresh.setVisibility(View.VISIBLE);
left.setVisibility(View.VISIBLE);
right.setVisibility(View.VISIBLE);
} catch (Exception ex) {
}
} else {
try {
refresh.setVisibility(View.INVISIBLE);
left.setVisibility(View.INVISIBLE);
right.setVisibility(View.INVISIBLE);
} catch (Exception ex) {
}
}
}
}

View File

@ -6,11 +6,10 @@ import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import java.util.Calendar;
/**
* Created by Jan on 16.09.2017.
*/
@ -22,23 +21,30 @@ public class Tab2 extends Fragment {
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.tab2, container, false);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
WebView webView= (WebView) MainActivity.getInstance().findViewById(R.id.vt1);
webView.setWebViewClient(new WebViewClient());
webView.getSettings().setAppCacheMaxSize( 5 * 1024 * 1024 ); // 5MB
webView.getSettings().setAppCachePath( MainActivity.getInstance().getApplicationContext().getCacheDir().getAbsolutePath() );
webView.getSettings().setAllowFileAccess( true );
webView.getSettings().setAppCacheEnabled( true );
webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
webView.getSettings().setJavaScriptEnabled(true);
webView.setVerticalScrollBarEnabled(false);
webView.setHorizontalScrollBarEnabled(false);
if(!MainActivity.getInstance().isNetworkAvailable()) {
webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
}
webView.loadUrl("http://www.bs-elmshorn.de/Stundenplan/DSB/f1/subst_001.htm");
// s5 mini 100 opx 150
webView.setInitialScale(150);
}
},100);
return rootView;
}
}

View File

@ -6,6 +6,7 @@ import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
@ -19,18 +20,28 @@ public class Tab3 extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.tab3, container, false);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
WebView webView= (WebView) MainActivity.getInstance().findViewById(R.id.vt2);
WebView webView= MainActivity.getInstance().findViewById(R.id.vt2);
webView.setWebViewClient(new WebViewClient());
webView.getSettings().setAppCacheMaxSize( 5 * 1024 * 1024 ); // 5MB
webView.getSettings().setAppCachePath( MainActivity.getInstance().getApplicationContext().getCacheDir().getAbsolutePath() );
webView.getSettings().setAllowFileAccess( true );
webView.getSettings().setAppCacheEnabled( true );
webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
webView.getSettings().setJavaScriptEnabled(true);
webView.setVerticalScrollBarEnabled(false);
webView.setHorizontalScrollBarEnabled(false);
if(!MainActivity.getInstance().isNetworkAvailable()) {
webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
}
webView.loadUrl("http://www.bs-elmshorn.de/Stundenplan/DSB/f1/subst_002.htm");
// s5 mini 100 opx 150
webView.setInitialScale(150);

View File

@ -1,10 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="de.tysox.bs_elmshorn.MainActivity">
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:title="@string/action_settings"
app:showAsAction="never" />
</menu>
android:id="@+id/refresh"
android:actionViewClass="android.widget.TextView"
android:title="@string/fa_refresh"
app:showAsAction="always"
/>
<item
android:id="@+id/left"
android:actionViewClass="android.widget.TextView"
android:title="@string/fa_left"
app:showAsAction="always"
/>
<item
android:id="@+id/right"
android:actionViewClass="android.widget.TextView"
android:title="@string/fa_right"
app:showAsAction="always" />
</menu>

View File

@ -4,4 +4,7 @@
<string name="tab_text_2">Vertretung 1</string>
<string name="tab_text_3">Vertretung 2</string>
<string name="action_settings">Settings</string>
<string name="fa_refresh">&#xf021;</string>
<string name="fa_left">&#xf060;</string>
<string name="fa_right">&#xf061;</string>
</resources>