package de.blau.android.views; import android.annotation.SuppressLint; import android.content.Context; import android.content.res.ColorStateList; import android.os.Build; import android.support.design.widget.FloatingActionButton; import android.support.v4.content.ContextCompat; import android.util.AttributeSet; import android.view.ContextThemeWrapper; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.widget.LinearLayout; import de.blau.android.Main; import de.blau.android.R; import de.blau.android.util.ThemeUtils; import de.blau.android.util.Util; public class ZoomControls extends LinearLayout { private static final String DEBUG_TAG = ZoomControls.class.getName(); private final FloatingActionButton zoomIn; private final FloatingActionButton zoomOut; private final Context context; public ZoomControls(Context context) { this(context,null); } public ZoomControls(Context context, AttributeSet attrs) { super(context, attrs); this.context = context; setFocusable(false); LayoutInflater inflater = (LayoutInflater) (new ContextThemeWrapper(context,R.style.Theme_AppCompat_Light).getSystemService(Context.LAYOUT_INFLATER_SERVICE)); inflater.inflate(R.layout.zoom_controls, this, true); zoomIn = (FloatingActionButton)findViewById(R.id.zoom_in); zoomOut = (FloatingActionButton)findViewById(R.id.zoom_out); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { // currently can't be set in layout, ColorStateList not supported in Lollipop and higher ColorStateList zoomTint = ContextCompat.getColorStateList(context,R.color.zoom); Util.setBackgroundTintList(zoomIn, zoomTint); Util.setBackgroundTintList(zoomOut, zoomTint); } Util.setAlpha(zoomIn,Main.FABALPHA); Util.setAlpha(zoomOut,Main.FABALPHA); } @SuppressLint("ClickableViewAccessibility") @Override public boolean onTouchEvent(MotionEvent event) { return true; } public void setOnZoomInClickListener (View.OnClickListener listener) { zoomIn.setOnClickListener(listener); } public void setOnZoomOutClickListener (View.OnClickListener listener) { zoomOut.setOnClickListener(listener); } public void show() { this.setVisibility(View.VISIBLE); } public void hide() { this.setVisibility(View.GONE); } public void setIsZoomInEnabled (boolean isEnabled) { zoomIn.setEnabled(isEnabled); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { zoomIn.setBackgroundColor(ThemeUtils.getStyleAttribColorValue(context, isEnabled ? R.attr.colorControlNormal:R.attr.colorPrimary,R.color.dark_grey)); } } public void setIsZoomOutEnabled (boolean isEnabled) { zoomOut.setEnabled(isEnabled); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { zoomOut.setBackgroundColor(ThemeUtils.getStyleAttribColorValue(context, isEnabled ? R.attr.colorControlNormal:R.attr.colorPrimary,R.color.dark_grey)); } } }