diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/DownloadActivity.java b/app/src/main/java/de/apps4ics/mountainnavigation/DownloadActivity.java index 741c991..76f498c 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/DownloadActivity.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/DownloadActivity.java @@ -56,7 +56,6 @@ private SeekBar dayPicker; private TextView dayDisplay; private EditText customLocationInput; - private Button startDownload; private int nrOfForecastDays; private String currentSelected; private boolean customLocationFound; @@ -142,7 +141,7 @@ } }); - startDownload = (Button) findViewById(R.id.download_start); + Button startDownload = (Button) findViewById(R.id.download_start); startDownload.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/ExpandableListAdapter.java b/app/src/main/java/de/apps4ics/mountainnavigation/ExpandableListAdapter.java index 3ef2b5c..9faa383 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/ExpandableListAdapter.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/ExpandableListAdapter.java @@ -22,12 +22,14 @@ package de.apps4ics.mountainnavigation; import android.content.Context; +import android.graphics.Bitmap; import android.graphics.PorterDuff; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseExpandableListAdapter; -import android.widget.ImageView; import android.widget.TextView; import java.util.HashMap; @@ -104,11 +106,15 @@ if(getChildrenCount(groupPosition) > 0) convertView = inflater.inflate(R.layout.drawer_list_item, null); else return null; } - ImageView childImg = (ImageView) convertView.findViewById(R.id.toggleEntryImg); TextView listChild = (TextView) convertView.findViewById(R.id.toggleEntryDesc); listChild.setText((String) getChild(groupPosition, childPosition)); - childImg.setImageResource((Integer) getChildImg(groupPosition, childPosition)); - childImg.setColorFilter(context.getResources().getColor(R.color.icon_unselected_gray), PorterDuff.Mode.DST_OUT); + Drawable d = context.getResources().getDrawable((Integer) getChildImg(groupPosition, childPosition), null); + if(d != null) { + int dp = (int) MainActivity.getRes().getDimension(R.dimen.drawer_toggle_image_size); + d = new BitmapDrawable(MainActivity.getRes(), Bitmap.createScaledBitmap(((BitmapDrawable) d).getBitmap(), dp, dp, true)); + d.setColorFilter(context.getResources().getColor(R.color.icon_unselected_gray), PorterDuff.Mode.DST_OUT); + } + listChild.setCompoundDrawablesWithIntrinsicBounds(d, null, null, null); return convertView; } diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/LocationService.java b/app/src/main/java/de/apps4ics/mountainnavigation/LocationService.java index 6a733e9..d939c46 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/LocationService.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/LocationService.java @@ -44,7 +44,6 @@ private static final int GPS_MIN_TIME = 5000; private static final int GPS_MIN_DIST = 10; private GoogleApiClient mGoogleApiClient; - private LocationRequest mLocationRequest; private LocationUpdateCallback locationCallback; private final IBinder binder = new MyBinder(); @@ -80,7 +79,7 @@ @Override public void onConnected(@Nullable Bundle bundle) { - mLocationRequest = LocationRequest.create(); + LocationRequest mLocationRequest = LocationRequest.create(); mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); mLocationRequest.setInterval(GPS_MIN_TIME); mLocationRequest.setSmallestDisplacement(GPS_MIN_DIST); diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java b/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java index c103b23..88bfee7 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java @@ -215,6 +215,7 @@ df_full = new SimpleDateFormat(res.getString(R.string.date_format_full), Locale.getDefault()); RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.container); + if(relativeLayout == null) System.exit(0); ZOOM_LEVEL = 18; mapView = new MapView(getApplicationContext()); @@ -317,8 +318,7 @@ poiView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() { @Override public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { - LinearLayout layout = (LinearLayout) v; - toggleDrawerItems(layout, childPosition); + toggleDrawerItems((LinearLayout) v, childPosition); return false; } }); @@ -619,14 +619,12 @@ } private void toggleDrawerItems(LinearLayout layout, int position){ - LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); - inflater.inflate(R.layout.drawer_list_item, null); TextView tv = (TextView) layout.findViewById(R.id.toggleEntryDesc); - ImageView iv = (ImageView) layout.findViewById(R.id.toggleEntryImg); int type = getType(position); - if(iv.getTag() == null || iv.getTag() == "disabled"){ - iv.setColorFilter(null); - iv.setTag(""); + Drawable[] drawables = tv.getCompoundDrawables(); + if(tv.getTag() == null || tv.getTag() == "disabled"){ + drawables[0].setColorFilter(null); + tv.setTag(""); tv.setTextColor(res.getColor(R.color.text_color_selected)); String title = PoiHandler.getEntries()[position]; if(title.equals(getString(R.string.toggle_entry_biota))) { @@ -668,13 +666,17 @@ mapView.invalidate(); } } else { - iv.setColorFilter(res.getColor(R.color.icon_unselected_gray), PorterDuff.Mode.DST_OUT); - iv.setTag("disabled"); + drawables[0].setColorFilter(res.getColor(R.color.icon_unselected_gray), PorterDuff.Mode.DST_OUT); + tv.setTag("disabled"); tv.setTextColor(res.getColor(R.color.text_color)); Toaster("You disabled " + PoiHandler.getEntries()[position]); poiHandler.disablePois(type); mapView.invalidate(); } + //int dp = (int) res.getDimension(R.dimen.drawer_toggle_image_size); + //drawables[0] = new BitmapDrawable(res, Bitmap.createScaledBitmap(((BitmapDrawable) drawables[0]).getBitmap(), dp, dp, true)); + //Log.d(MainActivity.TAG, ((BitmapDrawable) drawables[0]).getBitmap().getHeight() + ", " + ((BitmapDrawable) drawables[0]).getBitmap().getWidth()); + tv.setCompoundDrawablesWithIntrinsicBounds(drawables[0], drawables[1], drawables[2], drawables[3]); } public static SharedPreferences getSharedPrefs() { return sharedPrefs; } @@ -935,8 +937,7 @@ seconds %= 3600; int minutes = seconds / 60; seconds %= 60; - String s = String.format(Locale.getDefault(), "%02d:%02d:%02d", hours, minutes, seconds); - return s; + return String.format(Locale.getDefault(), "%02d:%02d:%02d", hours, minutes, seconds); } @Override diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/adapters/ImageListAdapter.java b/app/src/main/java/de/apps4ics/mountainnavigation/adapters/ImageListAdapter.java index aed81c8..394fbf4 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/adapters/ImageListAdapter.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/adapters/ImageListAdapter.java @@ -22,14 +22,17 @@ package de.apps4ics.mountainnavigation.adapters; import android.app.Activity; +import android.graphics.Bitmap; import android.graphics.PorterDuff; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; -import android.widget.ImageView; import android.widget.TextView; +import de.apps4ics.mountainnavigation.MainActivity; import de.apps4ics.mountainnavigation.R; public class ImageListAdapter extends ArrayAdapter { @@ -48,16 +51,33 @@ } @Override - public View getView(int position, View view, ViewGroup parent) { - LayoutInflater inflater = context.getLayoutInflater(); - View rowView= inflater.inflate(R.layout.drawer_list_item, null, true); - TextView txtTitle = (TextView) rowView.findViewById(R.id.toggleEntryDesc); + public View getView(int position, View convertView, ViewGroup parent) { + final ViewHolder holder; - ImageView imageView = (ImageView) rowView.findViewById(R.id.toggleEntryImg); - txtTitle.setText(texts[position]); + if(convertView == null){ + LayoutInflater inflater = context.getLayoutInflater(); + convertView = inflater.inflate(R.layout.drawer_list_item, null); + holder = new ViewHolder(); + holder.textView = (TextView) convertView.findViewById(R.id.toggleEntryDesc); + convertView.setTag(holder); + } else { + holder = (ViewHolder) convertView.getTag(); + } - imageView.setImageResource(imgs[position]); - if(!selected) imageView.setColorFilter(context.getResources().getColor(R.color.icon_unselected_gray), PorterDuff.Mode.DST_OUT); - return rowView; + holder.textView.setText(texts[position]); + + Drawable d = MainActivity.getRes().getDrawable(imgs[position], null); + if(d != null) { + int dp = (int) MainActivity.getRes().getDimension(R.dimen.drawer_toggle_image_size); + d = new BitmapDrawable(MainActivity.getRes(), Bitmap.createScaledBitmap(((BitmapDrawable) d).getBitmap(), dp, dp, true)); + if(!selected) d.setColorFilter(context.getResources().getColor(R.color.icon_unselected_gray), PorterDuff.Mode.DST_OUT); + } + holder.textView.setCompoundDrawablesWithIntrinsicBounds(d, null, null, null); + + return convertView; + } + + private static class ViewHolder { + public TextView textView; } } diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/handlers/DatabaseHandler.java b/app/src/main/java/de/apps4ics/mountainnavigation/handlers/DatabaseHandler.java index 7f4c986..201cb19 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/handlers/DatabaseHandler.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/handlers/DatabaseHandler.java @@ -682,6 +682,7 @@ do { images.add(getEndangeredFromCursor(cursor)); } while(cursor.moveToNext()); + cursor.close(); } return images; } @@ -840,8 +841,8 @@ null); if(poiCursor != null && poiCursor.getCount() > 0 && poiCursor.moveToFirst()) { poisAround.add(getPoiFromCursor(poiCursor, dbgp.get_poiType())); + poiCursor.close(); } - poiCursor.close(); } while(cursor.moveToNext()); cursor.close(); } diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/handlers/PoiHandler.java b/app/src/main/java/de/apps4ics/mountainnavigation/handlers/PoiHandler.java index e739c5c..4f021e4 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/handlers/PoiHandler.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/handlers/PoiHandler.java @@ -58,7 +58,6 @@ import org.osmdroid.tileprovider.tilesource.TileSourceFactory; import org.osmdroid.util.GeoPoint; import org.osmdroid.views.MapView; -import org.osmdroid.views.overlay.Overlay; import org.osmdroid.views.overlay.OverlayItem; import java.io.ByteArrayOutputStream; @@ -125,6 +124,7 @@ private static Integer[] fountainImgs; private static String[] entries; private static Integer[] entryImgs; + private static Drawable[] entryDrawables; public PoiHandler(Context context, Resources res, MapView mapView) { poiMarkers = new ArrayList[Types.SIZE]; @@ -185,6 +185,19 @@ R.mipmap.cable_car, R.drawable.ic_potted_plant_96 }; + entryDrawables = new Drawable[]{ + res.getDrawable(entryImgs[0], null), + res.getDrawable(entryImgs[1], null), + res.getDrawable(entryImgs[2], null), + res.getDrawable(entryImgs[3], null), + res.getDrawable(entryImgs[4], null), + res.getDrawable(entryImgs[5], null), + res.getDrawable(entryImgs[6], null), + res.getDrawable(entryImgs[7], null), + res.getDrawable(entryImgs[8], null), + res.getDrawable(entryImgs[9], null), + res.getDrawable(entryImgs[10], null) + }; } public Context getContext() { @@ -336,8 +349,7 @@ public void disablePois(int type) { for(int i=0; i(); } @@ -385,7 +397,9 @@ List poiMarker = dbHandler.getAllPois(); for(Poi p : poiMarker){ - DbGeoPoint dbgp = dbHandler.getGeoPointsForPoi(p.getId(), p.getType()).get(0); + List points = dbHandler.getGeoPointsForPoi(p.getId(), p.getType()); + if(points.size() == 0) continue; + DbGeoPoint dbgp = points.get(0); GeoPoint gp = new GeoPoint(dbgp.getLat(), dbgp.getLon(), dbgp.getAlt()); OverlayItem oI = new OverlayItem(String.valueOf(dbgp.getTime()), String.valueOf(p.getId()), String.valueOf(p.getType()), gp); Drawable[] iconLayer = new Drawable[2]; @@ -777,7 +791,7 @@ positionMarker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM); positionMarker.setTitle(title); positionMarker.setSnippet(snippet); - positionMarker.setImage(res.getDrawable(PoiHandler.getEntryImgs()[MainActivity.getPos(type)], null)); + positionMarker.setImage(entryDrawables[MainActivity.getPos(type)]); positionMarker.setIcon(PoiHandler.createPoiMarker(type)); return positionMarker; } diff --git a/app/src/main/res/layout/drawer_list_item.xml b/app/src/main/res/layout/drawer_list_item.xml index 1e713ca..520eece 100644 --- a/app/src/main/res/layout/drawer_list_item.xml +++ b/app/src/main/res/layout/drawer_list_item.xml @@ -20,27 +20,18 @@ * Vinzenz Rosenkranz --> - + android:paddingLeft="16dp" + android:paddingStart="16dp"> + android:gravity="center_vertical" + android:drawablePadding="32dp"/> \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index b2c5ad5..6ef580a 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -22,6 +22,7 @@ 16dp 16dp + 24dp