Skip to content

Instantly share code, notes, and snippets.

Marcus Gabilheri fnk0

Block or report user

Report or block fnk0

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@fnk0
fnk0 / CardType.java
Created Mar 25, 2018 — forked from gabrielbauman/CardType.java
A Java enum representing credit card types (Visa, Mastercard etc) that can detect card type from a credit card number.
View CardType.java
package com.gabrielbauman.gist;
import java.util.regex.Pattern;
public enum CardType {
UNKNOWN,
VISA("^4[0-9]{12}(?:[0-9]{3}){0,2}$"),
MASTERCARD("^(?:5[1-5]|2(?!2([01]|20)|7(2[1-9]|3))[2-7])\\d{14}$"),
AMERICAN_EXPRESS("^3[47][0-9]{13}$"),
View BaseRecyclerAdapter.java
import android.support.annotation.IntRange;
import android.support.annotation.LayoutRes;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.util.ArrayList;
import java.util.List;
@fnk0
fnk0 / HomeActivity.java
Last active Oct 25, 2016
Shortcut Manager how to
View HomeActivity.java
// Somewhere inside your app...
if (isUserLoggedIn() && Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
ShortcutManager shortcutManager = getSystemService(ShortcutManager.class);
// NOTE: You MUST specify an Action on the intents. Otherwise it will crash
Intent home = new Intent(this, HomeActivity.class);
home.setAction(Intent.ACTION_VIEW);
Intent profile = new Intent(this, UserProfileActivity.class);
profile.setAction(Intent.ACTION_VIEW);
View AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.myapp">
<application
android:name=".MyApp"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme">
<activity
android:name=".ui.home.HomeActivity">
<intent-filter>
@fnk0
fnk0 / shortcuts.xml
Last active Oct 25, 2016
Shortcuts Example
View shortcuts.xml
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
<shortcut
android:shortcutId="leaderboard"
android:enabled="true"
android:icon="@drawable/ic_leaderboard_primary"
<!-- -->
<!-- Note this needs to be a string resource, it can NOT be a string -->
<!-- If you try to use a literal string here will cause an error -->
android:shortcutShortLabel="@string/leaderboard"
android:shortcutLongLabel="@string/leaderboard">
@fnk0
fnk0 / CustomMovieDetailsPresenter.java
Last active Oct 17, 2016
Custom presenter with animation
View CustomMovieDetailsPresenter.java
public class CustomMovieDetailsPresenter extends FullWidthDetailsOverviewRowPresenter {
private int mPreviousState = STATE_FULL;
public CustomMovieDetailsPresenter(Presenter detailsPresenter, DetailsOverviewLogoPresenter logoPresenter) {
super(detailsPresenter, logoPresenter);
// Setting the initial state to FULL prevents the OverviewRow from starting in a weird position
// It ensures consistency and avoids a bug that makes the poster start off the screen.
setInitialState(FullWidthDetailsOverviewRowPresenter.STATE_FULL);
View FullWidthDetailsOverviewRowPresenter.java
protected void onLayoutLogo(ViewHolder viewHolder, int oldState, boolean logoChanged) {
View v = viewHolder.getLogoViewHolder().view;
ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams)
v.getLayoutParams();
switch (mAlignmentMode) {
case ALIGN_MODE_START:
default:
lp.setMarginStart(v.getResources().getDimensionPixelSize(
R.dimen.lb_details_v2_logo_margin_start));
break;
@fnk0
fnk0 / lb_fullwidth_details_overview.xml
Created Oct 17, 2016
FullWidthDetailsOverview xml code for leanback v7
View lb_fullwidth_details_overview.xml
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2014 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@fnk0
fnk0 / MovieDetailsFragment.java
Last active Oct 17, 2016
Adding recommendations row
View MovieDetailsFragment.java
public class MovieDetailsFragment extends DetailsFragment implements Palette.PaletteAsyncListener {
...
ArrayObjectAdapter mRecommendationsAdapter = new ArrayObjectAdapter(new MoviePresenter());
...
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
View MovieDetailsFragment.java
public class MovieDetailsFragment extends DetailsFragment implements Palette.PaletteAsyncListener {
// Add the adapter and use the newly created Presenter to define how to render the objects
ArrayObjectAdapter mCastAdapter = new ArrayObjectAdapter(new PersonPresenter());
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Adds the adapter and fetches the data
You can’t perform that action at this time.