I have 12 ImageButtons settings in a 3x4 grid using AbsoluteLayout. When the user presses the image button, it is enlarged to fill the screen, hold it, and then shrink to its original location.
The animation works, except that when the button is reduced, it sometimes leaves the lines behind. (I added the images below).
Is there a better way to achieve this animation? What can I do to prevent drawing errors that I get?
EDIT : Also, the lines disappear as soon as the compression animation ends, they are present only during the animation.
Here is my UDATED animation code
private void animateCard(final CardButton c){ this.isAnimating = true; CardPickerActivity.this.soundManager.playSound(c.name); Util.logD("Card:" + c.name + " clicked!"); final int growDuration = 750; final int holdDuration = 500; final int shrinkDuration = 500; c.bringToFront(); AnimationSet asGrow = new AnimationSet(true); float newScale = 2.0f; float newX = (CardPickerActivity.this.wDesk/2.0f - CardPickerActivity.this.cardSize/2.0f*newScale - c.getLeft())/newScale; float newY = (CardPickerActivity.this.hDesk/2.0f - CardPickerActivity.this.cardSize/2.0f*newScale - c.getTop() )/newScale; TranslateAnimation taG = new TranslateAnimation(0.0f, newX , 0.0f, newY); ScaleAnimation saG = new ScaleAnimation( 1.0f, newScale, 1.0f, newScale); taG.setRepeatCount(1); saG.setRepeatCount(1); taG.setRepeatMode(Animation.REVERSE); saG.setRepeatMode(Animation.REVERSE); asGrow.addAnimation(taG); asGrow.addAnimation(saG); asGrow.setDuration(growDuration); c.startAnimation(asGrow); }
Here is the XML layout for the activity, ignore layout_x and layout_y, which I set later depending on the device screen:
<?xml version="1.0" encoding="utf-8"?> <AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/cardLayout" android:layout_width="fill_parent" android:layout_height="fill_parent"> <com.myProject.CardButton android:id="@+id/btn1" android:text="1" android:layout_x="0px" android:layout_y="0px" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <com.myProject.CardButton android:id="@+id/btn2" android:text="2" android:layout_x="10px" android:layout_y="10px" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <com.myProject.CardButton android:id="@+id/btn3" android:text="3" android:layout_x="20px" android:layout_y="20px" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <com.myProject.CardButton android:id="@+id/btn4" android:text="4" android:layout_x="30px" android:layout_y="30px" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <com.myProject.CardButton android:id="@+id/btn5" android:text="5" android:layout_x="40px" android:layout_y="40px" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <com.myProject.CardButton android:id="@+id/btn6" android:text="6" android:layout_x="40px" android:layout_y="40px" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <com.myProject.CardButton android:id="@+id/btn7" android:text="7" android:layout_x="40px" android:layout_y="40px" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <com.myProject.CardButton android:id="@+id/btn8" android:text="8" android:layout_x="40px" android:layout_y="40px" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <com.myProject.CardButton android:id="@+id/btn9" android:text="9" android:layout_x="40px" android:layout_y="40px" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <com.myProject.CardButton android:id="@+id/btn10" android:text="10" android:layout_x="40px" android:layout_y="40px" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <com.myProject.CardButton android:id="@+id/btn11" android:text="11" android:layout_x="40px" android:layout_y="40px" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <com.myProject.CardButton android:id="@+id/btn12" android:text="12" android:layout_x="40px" android:layout_y="40px" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </AbsoluteLayout>
Here is the CardButton class, its essentially an ImageButton with a few more member variables
public class CardButton extends ImageButton { public CardButton(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public CardButton(Context context, AttributeSet attrs) { super(context, attrs); } public CardButton(Context context) { super(context); } public String name; public Bitmap image; public int soundRes; public int imageRes; public String customImagePath; public String customSoundPath; }


