package com.f2prateek.progressbutton.samples; import android.app.Activity; import android.os.Bundle; import android.widget.CompoundButton; import android.widget.LinearLayout; import android.widget.SeekBar; import com.f2prateek.progressbutton.ProgressButton; /** * Examples. * 1 : Default * 2 : Pinned * 3 : Pinned Clickable * 4 : Colored Clickable * <p/> * Row 1 : from xml * Row 2 : from code (duplicating row 1) */ public class MainActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final ProgressButton progressButton1 = (ProgressButton) findViewById(R.id.pin_progress_1); final ProgressButton progressButton2 = (ProgressButton) findViewById(R.id.pin_progress_2); final ProgressButton progressButton3 = (ProgressButton) findViewById(R.id.pin_progress_3); final ProgressButton progressButton4 = (ProgressButton) findViewById(R.id.pin_progress_4); final LinearLayout container = (LinearLayout) findViewById(R.id.container); /** * Default implementation of the {@link ProgressButton}. * By default, the {@link ProgressButton} is not clickable, and is unpinned. */ final ProgressButton progressButton5 = addProgressButton(container); /** * A {@link ProgressButton} that starts pinned, and is not clickable, so it * stays pinned. * @see ProgressButton#setPinned(boolean) * @see View#setClickable(boolean) */ final ProgressButton progressButton6 = addProgressButton(container); progressButton6.setPinned(true); /** * A progress button that starts pinned, and is clickable, so it's * pinned state can be changed by the user. * @see ProgressButton#setPinned(boolean) * @see View#setClickable(boolean) */ final ProgressButton progressButton7 = addProgressButton(container); progressButton7.setPinned(true); progressButton7.setClickable(true); progressButton7.setFocusable(true); /** * An example of how to use style the button in code. * @see ProgressButton#setPinnedDrawable(android.graphics.drawable.Drawable) * @see ProgressButton#setUnpinnedDrawable(android.graphics.drawable.Drawable) * @see ProgressButton#setShadowDrawable(android.graphics.drawable.Drawable) * @see ProgressButton#setProgressColor(int) * @see ProgressButton#setCircleColor(int) */ final ProgressButton progressButton8 = addProgressButton(container); progressButton8.setProgressColor(getResources().getColor(R.color.holo_green_light)); progressButton8.setCircleColor(getResources().getColor(R.color.holo_green_dark)); progressButton8.setClickable(true); progressButton8.setFocusable(true); CompoundButton.OnCheckedChangeListener checkedChangeListener = new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { updatePinProgressContentDescription((ProgressButton) compoundButton); } }; progressButton1.setOnCheckedChangeListener(checkedChangeListener); progressButton2.setOnCheckedChangeListener(checkedChangeListener); progressButton3.setOnCheckedChangeListener(checkedChangeListener); progressButton4.setOnCheckedChangeListener(checkedChangeListener); progressButton5.setOnCheckedChangeListener(checkedChangeListener); progressButton6.setOnCheckedChangeListener(checkedChangeListener); progressButton7.setOnCheckedChangeListener(checkedChangeListener); progressButton8.setOnCheckedChangeListener(checkedChangeListener); SeekBar progressSeekBar = (SeekBar) findViewById(R.id.progress_seek_bar); progressSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { updateProgressButton(progressButton1, seekBar); updateProgressButton(progressButton2, seekBar); updateProgressButton(progressButton3, seekBar); updateProgressButton(progressButton4, seekBar); updateProgressButton(progressButton5, seekBar); updateProgressButton(progressButton6, seekBar); updateProgressButton(progressButton7, seekBar); updateProgressButton(progressButton8, seekBar); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); updateProgressButton(progressButton1, progressSeekBar); updateProgressButton(progressButton2, progressSeekBar); updateProgressButton(progressButton3, progressSeekBar); updateProgressButton(progressButton4, progressSeekBar); updateProgressButton(progressButton5, progressSeekBar); updateProgressButton(progressButton6, progressSeekBar); updateProgressButton(progressButton7, progressSeekBar); updateProgressButton(progressButton8, progressSeekBar); } /** * Helper method to update the progressButton's progress and it's * content description. */ private void updateProgressButton(ProgressButton progressButton, SeekBar progressSeekBar) { progressButton.setProgress(progressSeekBar.getProgress()); updatePinProgressContentDescription(progressButton); } private void updatePinProgressContentDescription(ProgressButton button) { int progress = button.getProgress(); if (progress <= 0) { button.setContentDescription(getString( button.isChecked() ? R.string.content_desc_pinned_not_downloaded : R.string.content_desc_unpinned_not_downloaded)); } else if (progress >= 100) { button.setContentDescription(getString( button.isChecked() ? R.string.content_desc_pinned_downloaded : R.string.content_desc_unpinned_downloaded)); } else { button.setContentDescription(getString( button.isChecked() ? R.string.content_desc_pinned_downloading : R.string.content_desc_unpinned_downloading)); } } /** * Helper function that creates a new progress button, adds it to the given layout. * Returns a reference to the progress button for customization. */ private ProgressButton addProgressButton(LinearLayout container) { final LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 1.0f); final ProgressButton progressButton = new ProgressButton(this); progressButton.setLayoutParams(layoutParams); container.addView(progressButton); return progressButton; } }