/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.android.hangout;
import java.util.ArrayList;
import java.util.Iterator;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.TimeInterpolator;
import android.animation.ValueAnimator;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.RectF;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import android.os.Vibrator;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.TypedValue;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.view.accessibility.AccessibilityManager;
import com.galaxy.meetup.client.android.R;
/**
*
* @author sihai
*
*/
public class MultiWaveView extends View {
private int mActiveTarget;
private boolean mAnimatingTargets;
private TimeInterpolator mChevronAnimationInterpolator;
private ArrayList mChevronAnimations;
private ArrayList mChevronDrawables;
private ArrayList mDirectionDescriptions;
private int mDirectionDescriptionsResourceId;
private boolean mDragging;
private int mFeedbackCount;
private int mGrabbedState;
private Tweener mHandleAnimation;
private TargetDrawable mHandleDrawable;
private float mHitRadius;
private float mHorizontalOffset;
private int mNewTargetResources;
private OnTriggerListener mOnTriggerListener;
private float mOuterRadius;
private TargetDrawable mOuterRing;
private GradientDrawable mOuterRingDrawable;
private android.animation.Animator.AnimatorListener mResetListener;
private android.animation.Animator.AnimatorListener mResetListenerWithPing;
private int mScreenHeight;
private int mScreenWidth;
private float mSnapMargin;
private float mTapRadius;
private ArrayList mTargetAnimations;
private ArrayList mTargetDescriptions;
private int mTargetDescriptionsResourceId;
private ArrayList mTargetDrawables;
private int mTargetResourceId;
private android.animation.Animator.AnimatorListener mTargetUpdateListener;
private android.animation.ValueAnimator.AnimatorUpdateListener mUpdateListener;
private float mVerticalOffset;
private int mVibrationDuration;
private Vibrator mVibrator;
private float mWaveCenterX;
private float mWaveCenterY;
public MultiWaveView(Context context)
{
this(context, null);
}
public MultiWaveView(Context context, AttributeSet attributeset)
{
super(context, attributeset);
mTargetDrawables = new ArrayList();
mChevronDrawables = new ArrayList();
mFeedbackCount = 3;
mVibrationDuration = 0;
mActiveTarget = -1;
mOuterRadius = 0.0F;
mHitRadius = 0.0F;
mSnapMargin = 0.0F;
if(android.os.Build.VERSION.SDK_INT >= 11)
{
mChevronAnimationInterpolator = Ease.Quad.easeOut;
mChevronAnimations = new ArrayList();
mTargetAnimations = new ArrayList();
mResetListener = new AnimatorListenerAdapter() {
public final void onAnimationEnd(Animator animator)
{
switchToState(0/*, mWaveCenterX, mWaveCenterY*/);
}
};
mResetListenerWithPing = new AnimatorListenerAdapter() {
public final void onAnimationEnd(Animator animator)
{
ping();
switchToState(0/*, mWaveCenterX, mWaveCenterY*/);
}
};
mUpdateListener = new android.animation.ValueAnimator.AnimatorUpdateListener() {
public final void onAnimationUpdate(ValueAnimator valueanimator)
{
invalidateGlobalRegion(mHandleDrawable);
invalidate();
}
};
mTargetUpdateListener = new AnimatorListenerAdapter() {
public final void onAnimationEnd(Animator animator)
{
if(mNewTargetResources != 0)
{
internalSetTargetResources(mNewTargetResources);
mNewTargetResources = 0;
hideTargets(false);
}
mAnimatingTargets = false;
}
};
}
context.getResources();
TypedArray typedarray = context.obtainStyledAttributes(attributeset, R.styleable.MultiWaveView);
mHorizontalOffset = typedarray.getDimension(14, mHorizontalOffset);
mVerticalOffset = typedarray.getDimension(13, mVerticalOffset);
mHitRadius = typedarray.getDimension(9, mHitRadius);
mSnapMargin = typedarray.getDimension(11, mSnapMargin);
mVibrationDuration = typedarray.getInt(10, mVibrationDuration);
mFeedbackCount = typedarray.getInt(12, mFeedbackCount);
mHandleDrawable = new TargetDrawable(typedarray.getDrawable(3));
mTapRadius = mHandleDrawable.getWidth() / 2;
WindowManager windowmanager = (WindowManager)context.getSystemService("window");
DisplayMetrics displaymetrics = new DisplayMetrics();
windowmanager.getDefaultDisplay().getMetrics(displaymetrics);
mScreenWidth = displaymetrics.widthPixels;
mScreenHeight = displaymetrics.heightPixels;
float f = (0.9F * (float)Math.min(mScreenWidth, mScreenHeight)) / 2.0F;
int i;
int j;
int ai[];
int k;
if(mTargetDrawables.size() > 0)
i = ((TargetDrawable)mTargetDrawables.get(0)).getWidth() / 2;
else
i = 0;
mOuterRadius = f - (float)i;
j = (int)(2.0F * mOuterRadius);
mOuterRingDrawable = (GradientDrawable)typedarray.getDrawable(8);
((GradientDrawable)mOuterRingDrawable.mutate()).setSize(j, j);
mOuterRing = new TargetDrawable(mOuterRingDrawable);
ai = (new int[] {
4, 5, 6, 7
});
k = ai.length;
for(int l = 0; l < k; l++)
{
Drawable drawable = typedarray.getDrawable(ai[l]);
int k1 = 0;
while(k1 < mFeedbackCount)
{
ArrayList arraylist = mChevronDrawables;
TargetDrawable targetdrawable;
if(drawable != null)
targetdrawable = new TargetDrawable(drawable);
else
targetdrawable = null;
arraylist.add(targetdrawable);
k1++;
}
}
TypedValue typedvalue = new TypedValue();
if(typedarray.getValue(0, typedvalue))
internalSetTargetResources(typedvalue.resourceId);
if(mTargetDrawables == null || mTargetDrawables.size() == 0)
throw new IllegalStateException("Must specify at least one target drawable");
if(typedarray.getValue(1, typedvalue))
{
int j1 = typedvalue.resourceId;
if(j1 == 0)
throw new IllegalStateException("Must specify target descriptions");
setTargetDescriptionsResourceId(j1);
}
if(typedarray.getValue(2, typedvalue))
{
int i1 = typedvalue.resourceId;
if(i1 == 0)
throw new IllegalStateException("Must specify direction descriptions");
setDirectionDescriptionsResourceId(i1);
}
typedarray.recycle();
boolean flag;
if(mVibrationDuration > 0)
flag = true;
else
flag = false;
setVibrateEnabled(flag);
}
private void announceText(String s)
{
setContentDescription(s);
sendAccessibilityEvent(8);
setContentDescription(null);
}
private void deactivateTargets()
{
for(Iterator iterator = mTargetDrawables.iterator(); iterator.hasNext(); ((TargetDrawable)iterator.next()).setState(TargetDrawable.STATE_INACTIVE));
mActiveTarget = -1;
}
private String getTargetDescription(int i)
{
String s;
if(mTargetDescriptions != null && !mTargetDescriptions.isEmpty())
s = (String)mTargetDescriptions.get(i);
else {
mTargetDescriptions = loadDescriptions(mTargetDescriptionsResourceId);
if(mTargetDrawables.size() == mTargetDescriptions.size())
s = (String)mTargetDescriptions.get(i);
else {
android.util.Log.w("MultiWaveView", "The number of target drawables must be equal to the number of target descriptions.");
s = null;
}
}
return s;
}
private void handleMove(MotionEvent motionevent)
{
if(!mDragging)
{
trySwitchToFirstTouchState(motionevent);
} else
{
int i = -1;
int j = motionevent.getHistorySize();
int k = 0;
while(k < j + 1)
{
float f;
float f1;
float f2;
float f3;
float f4;
float f5;
float f6;
float f7;
boolean flag;
if(k < j)
f = motionevent.getHistoricalX(k);
else
f = motionevent.getX();
if(k < j)
f1 = motionevent.getHistoricalY(k);
else
f1 = motionevent.getY();
f2 = f - mWaveCenterX;
f3 = f1 - mWaveCenterY;
f4 = (float)Math.sqrt(f2 * f2 + f3 * f3);
if(f4 > mOuterRadius)
f5 = mOuterRadius / f4;
else
f5 = 1.0F;
f6 = mWaveCenterX + f2 * f5;
f7 = mWaveCenterY + f3 * f5;
if(mTargetDrawables.size() == 1)
flag = true;
else
flag = false;
if(flag)
{
if(f4 > mOuterRadius - mSnapMargin)
{
i = 0;
f = f6;
f1 = f7;
}
} else
{
float f8 = 3.402823E+038F;
float f9 = mHitRadius * mHitRadius;
for(int l = 0; l < mTargetDrawables.size(); l++)
{
TargetDrawable targetdrawable1 = (TargetDrawable)mTargetDrawables.get(l);
float f12 = f6 - targetdrawable1.getX();
float f13 = f7 - targetdrawable1.getY();
float f14 = f12 * f12 + f13 * f13;
if(targetdrawable1.isValid() && f14 < f9 && f14 < f8)
{
i = l;
f8 = f14;
}
}
f = f6;
f1 = f7;
}
if(i != -1)
{
switchToState(3);
float f10;
float f11;
TargetDrawable targetdrawable;
if(flag)
f10 = f6;
else
f10 = ((TargetDrawable)mTargetDrawables.get(i)).getX();
if(flag)
f11 = f7;
else
f11 = ((TargetDrawable)mTargetDrawables.get(i)).getY();
moveHandleTo(f10, f11);
targetdrawable = (TargetDrawable)mTargetDrawables.get(i);
int[] _tmp = TargetDrawable.STATE_FOCUSED;
targetdrawable.hasState();
} else
{
switchToState(2);
moveHandleTo(f, f1);
mHandleDrawable.setAlpha(1.0F);
}
k++;
}
invalidateGlobalRegion(mHandleDrawable);
if(mActiveTarget != i && i != -1)
{
vibrate();
if(mOnTriggerListener != null)
{
OnTriggerListener _tmp1 = mOnTriggerListener;
}
if(((AccessibilityManager)getContext().getSystemService("accessibility")).isEnabled())
announceText(getTargetDescription(i));
}
mActiveTarget = i;
}
}
private void hideChevrons()
{
Iterator iterator = mChevronDrawables.iterator();
do
{
if(!iterator.hasNext())
break;
TargetDrawable targetdrawable = (TargetDrawable)iterator.next();
if(targetdrawable != null)
targetdrawable.setAlpha(0.0F);
} while(true);
}
private void hideTargets(boolean flag)
{
if(mTargetAnimations != null && mTargetAnimations.size() > 0)
stopTargetAnimation();
mAnimatingTargets = flag;
if(flag && android.os.Build.VERSION.SDK_INT >= 11)
{
int i;
Iterator iterator1;
TargetDrawable targetdrawable2;
ArrayList arraylist1;
long l1;
Object aobj1[];
if(flag)
i = 1200;
else
i = 0;
for(iterator1 = mTargetDrawables.iterator(); iterator1.hasNext(); arraylist1.add(Tweener.to(targetdrawable2, l1, aobj1)))
{
targetdrawable2 = (TargetDrawable)iterator1.next();
targetdrawable2.setState(TargetDrawable.STATE_INACTIVE);
arraylist1 = mTargetAnimations;
l1 = i;
aobj1 = new Object[6];
aobj1[0] = "alpha";
aobj1[1] = Float.valueOf(0.0F);
aobj1[2] = "delay";
aobj1[3] = Integer.valueOf(200);
aobj1[4] = "onUpdate";
aobj1[5] = mUpdateListener;
}
ArrayList arraylist = mTargetAnimations;
TargetDrawable targetdrawable1 = mOuterRing;
long l = i;
Object aobj[] = new Object[8];
aobj[0] = "alpha";
aobj[1] = Float.valueOf(0.0F);
aobj[2] = "delay";
aobj[3] = Integer.valueOf(200);
aobj[4] = "onUpdate";
aobj[5] = mUpdateListener;
aobj[6] = "onComplete";
aobj[7] = mTargetUpdateListener;
arraylist.add(Tweener.to(targetdrawable1, l, aobj));
} else
{
TargetDrawable targetdrawable;
for(Iterator iterator = mTargetDrawables.iterator(); iterator.hasNext(); targetdrawable.setAlpha(0.0F))
{
targetdrawable = (TargetDrawable)iterator.next();
targetdrawable.setState(TargetDrawable.STATE_INACTIVE);
}
mOuterRing.setAlpha(0.0F);
}
}
private void hideUnselected(int i)
{
for(int j = 0; j < mTargetDrawables.size(); j++)
if(j != i)
((TargetDrawable)mTargetDrawables.get(j)).setAlpha(0.0F);
mOuterRing.setAlpha(0.0F);
}
private void internalSetTargetResources(int i)
{
TypedArray typedarray = getContext().getResources().obtainTypedArray(i);
int j = typedarray.length();
int k = 0;
ArrayList arraylist = new ArrayList(j);
for(int l = 0; l < j; l++)
{
Drawable drawable = typedarray.getDrawable(l);
arraylist.add(new TargetDrawable(drawable));
if(drawable != null && drawable.getIntrinsicWidth() > k)
k = drawable.getIntrinsicWidth();
}
mOuterRadius = (0.9F * (float)Math.min(getWidth(), getHeight())) / 2.0F;
int i1 = 2 * (int)mOuterRadius;
((GradientDrawable)mOuterRingDrawable.mutate()).setSize(i1, i1);
mOuterRing = new TargetDrawable(mOuterRingDrawable);
typedarray.recycle();
mTargetResourceId = i;
mTargetDrawables = arraylist;
updateTargetPositions();
}
private ArrayList loadDescriptions(int i)
{
TypedArray typedarray = getContext().getResources().obtainTypedArray(i);
int j = typedarray.length();
ArrayList arraylist = new ArrayList(j);
for(int k = 0; k < j; k++)
arraylist.add(typedarray.getString(k));
typedarray.recycle();
return arraylist;
}
private void moveHandleTo(float f, float f1)
{
mHandleDrawable.setX(f);
mHandleDrawable.setY(f1);
}
private static int resolveMeasured(int i, int j)
{
int k = android.view.View.MeasureSpec.getSize(i);
int l = k;
int mode = android.view.View.MeasureSpec.getMode(i);
if(-2147483648 == mode) {
l = Math.min(k, j);
} else if(0 == mode) {
l = j;
}
return l;
}
private void setGrabbedState(int i)
{
if(i != mGrabbedState)
{
if(i != 0)
vibrate();
mGrabbedState = i;
if(mOnTriggerListener != null)
{
OnTriggerListener _tmp = mOnTriggerListener;
int _tmp1 = mGrabbedState;
}
}
}
private void stopChevronAnimation()
{
if(android.os.Build.VERSION.SDK_INT >= 11)
{
for(Iterator iterator = mChevronAnimations.iterator(); iterator.hasNext(); ((Tweener)iterator.next()).animator.end());
mChevronAnimations.clear();
}
}
private void stopHandleAnimation()
{
if(android.os.Build.VERSION.SDK_INT >= 11 && mHandleAnimation != null)
{
mHandleAnimation.animator.end();
mHandleAnimation = null;
}
}
private void stopTargetAnimation()
{
if(android.os.Build.VERSION.SDK_INT >= 11)
{
for(Iterator iterator = mTargetAnimations.iterator(); iterator.hasNext(); ((Tweener)iterator.next()).animator.end());
mTargetAnimations.clear();
}
}
private void switchToState(int i)
{
// TODO
switch(i) {
case 0:
break;
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
default:
break;
}
}
private boolean trySwitchToFirstTouchState(MotionEvent motionevent)
{
float f = motionevent.getX();
float f1 = motionevent.getY();
float f2 = f - mWaveCenterX;
float f3 = f1 - mWaveCenterY;
float f4 = f2 * f2 + f3 * f3;
float f5;
boolean flag;
if(((AccessibilityManager)getContext().getSystemService("accessibility")).isEnabled())
f5 = 1.3F * mTapRadius;
else
f5 = mTapRadius;
if(f4 <= f5 * f5)
{
android.util.Log.v("MultiWaveView", "** Handle HIT");
switchToState(1);
moveHandleTo(f, f1);
mDragging = true;
flag = true;
} else
{
flag = false;
}
return flag;
}
private void updateTargetPositions()
{
for(int i = 0; i < mTargetDrawables.size(); i++)
{
TargetDrawable targetdrawable = (TargetDrawable)mTargetDrawables.get(i);
double d = (-6.2831853071795862D * (double)i) / (double)mTargetDrawables.size();
float f = mWaveCenterX + mOuterRadius * (float)Math.cos(d);
float f1 = mWaveCenterY + mOuterRadius * (float)Math.sin(d);
targetdrawable.setX(f);
targetdrawable.setY(f1);
}
}
private void vibrate()
{
if(mVibrator != null)
mVibrator.vibrate(mVibrationDuration);
}
protected int getSuggestedMinimumHeight()
{
int i = mOuterRing.getHeight();
int j = mTargetDrawables.size();
int k = 0;
if(j > 0)
k = ((TargetDrawable)mTargetDrawables.get(0)).getHeight() / 2;
return k + i;
}
protected int getSuggestedMinimumWidth()
{
int i = mOuterRing.getWidth();
int j = mTargetDrawables.size();
int k = 0;
if(j > 0)
k = ((TargetDrawable)mTargetDrawables.get(0)).getWidth() / 2;
return k + i;
}
final void invalidateGlobalRegion(TargetDrawable targetdrawable)
{
int i = targetdrawable.getWidth();
int j = targetdrawable.getHeight();
RectF rectf = new RectF(0.0F, 0.0F, i, j);
rectf.offset(targetdrawable.getX() - (float)(i / 2), targetdrawable.getY() - (float)(j / 2));
for(Object obj = this; ((View) (obj)).getParent() != null && (((View) (obj)).getParent() instanceof View); ((View) (obj)).invalidate((int)Math.floor(rectf.left), (int)Math.floor(rectf.top), (int)Math.ceil(rectf.right), (int)Math.ceil(rectf.bottom)))
{
obj = (View)((View) (obj)).getParent();
if(android.os.Build.VERSION.SDK_INT >= 11)
((View) (obj)).getMatrix().mapRect(rectf);
}
}
protected void onDraw(Canvas canvas)
{
mOuterRing.draw(canvas);
Iterator iterator = mTargetDrawables.iterator();
do
{
if(!iterator.hasNext())
break;
TargetDrawable targetdrawable1 = (TargetDrawable)iterator.next();
if(targetdrawable1 != null)
targetdrawable1.draw(canvas);
} while(true);
Iterator iterator1 = mChevronDrawables.iterator();
do
{
if(!iterator1.hasNext())
break;
TargetDrawable targetdrawable = (TargetDrawable)iterator1.next();
if(targetdrawable != null)
targetdrawable.draw(canvas);
} while(true);
mHandleDrawable.draw(canvas);
}
public boolean onHoverEvent(MotionEvent motionevent)
{
if(!((AccessibilityManager)getContext().getSystemService("accessibility")).isTouchExplorationEnabled()) {
return super.onHoverEvent(motionevent);
} else {
int i = motionevent.getAction();
switch(i) {
case 7:
motionevent.setAction(2);
break;
case 9:
motionevent.setAction(0);
break;
case 10:
motionevent.setAction(1);
break;
case 8:
default:
onTouchEvent(motionevent);
motionevent.setAction(i);
break;
}
return true;
}
}
protected void onLayout(boolean flag, int i, int j, int k, int l)
{
super.onLayout(flag, i, j, k, l);
int i1 = k - i;
int j1 = l - j;
float f = mHorizontalOffset + (float)(Math.max(i1, mOuterRing.getWidth()) / 2);
float f1 = mVerticalOffset + (float)(Math.max(j1, mOuterRing.getHeight()) / 2);
if(f != mWaveCenterX || f1 != mWaveCenterY)
{
if(mWaveCenterX == 0.0F && mWaveCenterY == 0.0F)
{
if(mOuterRadius == 0.0F)
mOuterRadius = 0.5F * (float)Math.sqrt(f * f + f1 * f1);
if(mHitRadius == 0.0F)
mHitRadius = (float)((TargetDrawable)mTargetDrawables.get(0)).getWidth() / 2.0F;
if(mSnapMargin == 0.0F)
mSnapMargin = TypedValue.applyDimension(1, 20F, getContext().getResources().getDisplayMetrics());
hideChevrons();
hideTargets(false);
moveHandleTo(f, f1);
}
mWaveCenterX = f;
mWaveCenterY = f1;
mOuterRing.setX(mWaveCenterX);
mOuterRing.setY(mWaveCenterY);
updateTargetPositions();
}
android.util.Log.v("MultiWaveView", (new StringBuilder("Outer Radius = ")).append(mOuterRadius).toString());
android.util.Log.v("MultiWaveView", (new StringBuilder("HitRadius = ")).append(mHitRadius).toString());
android.util.Log.v("MultiWaveView", (new StringBuilder("SnapMargin = ")).append(mSnapMargin).toString());
android.util.Log.v("MultiWaveView", (new StringBuilder("FeedbackCount = ")).append(mFeedbackCount).toString());
android.util.Log.v("MultiWaveView", (new StringBuilder("VibrationDuration = ")).append(mVibrationDuration).toString());
android.util.Log.v("MultiWaveView", (new StringBuilder("TapRadius = ")).append(mTapRadius).toString());
android.util.Log.v("MultiWaveView", (new StringBuilder("WaveCenterX = ")).append(mWaveCenterX).toString());
android.util.Log.v("MultiWaveView", (new StringBuilder("WaveCenterY = ")).append(mWaveCenterY).toString());
android.util.Log.v("MultiWaveView", (new StringBuilder("HorizontalOffset = ")).append(mHorizontalOffset).toString());
android.util.Log.v("MultiWaveView", (new StringBuilder("VerticalOffset = ")).append(mVerticalOffset).toString());
}
protected void onMeasure(int i, int j)
{
int k = getSuggestedMinimumWidth();
int l = getSuggestedMinimumHeight();
int i1 = resolveMeasured(i, k);
int j1 = resolveMeasured(j, l);
mOuterRadius = (0.9F * (float)Math.min(i1 - getPaddingLeft() - getPaddingRight(), j1 - getPaddingTop() - getPaddingBottom())) / 2.0F;
int k1 = (int)(2.0F * mOuterRadius);
((GradientDrawable)mOuterRingDrawable.mutate()).setSize(k1, k1);
getResources();
mOuterRing = new TargetDrawable(mOuterRingDrawable);
mOuterRing.setX(getWidth() / 2);
mOuterRing.setY(getHeight() / 2);
setMeasuredDimension(i1, j1);
}
public boolean onTouchEvent(MotionEvent motionevent)
{
int i = motionevent.getAction();
boolean flag = false;
switch(i) {
case 0:
if(!trySwitchToFirstTouchState(motionevent))
{
mDragging = false;
stopTargetAnimation();
ping();
}
flag = true;
break;
case 1:
handleMove(motionevent);
if(mDragging)
android.util.Log.v("MultiWaveView", "** Handle RELEASE");
motionevent.getX();
motionevent.getY();
switchToState(4);
flag = true;
break;
case 2:
handleMove(motionevent);
flag = true;
break;
case 3:
handleMove(motionevent);
flag = true;
break;
default:
break;
}
invalidate();
boolean flag1;
if(flag)
flag1 = true;
else
flag1 = super.onTouchEvent(motionevent);
return flag1;
}
public final void ping()
{
stopChevronAnimation();
if(android.os.Build.VERSION.SDK_INT >= 11)
{
float f = 0.4F * (float)mHandleDrawable.getWidth();
float f1 = 0.9F * mOuterRadius;
float af[][] = new float[4][];
float af1[] = new float[2];
af1[0] = mWaveCenterX - f;
af1[1] = mWaveCenterY;
af[0] = af1;
float af2[] = new float[2];
af2[0] = f + mWaveCenterX;
af2[1] = mWaveCenterY;
af[1] = af2;
float af3[] = new float[2];
af3[0] = mWaveCenterX;
af3[1] = mWaveCenterY - f;
af[2] = af3;
float af4[] = new float[2];
af4[0] = mWaveCenterX;
af4[1] = f + mWaveCenterY;
af[3] = af4;
float af5[][] = new float[4][];
float af6[] = new float[2];
af6[0] = mWaveCenterX - f1;
af6[1] = mWaveCenterY;
af5[0] = af6;
float af7[] = new float[2];
af7[0] = f1 + mWaveCenterX;
af7[1] = mWaveCenterY;
af5[1] = af7;
float af8[] = new float[2];
af8[0] = mWaveCenterX;
af8[1] = mWaveCenterY - f1;
af5[2] = af8;
float af9[] = new float[2];
af9[0] = mWaveCenterX;
af9[1] = f1 + mWaveCenterY;
af5[3] = af9;
mChevronAnimations.clear();
for(int i = 0; i < 4; i++)
{
for(int j = 0; j < mFeedbackCount; j++)
{
int k = j * 160;
TargetDrawable targetdrawable = (TargetDrawable)mChevronDrawables.get(j + i * mFeedbackCount);
if(targetdrawable != null)
{
ArrayList arraylist = mChevronAnimations;
Object aobj[] = new Object[16];
aobj[0] = "ease";
aobj[1] = mChevronAnimationInterpolator;
aobj[2] = "delay";
aobj[3] = Integer.valueOf(k);
aobj[4] = "x";
float af10[] = new float[2];
af10[0] = af[i][0];
af10[1] = af5[i][0];
aobj[5] = af10;
aobj[6] = "y";
float af11[] = new float[2];
af11[0] = af[i][1];
af11[1] = af5[i][1];
aobj[7] = af11;
aobj[8] = "alpha";
aobj[9] = (new float[] {
1.0F, 0.0F
});
aobj[10] = "scaleX";
aobj[11] = (new float[] {
0.5F, 2.0F
});
aobj[12] = "scaleY";
aobj[13] = (new float[] {
0.5F, 2.0F
});
aobj[14] = "onUpdate";
aobj[15] = mUpdateListener;
arraylist.add(Tweener.to(targetdrawable, 850L, aobj));
}
}
}
}
}
public final void reset(boolean flag)
{
stopChevronAnimation();
stopHandleAnimation();
stopTargetAnimation();
hideChevrons();
hideTargets(false);
mHandleDrawable.setX(mWaveCenterX);
mHandleDrawable.setY(mWaveCenterY);
mHandleDrawable.setState(TargetDrawable.STATE_INACTIVE);
mHandleDrawable.setAlpha(1.0F);
if(android.os.Build.VERSION.SDK_INT >= 11)
Tweener.reset();
}
public void setDirectionDescriptionsResourceId(int i)
{
mDirectionDescriptionsResourceId = i;
if(mDirectionDescriptions != null)
mDirectionDescriptions.clear();
}
public void setOnTriggerListener(OnTriggerListener ontriggerlistener)
{
mOnTriggerListener = ontriggerlistener;
}
public void setTargetDescriptionsResourceId(int i)
{
mTargetDescriptionsResourceId = i;
if(mTargetDescriptions != null)
mTargetDescriptions.clear();
}
public void setTargetResources(int i)
{
if(mAnimatingTargets)
mNewTargetResources = i;
else
internalSetTargetResources(i);
}
public void setVibrateEnabled(boolean flag)
{
if(!flag || mVibrator != null) {
mVibrator = null;
} else {
mVibrator = (Vibrator)getContext().getSystemService("vibrator");
}
}
public static interface OnTriggerListener {
public abstract void onTrigger(int i);
}
}