If you think the Android project example listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
Java Source Code
/*
* ******************************************************************************
* Copyright (c) 2013 Gabriele Mariotti.
*//www.java2s.com
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
* *****************************************************************************
*/package it.gmariotti.cardslib.library.internal.overflowanimation;
import android.content.Context;
import android.view.View;
import it.gmariotti.cardslib.library.R;
import it.gmariotti.cardslib.library.internal.Card;
/**
* BaseAnimation to overlay the Card
*
* @author Gabriele Mariotti (gabri.mariotti@gmail.com)
*/publicabstractclass BaseCardOverlayAnimation extends BaseOverflowAnimation {
/**
* Original card
*/protected Card originalCard;
/**
* Animation Duration
*/protectedint mAnimationDuration;
// -------------------------------------------------------------
// Constructors
// -------------------------------------------------------------
public BaseCardOverlayAnimation(Context context, Card card) {
super(context);
this.originalCard = card;
}
// -------------------------------------------------------------
// CardInfoToAnimate model
// -------------------------------------------------------------
/**
* Public interface for Card Animation
*/publicinterface CardInfo {
/**
*
* @param layoutId
*/publicvoid setupLayoutsIdToRemove(int[] layoutId);
/**
*
*/publicint[] getLayoutsIdToAdd();
}
/**
* CardInfo provides info about layouts to remove, and layouts to add
*/publicabstractclass CardInfoToAnimate implements CardInfo {
/*
* Layouts to Remove
*/protectedint[] mLayoutsIdToRemove;
// -----------------------------
// Constructors
// -----------------------------
public CardInfoToAnimate() {
defaultIdToRemove();
}
/**
* Default layouts to remove
*/privatevoid defaultIdToRemove(){
mLayoutsIdToRemove = newint[]
{
R.id.card_header_inner_frame,
R.id.card_thumbnail_layout,
R.id.card_main_content_layout
};
}
@Override
publicvoid setupLayoutsIdToRemove(int[] layoutId) {
this.mLayoutsIdToRemove=layoutId;
}
@Override
publicabstractint[] getLayoutsIdToAdd();
/**
* Indicates if card need a navigator
*
* @return
*/protectedboolean isWithNavigator(){
if (getLayoutsIdToAdd()!=null && getLayoutsIdToAdd().length>1)
return true;
elsereturn false;
}
}
protectedabstract CardInfoToAnimate setCardToAnimate(Card card);
// -------------------------------------------------------------
// Animation
// -------------------------------------------------------------
@Override
publicvoid doAnimation(final Card card, View imageOverflow) {
//Store selected values
super.doAnimation(card, imageOverflow);
if (card == null || card.getCardView() == null) return;
//animation duration
//final int mShortAnimationDuration = getAnimationDuration();
final CardInfoToAnimate infoAnimation = setCardToAnimate(card);
if (infoAnimation == null) return;
if (!selected) {
doOverFirstAnimation(card,infoAnimation, imageOverflow);
} else {
//TODO More Cards
doOverOtherAnimation(card,infoAnimation, imageOverflow);
}
//Update icon and model status
toggleOverflowIcon();
}
protectedabstractvoid doOverOtherAnimation(Card card,CardInfoToAnimate infoAnimation,View imageOverflow);
protectedabstractvoid doOverFirstAnimation(Card card,CardInfoToAnimate infoAnimation,View imageOverflow);
// -------------------------------------------------------------
// Getters and Setters
// -------------------------------------------------------------
/**
* Returns the animation duration
*
* @return
*/protectedint getAnimationDuration() {
return mAnimationDuration = mContext.getResources().getInteger(
android.R.integer.config_shortAnimTime);
}
}