Skip to content
This repository was archived by the owner on Jan 2, 2026. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 64 additions & 6 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,70 @@ android {
}
}

android {
packagingOptions {
exclude 'META-INF/DEPENDENCIES.txt'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/notice.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/dependencies.txt'
exclude 'META-INF/LGPL2.1'
}
}

repositories {
jcenter()
mavenCentral()
maven { url "https://maven.google.com" }
maven { url "https://jitpack.io" }
}

dependencies {
compile "com.android.support:appcompat-v7:$rootProject.supportLibraryVersion"
compile "com.android.support:recyclerview-v7:$rootProject.supportLibraryVersion"
compile "com.android.support:cardview-v7:$rootProject.supportLibraryVersion"
compile "com.android.support:palette-v7:$rootProject.supportLibraryVersion"
compile "com.android.support:design:$rootProject.supportLibraryVersion"
compile "com.squareup.picasso:picasso:2.4.0"
compile fileTree(dir: "libs", include: ["*.jar"])

compile 'com.android.support:appcompat-v7:' + rootProject.ext.supportLibraryVersion
compile 'com.android.support:cardview-v7:' + rootProject.ext.supportLibraryVersion
compile 'com.android.support:recyclerview-v7:' + rootProject.ext.supportLibraryVersion
compile 'com.android.support:support-v4:' + rootProject.ext.supportLibraryVersion
compile 'com.android.support:design:' + rootProject.ext.supportLibraryVersion
compile 'com.android.support:percent:' + rootProject.ext.supportLibraryVersion
compile 'com.android.support:palette-v7:' + rootProject.ext.supportLibraryVersion
compile 'com.android.support:support-vector-drawable:' + rootProject.ext.supportLibraryVersion
compile 'com.android.support:animated-vector-drawable:' + rootProject.ext.supportLibraryVersion
compile 'com.android.support:support-annotations:' + rootProject.ext.supportLibraryVersion
compile 'com.android.support:support-compat:' + rootProject.ext.supportLibraryVersion
compile 'com.android.support:support-core-ui:' + rootProject.ext.supportLibraryVersion
compile 'com.android.support:support-v13:' + rootProject.ext.supportLibraryVersion
compile 'com.android.support:support-v4:' + rootProject.ext.supportLibraryVersion

compile 'com.flipboard:bottomsheet-core:1.5.3'
compile 'com.flipboard:bottomsheet-commons:1.5.3'
compile 'com.facebook.android:facebook-android-sdk:4.23.+'
compile 'com.github.coyarzun89:fabtransitionactivity:0.2.0'
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'de.hdodenhof:circleimageview:2.0.0'
compile 'com.jakewharton:butterknife:8.6.0'
compile 'joda-time:joda-time:2.9.9'
compile 'com.android.support:multidex:1.0.1'
compile 'com.firebaseui:firebase-ui-database:0.4.0'
compile 'pub.devrel:easypermissions:0.1.5'
compile 'com.fasterxml.jackson.core:jackson-databind:2.7.3'
compile 'com.danikula:videocache:2.6.4'
compile 'com.dinuscxj:circleprogressbar:1.1.1'
compile 'com.afollestad.material-dialogs:core:0.9.4.5'
compile 'com.googlecode.mp4parser:isoparser:1.1.22'
compile 'javax.inject:javax.inject:1'
compile 'com.android.support:support-v4:26.+'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'me.riddhimanadib.bottom-nav-bar:bottom-nav-bar:1.0.1'
compile 'com.android.support:design:26.+'
compile 'com.android.support:recyclerview-v7:26.+'
compile 'com.jakewharton:butterknife:8.6.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.6.0'
testCompile 'junit:junit:4.12'
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,13 @@
import android.graphics.drawable.BitmapDrawable;
import android.os.Build;
import android.os.Bundle;
import android.support.design.widget.AppBarLayout;
import android.support.design.widget.CollapsingToolbarLayout;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.ActivityOptionsCompat;
import android.support.v4.view.ViewCompat;
import android.support.v4.widget.NestedScrollView;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.graphics.Palette;
import android.support.v7.widget.Toolbar;
Expand All @@ -36,14 +38,26 @@
import android.widget.ImageView;
import android.widget.TextView;

import com.antonioleiva.materializeyourapp.widgets.SquareImageView;
import com.squareup.picasso.Callback;
import com.squareup.picasso.Picasso;

import butterknife.BindView;
import butterknife.ButterKnife;

public class DetailActivity extends AppCompatActivity {

private static final String EXTRA_IMAGE = "com.antonioleiva.materializeyourapp.extraImage";
private static final String EXTRA_TITLE = "com.antonioleiva.materializeyourapp.extraTitle";
private CollapsingToolbarLayout collapsingToolbarLayout;

@BindView(R.id.image) SquareImageView image;
@BindView(R.id.toolbar) Toolbar toolbar;
@BindView(R.id.collapsing_toolbar) CollapsingToolbarLayout collapsingToolbar;
@BindView(R.id.app_bar_layout) AppBarLayout appBarLayout;
@BindView(R.id.title) TextView title;
@BindView(R.id.description) TextView description;
@BindView(R.id.scroll) NestedScrollView scroll;
@BindView(R.id.fab) FloatingActionButton fab;

public static void navigate(AppCompatActivity activity, View transitionImage, ViewModel viewModel) {
Intent intent = new Intent(activity, DetailActivity.class);
Expand All @@ -55,25 +69,26 @@ public static void navigate(AppCompatActivity activity, View transitionImage, Vi
}

@SuppressWarnings("ConstantConditions")
@Override protected void onCreate(Bundle savedInstanceState) {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initActivityTransitions();
setContentView(R.layout.activity_detail);
ButterKnife.bind(this);

ViewCompat.setTransitionName(findViewById(R.id.app_bar_layout), EXTRA_IMAGE);
ViewCompat.setTransitionName(appBarLayout, EXTRA_IMAGE);
supportPostponeEnterTransition();

setSupportActionBar((Toolbar) findViewById(R.id.toolbar));
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

String itemTitle = getIntent().getStringExtra(EXTRA_TITLE);
collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar);
collapsingToolbarLayout.setTitle(itemTitle);
collapsingToolbarLayout.setExpandedTitleColor(getResources().getColor(android.R.color.transparent));
collapsingToolbar.setTitle(itemTitle);
collapsingToolbar.setExpandedTitleColor(getResources().getColor(android.R.color.transparent));

final ImageView image = (ImageView) findViewById(R.id.image);
Picasso.with(this).load(getIntent().getStringExtra(EXTRA_IMAGE)).into(image, new Callback() {
@Override public void onSuccess() {
@Override
public void onSuccess() {
Bitmap bitmap = ((BitmapDrawable) image.getDrawable()).getBitmap();
Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() {
public void onGenerated(Palette palette) {
Expand All @@ -82,16 +97,17 @@ public void onGenerated(Palette palette) {
});
}

@Override public void onError() {
@Override
public void onError() {

}
});

TextView title = (TextView) findViewById(R.id.title);
title.setText(itemTitle);
}

@Override public boolean dispatchTouchEvent(MotionEvent motionEvent) {
@Override
public boolean dispatchTouchEvent(MotionEvent motionEvent) {
try {
return super.dispatchTouchEvent(motionEvent);
} catch (NullPointerException e) {
Expand All @@ -111,17 +127,17 @@ private void initActivityTransitions() {
private void applyPalette(Palette palette) {
int primaryDark = getResources().getColor(R.color.primary_dark);
int primary = getResources().getColor(R.color.primary);
collapsingToolbarLayout.setContentScrimColor(palette.getMutedColor(primary));
collapsingToolbarLayout.setStatusBarScrimColor(palette.getDarkMutedColor(primaryDark));
updateBackground((FloatingActionButton) findViewById(R.id.fab), palette);
collapsingToolbar.setContentScrimColor(palette.getMutedColor(primary));
collapsingToolbar.setStatusBarScrimColor(palette.getDarkMutedColor(primaryDark));
updateBackground(fab, palette);
supportStartPostponedEnterTransition();
}

private void updateBackground(FloatingActionButton fab, Palette palette) {
int lightVibrantColor = palette.getLightVibrantColor(getResources().getColor(android.R.color.white));
int vibrantColor = palette.getVibrantColor(getResources().getColor(R.color.accent));

fab.setRippleColor(lightVibrantColor);
fab.setBackgroundTintList(ColorStateList.valueOf(vibrantColor));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,108 +16,103 @@

package com.antonioleiva.materializeyourapp;

import android.os.Build;
import android.os.Bundle;
import android.support.design.widget.AppBarLayout;
import android.support.design.widget.CoordinatorLayout;
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.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

import com.antonioleiva.materializeyourapp.picasso.CircleTransform;
import com.antonioleiva.materializeyourapp.widgets.GridRecyclerView;
import com.squareup.picasso.Picasso;

import java.util.ArrayList;
import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;

public class MainActivity extends AppCompatActivity implements RecyclerViewAdapter.OnItemClickListener {

public static final String AVATAR_URL = "http://lorempixel.com/200/200/people/1/";
public class MainActivity extends AppCompatActivity {

public static final String AVATAR_URL = "http://lorempixel.com/200/200/people/1/";
private static List<ViewModel> items = new ArrayList<>();

static {
for (int i = 1; i <= 10; i++) {
items.add(new ViewModel("Item " + i, "http://lorempixel.com/500/500/animals/" + i));
}
}
@BindView(R.id.toolbar) Toolbar toolbar;
@BindView(R.id.appBarLayout) AppBarLayout appBarLayout;
@BindView(R.id.recycler_view) GridRecyclerView recyclerView;
@BindView(R.id.fab) FloatingActionButton fab;
@BindView(R.id.content) CoordinatorLayout content;
@BindView(R.id.navigation_view) NavigationView navigationView;
@BindView(R.id.drawer_layout) DrawerLayout drawerLayout;

private GridLayoutManager layoutManager;
private RecyclerViewAdapter adapter;
private ImageView avatar;

private DrawerLayout drawerLayout;
private View content;
private RecyclerView recyclerView;
private NavigationView navigationView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);

initRecyclerView();
initFab();
initToolbar();
setupDrawerLayout();
initializeUI();

content = findViewById(R.id.content);

final ImageView avatar = (ImageView) navigationView.getHeaderView(0).findViewById(R.id.avatar);
avatar = (ImageView) navigationView.getHeaderView(0).findViewById(R.id.avatar);
Picasso.with(this).load(AVATAR_URL).transform(new CircleTransform()).into(avatar);

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
setRecyclerAdapter(recyclerView);
}
}

@Override public void onEnterAnimationComplete() {
@Override
public void onEnterAnimationComplete() {
super.onEnterAnimationComplete();
setRecyclerAdapter(recyclerView);
recyclerView.scheduleLayoutAnimation();
}

private void initRecyclerView() {
recyclerView = (RecyclerView) findViewById(R.id.recycler);
recyclerView.setLayoutManager(new GridLayoutManager(this, 2));

}

private void setRecyclerAdapter(RecyclerView recyclerView) {
RecyclerViewAdapter adapter = new RecyclerViewAdapter(items);
adapter.setOnItemClickListener(this);
adapter = new RecyclerViewAdapter(items);
recyclerView.setAdapter(adapter);
}

private void initFab() {
findViewById(R.id.fab).setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
Snackbar.make(content, "FAB Clicked", Snackbar.LENGTH_SHORT).show();
recyclerView.scheduleLayoutAnimation();
adapter.setOnItemClickListener(new RecyclerViewAdapter.OnItemClickListener() {
@Override
public void onItemClick(View view, ViewModel viewModel) {
DetailActivity.navigate(MainActivity.this, view.findViewById(R.id.image), viewModel);
}
});
}

private void initToolbar() {
final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
@Override
protected void onStart() {
super.onStart();
for (int i = 1; i <= 10; i++) {
items.add(new ViewModel("Item " + i, "http://lorempixel.com/500/500/animals/" + i));
}
}

private void initializeUI() {
setSupportActionBar(toolbar);
final ActionBar actionBar = getSupportActionBar();

if (actionBar != null) {
actionBar.setHomeAsUpIndicator(R.drawable.ic_menu_black_24dp);
actionBar.setDisplayHomeAsUpEnabled(true);
}
}

private void setupDrawerLayout() {
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
layoutManager = new GridLayoutManager(this, 3, LinearLayoutManager.VERTICAL, false);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(layoutManager);

navigationView = (NavigationView) findViewById(R.id.navigation_view);
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override public boolean onNavigationItemSelected(MenuItem menuItem) {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
Snackbar.make(content, menuItem.getTitle() + " pressed", Snackbar.LENGTH_LONG).show();
menuItem.setChecked(true);
drawerLayout.closeDrawers();
Expand All @@ -126,18 +121,20 @@ private void setupDrawerLayout() {
});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.drawer, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
drawerLayout.openDrawer(GravityCompat.START);
return true;
}

return super.onOptionsItemSelected(item);
}

@Override public void onItemClick(View view, ViewModel viewModel) {
DetailActivity.navigate(this, view.findViewById(R.id.image), viewModel);
}
}
Loading