package no.agens.depth; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.view.View; import android.widget.ImageView; import android.widget.SeekBar; import com.github.florent37.depth.DepthRelativeLayout; public class PlayGroundActivity extends Activity { private DepthRelativeLayout depthView; private static final float MAX_ROTATION_X = 90; private static final float MAX_ROTATION_Y = 90; private static final float MAX_ROTATION_Z = 360; private static final float MAX_ELEVATION = 50; private static final float MAX_DEPTH = 20; private static final float CAMERA_DISTANCE = 6000f; private int seekbarColor; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_playground); seekbarColor = getResources().getColor(R.color.fab); depthView = (DepthRelativeLayout) findViewById(R.id.depth_view); depthView.setCameraDistance((CAMERA_DISTANCE * getResources().getDisplayMetrics().density)); setupSeekBars(); makeAppFullscreen(); setupMenuButton(); } private void setupMenuButton() { ImageView menu = (ImageView) findViewById(R.id.menu); menu.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); MaterialMenuDrawable menuIcon = new MaterialMenuDrawable(this, Color.WHITE, MaterialMenuDrawable.Stroke.THIN, WaterFragment.TRANSFORM_DURATION); menu.setImageDrawable(menuIcon); menuIcon.setIconState(MaterialMenuDrawable.IconState.ARROW); } private void setupSeekBars() { setupRotationXSeekbar(); setupRotationYSeekbar(); setupRotationZSeekbar(); setupElevationSeekbar(); setupDepthSeekbar(); } private void makeAppFullscreen() { getWindow().setStatusBarColor(Color.TRANSPARENT); getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); } private void setupDepthSeekbar() { SeekBar depth = (SeekBar) findViewById(R.id.depth_seekbar); WindFragment.setProgressBarColor(depth, seekbarColor); depth.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { depthView.setDepth(MAX_DEPTH * getResources().getDisplayMetrics().density * ((float) progress / (float) seekBar.getMax())); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); depth.setProgress((int) (depth.getMax() * 0.1f)); } private SeekBar setupRotationXSeekbar() { SeekBar rotationX = (SeekBar) findViewById(R.id.rotation_x_seekbar); WindFragment.setProgressBarColor(rotationX, seekbarColor); rotationX.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { depthView.setRotationX(-MAX_ROTATION_X + (MAX_ROTATION_X * 2f) * ((float) progress / (float) seekBar.getMax())); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); rotationX.setProgress((int) (rotationX.getMax() * 0.1f)); return rotationX; } private void setupRotationYSeekbar() { SeekBar rotationY = (SeekBar) findViewById(R.id.rotation_y_seekbar); rotationY.setProgress((int) (rotationY.getMax() * 0.5f)); WindFragment.setProgressBarColor(rotationY, seekbarColor); rotationY.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { depthView.setRotationY(-MAX_ROTATION_Y + (MAX_ROTATION_Y * 2f) * ((float) progress / (float) seekBar.getMax())); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); } private void setupRotationZSeekbar() { SeekBar rotation = (SeekBar) findViewById(R.id.rotation_z_seekbar); rotation.setProgress(0); WindFragment.setProgressBarColor(rotation, seekbarColor); rotation.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { depthView.setRotation(-MAX_ROTATION_Z * ((float) progress / (float) seekBar.getMax())); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); } private void setupElevationSeekbar() { SeekBar elevation = (SeekBar) findViewById(R.id.elevation_seekbar); elevation.setProgress(0); WindFragment.setProgressBarColor(elevation, seekbarColor); elevation.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { depthView.setCustomShadowElevation((MAX_ELEVATION * ((float) progress / (float) seekBar.getMax())) * getResources().getDisplayMetrics().density); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); elevation.setProgress((int) (elevation.getMax() * 0.5f)); } }