package com.adamnickle.deck; import android.content.Intent; import android.graphics.Shader; import android.graphics.drawable.BitmapDrawable; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v7.app.ActionBarActivity; import android.support.v7.widget.CardView; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.animation.Animation; import android.widget.FrameLayout; import android.widget.TextView; import com.adamnickle.deck.Game.Card; import java.util.ArrayList; public class AcknowledgmentsActivity extends ActionBarActivity { @Override protected void onCreate( Bundle savedInstanceState ) { super.onCreate( savedInstanceState ); final RecyclerView recyclerView = new RecyclerView( this ); recyclerView.setAdapter( new AcknowledgmentsAdapter() ); recyclerView.setLayoutManager( new LinearLayoutManager( this ) ); setContentView( recyclerView ); getSupportActionBar().setDisplayHomeAsUpEnabled( true ); } public void browseTo( int linkStringResource ) { Intent browserIntent = new Intent( Intent.ACTION_VIEW, Uri.parse( getResources().getString( linkStringResource ) ) ); startActivity( browserIntent ); } private class AcknowledgmentsAdapter extends RecyclerView.Adapter<AcknowledgmentsAdapter.Holder> { class Holder extends RecyclerView.ViewHolder { final CardView Card; final FrameLayout Content; final TextView Title; final TextView Subtitle; public Holder( View itemView ) { super( itemView ); Card = (CardView) itemView; Content = (FrameLayout) itemView.findViewById( R.id.content ); Title = (TextView) itemView.findViewById( R.id.title ); Subtitle = (TextView) itemView.findViewById( R.id.subtitle ); } } private final LayoutInflater mInflater; private AcknowledgmentsAdapter() { mInflater = LayoutInflater.from( AcknowledgmentsActivity.this ); } @Override public Holder onCreateViewHolder( ViewGroup viewGroup, int viewType ) { final View view = LayoutInflater .from( AcknowledgmentsActivity.this ) .inflate( R.layout.acknowledgment_card_layout, viewGroup, false ); return new Holder( view ); } @Override public void onBindViewHolder( Holder viewHolder, int position ) { viewHolder.Content.removeAllViews(); switch( position ) { case 0: { mInflater.inflate( R.layout.flaticon_layout, viewHolder.Content ); viewHolder.Title.setText( "Flat Icon" ); viewHolder.Card.setOnClickListener( new View.OnClickListener() { @Override public void onClick( View v ) { browseTo( R.string.flaticon_link ); } } ); break; } case 1: { mInflater.inflate( R.layout.subtlepatterns_layout, viewHolder.Content ); final BitmapDrawable image = (BitmapDrawable) getResources().getDrawable( R.drawable.gplaypattern ); image.setTileModeXY( Shader.TileMode.REPEAT, Shader.TileMode.REPEAT ); if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { viewHolder.Content.setBackground( image ); } else { viewHolder.Content.setBackgroundDrawable( image ); } viewHolder.Title.setText( "Subtle Patterns" ); viewHolder.Card.setOnClickListener( new View.OnClickListener() { @Override public void onClick( View v ) { browseTo( R.string.subtlepatterns_link ); } } ); break; } case 2: { viewHolder.Title.setText( "Vectorized Playing Cards" ); viewHolder.Card.setOnClickListener( new View.OnClickListener() { @Override public void onClick( View v ) { browseTo( R.string.cards_link ); } } ); final CardDisplayLayout cardDisplayLayout = new CardDisplayLayout( AcknowledgmentsActivity.this ) { @Override public PlayingCardView createPlayingCardView( String cardHolderID, Card card ) { final PlayingCardView cardView = new PlayingCardView( getContext(), cardHolderID, card, 0.5f ) { @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); spreadCard(); } }; cardView.flip( true, false ); return cardView; } @Override public boolean onInterceptTouchEvent( MotionEvent event ) { return true; } @Override public boolean onTouchEvent( @NonNull MotionEvent event ) { return false; } }; cardDisplayLayout.setCanVibrate( false ); cardDisplayLayout.setMinimumHeight( getResources().getDimensionPixelOffset( R.dimen.card_layout_min_height ) ); viewHolder.Content.addView( cardDisplayLayout ); final ArrayList< Card > cards = new ArrayList< Card >(); for( int i = 0; i < 20; i++ ) { cards.add( new Card() ); } cardDisplayLayout.getCardHolderListener().onCardsAdded( "owner_id", cards.toArray( new Card[ cards.size() ] ) ); break; } case 3: { mInflater.inflate( R.layout.chunkfive_layout, viewHolder.Content ); viewHolder.Title.setText( "ChunkFive Font" ); viewHolder.Card.setOnClickListener( new View.OnClickListener() { @Override public void onClick( View v ) { browseTo( R.string.chunkFive_link ); } } ); break; } case 4: { final ViewGroup viewGroup = (ViewGroup) mInflater.inflate( R.layout.card_flip_animations_layout, viewHolder.Content ); viewHolder.Title.setText( "Card Flip Animations" ); viewHolder.Card.setOnClickListener( new View.OnClickListener() { @Override public void onClick( View v ) { browseTo( R.string.cardFlipAnimations_link ); } } ); final CardDisplayLayout cardDisplayLayout = new CardDisplayLayout( AcknowledgmentsActivity.this ) { @Override public PlayingCardView createPlayingCardView( String cardHolderID, Card card ) { return new PlayingCardView( getContext(), cardHolderID, card, 0, 0 ) { @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); flip(); } @Override protected void onLayout( boolean changed, int left, int top, int right, int bottom ) { super.onLayout( changed, left, top, right, bottom ); ViewGroup parent = (ViewGroup) getParent(); if( parent != null ) { setX( ( parent.getWidth() - getWidth() ) / 2.0f ); } } @Override public void flip( boolean faceUp, boolean animate ) { super.flip( faceUp, animate ); mFromMiddle.setAnimationListener( new Animation.AnimationListener() { @Override public void onAnimationStart( Animation animation ) { } @Override public void onAnimationEnd( Animation animation ) { postDelayed( new Runnable() { @Override public void run() { flip(); } }, 2000 ); } @Override public void onAnimationRepeat( Animation animation ) { } } ); } }; } @Override public boolean onInterceptTouchEvent( MotionEvent event ) { return true; } @Override public boolean onTouchEvent( @NonNull MotionEvent event ) { return false; } }; cardDisplayLayout.setCanVibrate( false ); cardDisplayLayout.setMinimumHeight( getResources().getDimensionPixelOffset( R.dimen.card_layout_min_height ) ); ( (ViewGroup) viewGroup.findViewById( R.id.cardDisplayFrame ) ).addView( cardDisplayLayout ); cardDisplayLayout.getCardHolderListener().onCardAdded( "owner_id", new Card( 12 ) ); break; } } } @Override public void onViewRecycled( Holder holder ) { super.onViewRecycled( holder ); switch( holder.getPosition() ) { case 1: if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { holder.Content.setBackground( null ); } else { holder.Content.setBackgroundDrawable( null ); } break; } } @Override public int getItemCount() { return 5; } } }