/** * galaxy inc. * meetup client for android */ package com.galaxy.meetup.client.android.ui.view; import android.content.Context; import android.util.AttributeSet; import android.view.animation.AccelerateInterpolator; import android.view.animation.AlphaAnimation; import android.view.animation.Animation; import android.view.animation.DecelerateInterpolator; import android.widget.RelativeLayout; import android.widget.TextView; import com.galaxy.meetup.client.android.R; /** * * @author sihai * */ public class PhotoAlbumView extends RelativeLayout { private TextView mDateDisplay; private int mDateVisibilityState; private AlphaAnimation mFadeIn; private AlphaAnimation mFadeOut; private AlphaAnimation mResetToOpaque; public PhotoAlbumView(Context context) { this(context, null); } public PhotoAlbumView(Context context, AttributeSet attributeset) { super(context, attributeset); mDateVisibilityState = 8; mFadeIn = new AlphaAnimation(0.0F, 1.0F); mFadeIn.setInterpolator(new DecelerateInterpolator()); mFadeIn.setDuration(250L); mFadeIn.setAnimationListener(new android.view.animation.Animation.AnimationListener() { public final void onAnimationEnd(Animation animation) { } public final void onAnimationRepeat(Animation animation) { } public final void onAnimationStart(Animation animation) { mDateDisplay.setVisibility(0); } }); mFadeOut = new AlphaAnimation(1.0F, 0.0F); mFadeOut.setInterpolator(new AccelerateInterpolator()); mFadeOut.setStartOffset(500L); mFadeOut.setDuration(250L); mFadeOut.setAnimationListener(new android.view.animation.Animation.AnimationListener() { public final void onAnimationEnd(Animation animation) { mDateDisplay.setVisibility(4); } public final void onAnimationRepeat(Animation animation) { } public final void onAnimationStart(Animation animation) { } }); if(android.os.Build.VERSION.SDK_INT < 11) mResetToOpaque = new AlphaAnimation(1.0F, 1.0F); } public final void enableDateDisplay(boolean flag) { mDateDisplay = (TextView)findViewById(R.id.date); } protected void onLayout(boolean flag, int i, int j, int k, int l) { super.onLayout(flag, i, j, k, l); if(mDateDisplay != null) { android.widget.RelativeLayout.LayoutParams layoutparams = (android.widget.RelativeLayout.LayoutParams)mDateDisplay.getLayoutParams(); boolean flag1; int i1; if(getResources().getConfiguration().orientation == 2) flag1 = true; else flag1 = false; i1 = ((ColumnGridView)findViewById(R.id.grid)).getColumnSize(); if(flag1) { layoutparams.setMargins(i1 - mDateDisplay.getWidth() / 2, 0, 0, 0); layoutparams.addRule(8, R.id.grid); mDateDisplay.setBackgroundResource(R.drawable.photos_date_h); } else { layoutparams.setMargins(0, i1 - mDateDisplay.getHeight() / 2, 0, 0); layoutparams.addRule(7, R.id.grid); mDateDisplay.setBackgroundResource(R.drawable.photos_date_v); } } } public void setDate(String s) { mDateDisplay.setText(s); } public void setDateVisibility(int i) { if(mDateDisplay != null && mDateVisibilityState != i) { if(i == 0) { if(mFadeOut.hasEnded()) { mDateDisplay.startAnimation(mFadeIn); } else { mFadeOut.cancel(); if(android.os.Build.VERSION.SDK_INT >= 11) mDateDisplay.setAlpha(1.0F); else mDateDisplay.startAnimation(mResetToOpaque); mDateDisplay.setVisibility(0); } } else { mFadeOut.reset(); mDateDisplay.startAnimation(mFadeOut); } mDateVisibilityState = i; } } }