package com.tr4android.appcompatextension.activity; import android.content.Intent; import android.graphics.Color; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.NavigationView; import android.support.design.widget.Snackbar; import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; import android.view.MenuItem; import android.view.View; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.Toast; import com.tr4android.appcompatextension.FileAdapter; import com.tr4android.appcompatextension.R; import com.tr4android.support.extension.drawable.IndeterminateProgressDrawable; import com.tr4android.support.extension.drawable.MediaControlDrawable; import com.tr4android.support.extension.drawable.PlaceholderDrawable; import com.tr4android.support.extension.internal.Account; import com.tr4android.support.extension.typeface.TypefaceCompatFactory; import com.tr4android.support.extension.widget.AccountHeaderView; import com.tr4android.support.extension.widget.FlexibleToolbarLayout; import com.tr4android.support.extension.widget.FloatingActionMenu; public class SampleActivity extends BaseActivity { DrawerLayout drawerLayout; @Override protected void onCreate(Bundle savedInstanceState) { // install typeface factory before(!) onCreate() TypefaceCompatFactory.installViewFactory(this); super.onCreate(savedInstanceState); setContentView(R.layout.activity_sample); setSupportActionBar((Toolbar) findViewById(R.id.toolbar)); getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_menu_black_24dp); getSupportActionBar().setDisplayHomeAsUpEnabled(true); FlexibleToolbarLayout toolbarLayout = (FlexibleToolbarLayout) findViewById(R.id.toolbar_layout); toolbarLayout.setTitleEnabled(true); // Setup DrawerLayout so we can close it later drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); // Setup NavigationView NavigationView navigationView = (NavigationView) findViewById(R.id.navigation); navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(MenuItem menuItem) { return true; } }); // Setup AccountHeaderView AccountHeaderView accountHeaderView = (AccountHeaderView) navigationView.inflateHeaderView(R.layout.account_header); accountHeaderView.addAccounts(new Account().setName("TR4Android").setEmail("tr4android@example.com").setIconResource(R.drawable.account_drawer_profile_image_tr4android), new Account().setName("Fountain Geyser").setEmail("fountaingeyser@example.com").setIconResource(R.drawable.account_drawer_profile_image_fountaingeyser), new Account().setName("Alpha Account").setEmail("alpha.account@example.de").setInfoIconResource(R.drawable.ic_mail_black_24dp).setInfoText("2"), new Account().setName("Beta Account").setEmail("beta.account@example.de").setPlaceholderIconEnabled(true).setPlaceholderCircleColor(Color.parseColor("#2196f3"))); accountHeaderView.setAccountSelectedListener(new AccountHeaderView.OnAccountSelectedListenerAdapter() { @Override public boolean onAccountSelected(Account account) { Snackbar.make(findViewById(R.id.main_layout), account.getEmail(), Snackbar.LENGTH_LONG).show(); drawerLayout.closeDrawers(); return true; } @Override public void onAccountChecked(Account account, boolean isChecked) { Toast.makeText(SampleActivity.this, (isChecked ? "Selected: " : "Unselected: ") + account.getEmail(), Toast.LENGTH_SHORT).show(); } @Override public void onAccountAddSelected() { Snackbar.make(findViewById(R.id.main_layout), "Aha! So you want to add an account!", Snackbar.LENGTH_LONG).show(); drawerLayout.closeDrawers(); } @Override public void onAccountManageSelected() { Snackbar.make(findViewById(R.id.main_layout), "Yes! Management is everything!", Snackbar.LENGTH_LONG).show(); drawerLayout.closeDrawers(); } }); // Setup the dimming of FloatingActionMenu FloatingActionMenu floatingActionMenu = (FloatingActionMenu) findViewById(R.id.fab_menu); floatingActionMenu.setupWithDimmingView(findViewById(R.id.dimming_view), Color.parseColor("#42000000")); View.OnClickListener listener = new View.OnClickListener() { @Override public void onClick(View view) { FloatingActionButton button = (FloatingActionButton) view; Toast.makeText(SampleActivity.this, "Creating " + button.getContentDescription(), Toast.LENGTH_LONG).show(); } }; findViewById(R.id.fab_document).setOnClickListener(listener); findViewById(R.id.fab_spreadsheet).setOnClickListener(listener); findViewById(R.id.fab_presentation).setOnClickListener(listener); // Setup the icon of the FlexibleToolbarLayout FlexibleToolbarLayout flexibleToolbarLayout = (FlexibleToolbarLayout) findViewById(R.id.toolbar_layout); PlaceholderDrawable placeholderDrawable = new PlaceholderDrawable.Builder(this).setPlaceholderText("M").build(); flexibleToolbarLayout.setIcon(placeholderDrawable); // Setup the sample adapter RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view); recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.setAdapter(new FileAdapter(this)); float dp = getResources().getDisplayMetrics().density; // Setup delightful detail drawables ProgressBar artImageView = (ProgressBar) findViewById(R.id.art_imageview); IndeterminateProgressDrawable progressDrawable = new IndeterminateProgressDrawable.Builder(this) .setColor(Color.WHITE) .setPadding(16 * dp) .setStrokeWidth(4 * dp) .build(); artImageView.setIndeterminateDrawable(progressDrawable); ImageView controlsImageView = (ImageView) findViewById(R.id.controls_imageview); final MediaControlDrawable controlDrawable = new MediaControlDrawable.Builder(this) .setColor(Color.WHITE) .setPadding(8 * dp) .setInitialState(MediaControlDrawable.State.PLAY) .build(); controlsImageView.setImageDrawable(controlDrawable); controlsImageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // start animation on click controlDrawable.setMediaControlState(getNextState(controlDrawable.getMediaControlState())); } }); // Setup DatePickerDialog and TimePickerDialog findViewById(R.id.pickers_detail).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { launchPickerDialogs(); } }); } private void launchPickerDialogs() { Intent intent = new Intent(this, PickerDialogActivity.class); startActivity(intent); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: drawerLayout.openDrawer(GravityCompat.START); return true; } return super.onOptionsItemSelected(item); } private boolean mReverse = true; /** * Helper for cycling through the {@link MediaControlDrawable} states */ private MediaControlDrawable.State getNextState(MediaControlDrawable.State current) { switch (current) { case PLAY: mReverse = !mReverse; return mReverse ? MediaControlDrawable.State.PAUSE : MediaControlDrawable.State.STOP; case STOP: return mReverse ? MediaControlDrawable.State.PLAY : MediaControlDrawable.State.PAUSE; case PAUSE: return mReverse ? MediaControlDrawable.State.STOP : MediaControlDrawable.State.PLAY; } return null; } }