2011-08-02 8 views
2

안드로이드 용 suduko 게임을 썼고, 사용자가 틀린 번호를 넣으면 타일을 움직이기 원합니다. 하지만 어떻게해야하는지 모르겠습니다. 문제는 홀 스크린을 커버하는 하나의 커다란 직사각형을 가지고 있고,이 직사각형을 타일로 단순히 그려 낸다는 것입니다. 이제 타일 애니메이션 방법을 이해할 수 없습니다.안드로이드 애니메이션

호프 내 문제를 설명 할 수 있습니다. 당신이 표준 뷰를 사용하는 경우 답변 나쁜 영어 및 thaks)

답변

2

죄송

, 당신은, 애니메이션의 세트를 정의 즉, tween animation 들여다 자원에서 그들을로드하고 귀하의 의견/시작 부분에 이러한 사항을 추가 할 수 애니메이션.

여기에서 the spaceship jump example을 확인하십시오.

사용자 정의 도면을 작성하는 경우 사용자 정의 애니메이션을 수행해야합니다.

+1

맞춤 애니메이션을 작성하려고하지만 문제를 해결할 수 없습니다. 구멍 화면을 덮는 하나의 rect가 있는데 해당 rect의 한 부분 만 애니메이션으로 만들 수 없습니다 ( –

+0

http://www.vogella.com/tutorials/AndroidAnimation/article.html 따라 가름 – hitesh141

7

이렇게 보드를 그릴 필요가 없습니다. 한 타일을 View의 하위 클래스로 구현하여 각 타일을 개별적으로 애니메이션으로 만들 것을 권장합니다.

애니메이션이 어떻게 작동하는지 보려면이 시도 :

타일 클래스

public class Tile extends View { 

private RectF mRect; 
private Paint mPaint; 

public Tile(Context context) { 
     super(context); 
     init(); 
} 

public Tile(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     init(); 
} 

public Tile(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     init(); 
} 

private void init(){ 
     mRect = new RectF(0, 0, 100, 100); 
     mPaint = new Paint(); 
     mPaint.setStyle(Paint.Style.STROKE); 
     mPaint.setColor(Color.BLUE); 
} 

    @Override 
    protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 
     canvas.drawRect(mRect, mPaint); 
    } 
} 

주요 활동

public class MainActivity extends Activity implements OnClickListener { 

private Tile mTile; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     LinearLayout layout = new LinearLayout(this); 
     layout.setBackgroundColor(Color.WHITE); 
     layout.setPadding(50, 50, 50, 50); 

     Button btn = new Button(this); 
     btn.setText("Click Me"); 
     btn.setOnClickListener(this); 
     layout.addView(btn); 

     mTile = new Tile(this); 
     layout.addView(mTile); 

     setContentView(layout); 
    } 

@Override 
public void onClick(View v) { 
    Animation scaleAnim = AnimationUtils.loadAnimation(this, R.anim.scale); 
    mTile.startAnimation(scaleAnim);  
} 
} 

애니메이션 정의 (이 파일은 scale.xml을 지정해야하고 배치 된 어 디렉토리 /res/anim)

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
android:shareInterpolator="false"> 
    <scale 
     android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
     android:fromXScale="1.0" 
     android:toXScale="2.0" 
     android:fromYScale="1.0" 
     android:toYScale="2.0" 
     android:fillAfter="false" 
     android:repeatCount="1" 
     android:repeatMode="reverse" 
     android:duration="700" /> 
</set> 

애니메이션 here에 대해 자세히 알아보십시오. 자신 만의 애니메이션을 만들려면 여기를보십시오 here.

희망은 계속됩니다.

+0

답변 해 주셔서 감사합니다) –

+0

Animator/AnimatorSet 사용, 애니메이션 클래스는 레거시 코드입니다. – Lunatikul

1

허니컴 이전의 애니메이션 작업은 허풍입니다. NineOldAndroids 라이브러리 (http://nineoldandroids.com/)를 다운로드하고 가져 오기로 사용하면 모든 버전의 Android (최대 1.0)에서 Honeycomb 애니메이션 API를 사용할 수 있습니다.

관련 문제