Android анимация - PullRequest
       1

Android анимация

2 голосов
/ 02 августа 2011

Я написал игру suduko для android и хочу анимировать плитку, если пользователь введет неправильный номер.Но я не понимаю, как это сделать?Проблема в том, что у меня есть один большой прямоугольник с экраном отверстия и я делю этот прямоугольник на плитки, просто рисуясь линиями.И теперь я не могу понять, как анимировать плитки.

Хоп, я могу объяснить мою проблему.

Извините за плохой английский, и спасибо за ответы)

Ответы [ 3 ]

7 голосов
/ 03 августа 2011

Вы не должны рисовать свою доску таким образом.Я бы порекомендовал реализовать одну плитку в качестве подкласса 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>

Подробнее об анимации здесь .Чтобы создать свою собственную анимацию, посмотрите здесь здесь .

Надеюсь, это поможет вам.

2 голосов
/ 02 августа 2011

Если вы используете стандартные представления, вы можете просмотреть анимацию анимации , т.е. определить набор анимаций, загрузить их из ресурсов и прикрепить их к вашим представлениям / запустить анимацию.

Взгляните на пример прыжка с корабля здесь.

Если вы делаете нестандартное рисование, боюсь, вам также нужно сделать нестандартную анимацию.

1 голос
/ 09 июня 2013

Работа с анимацией на чем угодно до Honeycomb - это настоящая боль. Я рекомендую загрузить библиотеку NineOldAndroids (http://nineoldandroids.com/) и использовать ее в качестве импорта), чтобы вы могли использовать Honeycomb API анимации во всех версиях Android (даже до 1.0).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...