package tk.zielony.carbonsamples.demo; import android.content.Context; import android.os.Bundle; import android.os.Vibrator; import android.view.SoundEffectConstants; import android.view.View; import com.annimon.stream.Stream; import java.util.List; import carbon.widget.FrameLayout; import carbon.widget.ImageView; import carbon.widget.LinearLayout; import carbon.widget.TextView; import tk.zielony.carbonsamples.R; import tk.zielony.carbonsamples.SamplesActivity; public class PowerMenuActivity extends SamplesActivity { boolean vibration = false, volume = true, airplaneMode = false; View powerMenu; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_powermenu); powerMenu = findViewById(R.id.powerMenu); final FrameLayout transitionLayout = (FrameLayout) findViewById(R.id.transition); findViewById(R.id.button).setOnClickListener(view -> { if (powerMenu.getVisibility() == View.VISIBLE) return; for (int i = 0; i < transitionLayout.getChildCount(); i++) transitionLayout.getChildAt(i).setVisibility(i == 0 ? View.VISIBLE : View.GONE); final List<View> viewsWithTag = ((LinearLayout) transitionLayout.getChildAt(0)).findViewsWithTag("animate"); Stream.of(viewsWithTag).forEach(v -> v.setVisibility(View.INVISIBLE)); powerMenu.setVisibility(View.VISIBLE); view.getHandler().postDelayed(() -> { Stream.of(viewsWithTag).forEach(v -> { v.getHandler().postDelayed(() -> { v.setVisibility(View.VISIBLE); }, viewsWithTag.indexOf(v) * 40); }); }, 200); }); findViewById(R.id.powerOff).setOnClickListener(view -> { final List<View> viewsWithTag = ((FrameLayout) transitionLayout.getChildAt(1)).findViewsWithTag("animate"); for (int i = 0; i < viewsWithTag.size(); i++) viewsWithTag.get(i).setVisibility(View.INVISIBLE); view.getHandler().postDelayed(() -> { for (int i = 0; i < viewsWithTag.size(); i++) { final int finalI = i; view.getHandler().postDelayed(() -> viewsWithTag.get(finalI).setVisibility(View.VISIBLE), i * 20); } }, 400); //transitionLayout.setHotspot(view.findViewById(R.id.powerOffIcon)); //transitionLayout.startTransition(1, TransitionLayout.TransitionType.Radial); view.getHandler().postDelayed(() -> powerMenu.setVisibility(View.INVISIBLE), 3000); }); findViewById(R.id.reboot).setOnClickListener(view -> { final List<View> viewsWithTag = ((FrameLayout) transitionLayout.getChildAt(2)).findViewsWithTag("animate"); for (int i = 0; i < viewsWithTag.size(); i++) viewsWithTag.get(i).setVisibility(View.INVISIBLE); view.getHandler().postDelayed(() -> { for (int i = 0; i < viewsWithTag.size(); i++) { final int finalI = i; view.getHandler().postDelayed(() -> viewsWithTag.get(finalI).setVisibility(View.VISIBLE), i * 20); } }, 400); //transitionLayout.setHotspot(view.findViewById(R.id.rebootIcon)); //transitionLayout.startTransition(2, TransitionLayout.TransitionType.Radial); view.getHandler().postDelayed(() -> powerMenu.setVisibility(View.INVISIBLE), 3000); }); findViewById(R.id.airplaneMode).setOnClickListener(view -> { final List<View> viewsWithTag = ((FrameLayout) transitionLayout.getChildAt(3)).findViewsWithTag("animate"); for (int i = 0; i < viewsWithTag.size(); i++) viewsWithTag.get(i).setVisibility(View.INVISIBLE); view.getHandler().postDelayed(() -> { for (int i = 0; i < viewsWithTag.size(); i++) { final int finalI = i; view.getHandler().postDelayed(() -> viewsWithTag.get(finalI).setVisibility(View.VISIBLE), i * 20); } }, 400); //transitionLayout.setHotspot(view.findViewById(R.id.airplaneModeIcon)); //transitionLayout.startTransition(3, TransitionLayout.TransitionType.Radial); view.getHandler().postDelayed(() -> { //transitionLayout.startTransition(0, TransitionLayout.TransitionType.Radial, TransitionLayout.DEFAULT_DURATION, false); airplaneMode = !airplaneMode; TextView amStatus = (TextView) findViewById(R.id.airplaneModeStatus); amStatus.setText("Airplane Mode is " + (airplaneMode ? "on" : "off")); ImageView airplaneModeIcon = (ImageView) view.findViewById(R.id.airplaneModeIcon); airplaneModeIcon.setImageResource(airplaneMode ? R.raw.ic_airplanemode_on_24px : R.raw.ic_airplanemode_off_24px); }, 3000); }); findViewById(R.id.vibration).setOnClickListener(view -> { if (vibration) { vibration = false; view.setBackgroundColor(0xffffffff); ((ImageView) view).setTint(getResources().getColor(R.color.carbon_black_54)); } else { vibration = true; view.setBackgroundColor(0xff00695D); ((ImageView) view).setTint(0xffffffff); Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); vibrator.vibrate(500); } powerMenu.postInvalidate(); }); findViewById(R.id.volume).setOnClickListener(view -> { if (volume) { volume = false; view.setBackgroundColor(0xffffffff); ((ImageView) view).setTint(getResources().getColor(R.color.carbon_black_54)); } else { volume = true; view.setBackgroundColor(0xff00695D); ((ImageView) view).setTint(0xffffffff); view.playSoundEffect(SoundEffectConstants.CLICK); } powerMenu.postInvalidate(); }); } @Override public void onBackPressed() { if (powerMenu.getVisibility() == View.VISIBLE) { powerMenu.setVisibility(View.INVISIBLE); return; } super.onBackPressed(); } }