package org.droidplanner.android.dialogs; import android.os.Bundle; import android.support.v4.app.DialogFragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.SeekBar; import android.widget.TextView; import com.facebook.shimmer.ShimmerFrameLayout; import org.droidplanner.android.R; import org.droidplanner.android.view.SlideButton; /** * Created by Fredia Huya-Kouadio on 4/6/15. */ public class SlideToUnlockDialog extends DialogFragment implements SeekBar.OnSeekBarChangeListener{ public static final String EXTRA_UNLOCK_ACTION = "extra_unlock_action"; public static SlideToUnlockDialog newInstance(String unlockDescription, final Runnable unlockAction){ final SlideToUnlockDialog unlockDialog = new SlideToUnlockDialog(); Bundle args = new Bundle(); args.putString(SlideToUnlockDialog.EXTRA_UNLOCK_ACTION, unlockDescription); unlockDialog.setArguments(args); unlockDialog.unlockAction = unlockAction; return unlockDialog; } private TextView sliderText; private ShimmerFrameLayout shimmerContainer; private Runnable unlockAction; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setStyle(DialogFragment.STYLE_NO_FRAME, R.style.CustomDialogTheme); setCancelable(true); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ return inflater.inflate(R.layout.dialog_slide_to_unlock, container, false); } @Override public void onStart(){ super.onStart(); getDialog().setCanceledOnTouchOutside(true); } @Override public void onPause(){ super.onPause(); dismiss(); } @Override public void onViewCreated(View view, Bundle savedInstanceState){ super.onViewCreated(view, savedInstanceState); final Bundle args = getArguments(); String unlockAction = "unlock"; if(args != null){ unlockAction = args.getString(EXTRA_UNLOCK_ACTION, unlockAction); } sliderText = (TextView) view.findViewById(R.id.slider_text); sliderText.setText(R.string.unlock_slider_description); final SlideButton slideButton = (SlideButton) view.findViewById(R.id.unlock_slider); slideButton.setOnSeekBarChangeListener(this); shimmerContainer = (ShimmerFrameLayout) view.findViewById(R.id.shimmer_view_container); shimmerContainer.startShimmerAnimation(); } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { } @Override public void onStartTrackingTouch(SeekBar seekBar) { shimmerContainer.stopShimmerAnimation(); sliderText.setVisibility(View.INVISIBLE); } @Override public void onStopTrackingTouch(SeekBar seekBar) { if (seekBar.getProgress() < 80) { seekBar.setProgress(0); sliderText.setVisibility(View.VISIBLE); shimmerContainer.startShimmerAnimation(); } else { seekBar.setProgress(100); handleSlide(); } } private void handleSlide() { onSliderUnlocked(); dismiss(); } public void onSliderUnlocked(){ if(unlockAction != null) unlockAction.run(); } }